class_docstr: The TabPy state object that stores attributes
  about this TabPy and perform GET/SET on these
  attributes.
  
  Attributes:
      - name
      - description
      - endpoints (name, description, docstring, version, target)
      - revision number
  
  When the state object is initialized, the state is saved as a ConfigParser.
  There is a config to any attribute.
class_docstr_tok: ["The","TabPy","state","object","that","stores","attributes","about","this","TabPy","and","perform","GET\/SET","on","these","attributes",".","Attributes",":","-","name","-","description","-","endpoints","(","name",",","description",",","docstring",",","version",",","target",")","-","revision","number","When","the","state","object","is","initialized",",","the","state","is","saved","as","a","ConfigParser",".","There","is","a","config","to","any","attribute","."]
code: def _get_config_value(
      self,
      section_name,
      option_name,
      optional=False,
      default_value=None,
  ):
      logger.log(
          logging.DEBUG,
          f"Loading option '{option_name}' from section [{section_name}]...",
      )
  
      if not self.config:
          msg = "State configuration not yet loaded."
          logging.log(msg)
          raise ValueError(msg)
  
      res = None
      if not option_name:
          res = self.config.options(section_name)
      elif self.config.has_option(section_name, option_name):
          res = self.config.get(section_name, option_name)
      elif optional:
          res = default_value
      else:
          raise ValueError(
              f"Cannot find option name {option_name} "
              f"under section {section_name}"
          )
  
      logger.log(logging.DEBUG, f"Returning value '{res}'")
      return res
  
imports: import json
  import logging
  from tabpy.tabpy_server.management.util import write_state_config
  from threading import Lock
  from time import time
label_desc: Use image node_id 30 for calling the TabPyState obj's underlying member method code with example usage: obj._get_config_value(section_name, option_name, optional, default_value) and returns: res