def _fullyQualifiedName(obj):
 try:
  name = obj.__qualname__
 except AttributeError:
  name = obj.__name__
 if (inspect.isclass(obj) or inspect.isfunction(obj)):
  moduleName = obj.__module__
  return ('%s.%s' % (moduleName, name))
 elif inspect.ismethod(obj):
  try:
   cls = obj.im_class
  except AttributeError:
   return ('%s.%s' % (obj.__module__, obj.__qualname__))
  else:
   className = _fullyQualifiedName(cls)
   return ('%s.%s' % (className, name))
 return name

def _fullyQualifiedName ( obj ) : try : name = obj . __qualname__ except AttributeError : name = obj . __name__ if ( inspect . isclass ( obj ) or inspect . isfunction ( obj ) ) : moduleName = obj . __module__ return ( '%s.%s' % ( moduleName , name ) ) elif inspect . ismethod ( obj ) : try : cls = obj . im_class except AttributeError : return ( '%s.%s' % ( obj . __module__ , obj . __qualname__ ) ) else : className = _fullyQualifiedName ( cls ) return ( '%s.%s' % ( className , name ) ) return name
return the fully qualified name of a module .