[Checkins] SVN: GenericSetup/trunk/utils.py - remove private submodules from dotted names

Yvo Schubbe y.2007- at wcm-solutions.de
Mon Aug 6 03:29:20 EDT 2007


Log message for revision 78619:
  - remove private submodules from dotted names

Changed:
  U   GenericSetup/trunk/utils.py

-=-
Modified: GenericSetup/trunk/utils.py
===================================================================
--- GenericSetup/trunk/utils.py	2007-08-06 07:28:55 UTC (rev 78618)
+++ GenericSetup/trunk/utils.py	2007-08-06 07:29:20 UTC (rev 78619)
@@ -64,10 +64,34 @@
         return str( named )
 
     try:
-        return '%s.%s' % ( named.__module__, named.__name__ )
+        dotted = '%s.%s' % (named.__module__, named.__name__)
     except AttributeError:
-        raise ValueError, 'Cannot compute dotted name: %s' % named
+        raise ValueError('Cannot compute dotted name: %s' % named)
 
+    # remove leading underscore names if possible
+
+    # Step 1: check if there is a short version
+    short_dotted = '.'.join([ n for n in dotted.split('.')
+                              if not n.startswith('_') ])
+    if short_dotted == dotted:
+        return dotted
+
+    # Step 2: check if short version can be resolved
+    try:
+        short_resolved = _resolveDottedName(short_dotted)
+    except (ValueError, ImportError):
+        return dotted
+
+    # Step 3: check if long version resolves to the same object
+    try:
+        resolved = _resolveDottedName(dotted)
+    except (ValueError, ImportError):
+        raise ValueError('Cannot compute dotted name: %s' % named)
+    if short_resolved is not resolved:
+        return dotted
+
+    return short_dotted
+
 def _resolveDottedName( dotted ):
 
     __traceback_info__ = dotted



More information about the Checkins mailing list