[Checkins] SVN: z3c.dependencychecker/trunk/ Better dependency reporing for 'from zope import interface'-style imports
Reinout van Rees
reinout at vanrees.org
Thu Dec 10 07:07:09 EST 2009
Log message for revision 106380:
Better dependency reporing for 'from zope import interface'-style imports
Changed:
U z3c.dependencychecker/trunk/CHANGES.txt
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/USAGE.txt
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/importchecker.py
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/fromimports.py_in
-=-
Modified: z3c.dependencychecker/trunk/CHANGES.txt
===================================================================
--- z3c.dependencychecker/trunk/CHANGES.txt 2009-12-10 11:53:32 UTC (rev 106379)
+++ z3c.dependencychecker/trunk/CHANGES.txt 2009-12-10 12:07:09 UTC (rev 106380)
@@ -4,7 +4,9 @@
0.4 (unreleased)
----------------
-- Nothing changed yet.
+- Supporting "from zope import interface"-style imports where you really want
+ to be told you're missing an "zope.interface" dependency instead of just
+ "zope" (which is just a namespace package).
0.3 (2009-12-08)
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/USAGE.txt
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/USAGE.txt 2009-12-10 11:53:32 UTC (rev 106379)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/USAGE.txt 2009-12-10 12:07:09 UTC (rev 106380)
@@ -45,7 +45,8 @@
Missing requirements
====================
missing.req
- zope
+ something.origname
+ zope.interface
<BLANKLINE>
Missing test requirements
=========================
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/importchecker.py
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/importchecker.py 2009-12-10 11:53:32 UTC (rev 106379)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/importchecker.py 2009-12-10 12:07:09 UTC (rev 106380)
@@ -86,7 +86,8 @@
name = as_name
names_dict[name] = orig_name
self._map.setdefault(module_name, {'names': names_dict,
- 'lineno': stmt.lineno})
+ 'lineno': stmt.lineno,
+ 'fromimport': True})
def visitImport(self, stmt):
"""Will be called for 'import foo.bar' statements
@@ -97,7 +98,8 @@
else:
name = as_name
self._map.setdefault(orig_name, {'names': {name: orig_name},
- 'lineno': stmt.lineno})
+ 'lineno': stmt.lineno,
+ 'fromimport': False})
def getMap(self):
return self._map
@@ -129,7 +131,22 @@
def getImportedModuleNames(self):
"""Return the names of imported modules.
"""
- return self._map.keys()
+ result = []
+ for modulename in self._map.keys():
+ if not self._map[modulename]['fromimport']:
+ # Regular import
+ result.append(modulename)
+ else:
+ # from xyz import abc, return xyz.abc to help with detecting
+ # "from zope import interface"-style imports where
+ # zope.inteface is the real module and zope just a namespace
+ # package. This is for the dependencychecker, btw.
+ if len(self._map[modulename]['names'].values()) == 0:
+ # from xyz import *
+ result.append(modulename)
+ for submodule in self._map[modulename]['names'].values():
+ result.append('.'.join([modulename, submodule]))
+ return result
def getImportNames(self):
"""Return the names of imports; add dottednames as well.
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/fromimports.py_in
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/fromimports.py_in 2009-12-10 11:53:32 UTC (rev 106379)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/fromimports.py_in 2009-12-10 12:07:09 UTC (rev 106380)
@@ -1,7 +1,8 @@
"""Test the from imports"""
from zope import interface
+from something import origname as newname
-
# Use it to prevent "unused!" warnings
-interface
\ No newline at end of file
+interface
+newname
\ No newline at end of file
More information about the checkins
mailing list