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","."]
docstr: Set the local ConfigParser manually.
  This new ConfigParser will be used as current state.
docstr_tok: ["Set","the","local","ConfigParser","manually",".","This","new","ConfigParser","will","be","used","as","current","state","."]
code: def set_config(
      self, config, logger=logging.getLogger(__name__), _update=True
  ):
      """
      Set the local ConfigParser manually.
      This new ConfigParser will be used as current state.
      """
      if not isinstance(config, ConfigParser):
          raise ValueError("Invalid config")
      self.config = config
      if _update:
          self._write_state(logger)
  
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 2 for calling the TabPyState obj's underlying member method code with example usage: obj.set_config(config, logger, _update) without return types