[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