class_docstr: Asynchronous version of BaseManager. Currently, this type doesn't register
  any shared object types like SyncManager, it is more meant to be used
  as a base class for
  [customized managers](https://docs.python.org/3.6/library/multiprocessing.html#customized-managers).
  
  The API of the class is the same as `SyncManager` and
  [multiprocessing.managers.BaseManager](https://docs.python.org/3.6/library/multiprocessing.html#multiprocessing.managers.BaseManager)
  
  Example usage:
  
  ```python
  from fiber.managers import AsyncManager
  
  class Calculator():
      def add(self, a, b):
          return a + b
  
  class MyManager(AsyncManager):
      pass
  
  MyManager.register("Calculator", Calculator)
  manager = MyManager()
  manager.start()
  
  calc = manager.Calculator()
  res = calc.add(10, 32)
  print(type(res)) # fiber.managers.AsyncProxyResult
  print(res.get()) # 42
  ```
class_docstr_tok: ["Asynchronous","version","of","BaseManager",".","Currently",",","this","type","does","n't","register","any","shared","object","types","like","SyncManager",",","it","is","more","meant","to","be","used","as","a","base","class","for","[","customized","managers","]","(","https",":","\/\/docs.python.org\/3.6\/library\/multiprocessing.html","#","customized-managers",")",".","The","API","of","the","class","is","the","same","as","`","SyncManager","`","and","[","multiprocessing.managers.BaseManager","]","(","https",":","\/\/docs.python.org\/3.6\/library\/multiprocessing.html","#","multiprocessing.managers.BaseManager",")","Example","usage",":","``","`","python","from","fiber.managers","import","AsyncManager","class","Calculator","(",")",":","def","add","(","self",",","a",",","b",")",":","return","a","+","b","class","MyManager","(","AsyncManager",")",":","pass","MyManager.register","(","``","Calculator","''",",","Calculator",")","manager","=","MyManager","(",")","manager.start","(",")","calc","=","manager.Calculator","(",")","res","=","calc.add","(","10",",","32",")","print","(","type","(","res",")",")","#","fiber.managers.AsyncProxyResult","print","(","res.get","(",")",")","#","42","``","`"]
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 = AsyncAutoProxy
  
      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)", args, kwds)
              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 1 for calling the AsyncManager obj's underlying member method code with example usage: obj.register(cls, typeid, callable, proxytype, exposed, method_to_typeid, create_method) and returns: proxy