class_docstr: Static class that resolves shape names to their corresponding
  shape drawer classes.
  
  Classes that are derived from L{ShapeDrawer} in this module are
  automatically registered by L{ShapeDrawerDirectory} when the module
  is loaded for the first time.
class_docstr_tok: ["Static","class","that","resolves","shape","names","to","their","corresponding","shape","drawer","classes",".","Classes","that","are","derived","from","L","{","ShapeDrawer","}","in","this","module","are","automatically","registered","by","L","{","ShapeDrawerDirectory","}","when","the","module","is","loaded","for","the","first","time","."]
docstr: Registers all L{ShapeDrawer} classes in the given namespace
  
  @param namespace: a Python dict mapping names to Python objects.
docstr_tok: ["Registers","all","L","{","ShapeDrawer","}","classes","in","the","given","namespace","@","param","namespace",":","a","Python","dict","mapping","names","to","Python","objects","."]
code: def register_namespace(cls, namespace):
      """Registers all L{ShapeDrawer} classes in the given namespace
  
      @param namespace: a Python dict mapping names to Python objects.
      """
      for name, value in namespace.items():
          if name.startswith("__"):
              continue
          if isinstance(value, type):
              if (
                  issubclass(value, ShapeDrawer)
                  and value != ShapeDrawer
              ):
                  cls.register(value)
  
imports: from abc import ABCMeta, abstractmethod
  from math import atan2, copysign, cos, pi, sin
  import sys
  from igraph.drawing.matplotlib.utils import find_matplotlib
label_desc: Use image node_id 2 for calling the ShapeDrawerDirectory obj's underlying member method code with example usage: obj.register_namespace(cls, namespace) without return types