class_docstr: A Base class for people to create
  [customized managers](https://docs.python.org/3.6/library/multiprocessing.html#customized-managers).
  Equivalent to multiprocessing.managers.BaseManager but can work on a
  computer cluster.
  
  The API of this class is the same as
  [multiprocessing.managers.BaseManager](https://docs.python.org/3.6/library/multiprocessing.html#multiprocessing.managers.BaseManager)
class_docstr_tok: ["A","Base","class","for","people","to","create","[","customized","managers","]","(","https",":","\/\/docs.python.org\/3.6\/library\/multiprocessing.html","#","customized-managers",")",".","Equivalent","to","multiprocessing.managers.BaseManager","but","can","work","on","a","computer","cluster",".","The","API","of","this","class","is","the","same","as","[","multiprocessing.managers.BaseManager","]","(","https",":","\/\/docs.python.org\/3.6\/library\/multiprocessing.html","#","multiprocessing.managers.BaseManager",")"]
docstr: Register a typeid with the manager type.
docstr_tok: ["Register","a","typeid","with","the","manager","type","."]
code: def register(
      cls,
      typeid,
      callable=None,
      proxytype=None,
      exposed=None,
      method_to_typeid=None,
      create_method=True,
  ):
      """Register a typeid with the manager type."""
      if "_registry" not in cls.__dict__:
          cls._registry = cls._registry.copy()
  
      if proxytype is None:
          proxytype = AutoProxy
  
      exposed = exposed or getattr(proxytype, "_exposed_", None)
  
      method_to_typeid = method_to_typeid or getattr(
          proxytype, "_method_to_typeid_", None
      )
  
      if method_to_typeid:
          for key, value in list(method_to_typeid.items()):
              assert type(key) is str, "%r is not a string" % key
              assert type(value) is str, "%r is not a string" % value
  
      cls._registry[typeid] = (
          callable,
          exposed,
          method_to_typeid,
          proxytype,
      )
  
      if create_method:
  
          def temp(self, *args, **kwds):
              logger.debug(
                  "calling self._create(%s,%s), self=%s",
                  args,
                  kwds,
                  self,
              )
              token, exp = self._create(typeid, *args, **kwds)
              proxy = proxytype(
                  token,
                  self._serializer,
                  manager=self,
                  authkey=self._authkey,
                  exposed=exp,
              )
              conn = self._Client(token.address, authkey=self._authkey)
              dispatch(conn, None, "decref", (token.id,))
              return proxy
  
          temp.__name__ = typeid
          setattr(cls, typeid, temp)
  
imports: import logging
  import multiprocessing
  import multiprocessing.util
  import queue
  import threading
  from multiprocessing.connection import SocketListener, _validate_family, address_type
  from multiprocessing.context import get_spawning_popen
  from multiprocessing.managers import Array, DictProxy, ListProxy, Namespace, RebuildProxy, State, Value, dispatch
  from multiprocessing.process import AuthenticationString
  import fiber.util
  import fiber.queues
  from fiber import process
  from fiber.backend import get_backend
label_desc: Use image node_id 5 for calling the BaseManager obj's underlying member method code with example usage: obj.register(cls, typeid, callable, proxytype, exposed, method_to_typeid, create_method) and returns: proxy