[Checkins] SVN: z3c.dependencychecker/trunk/ Zcml files are also searched for 'component=' patterns as that can be used
Reinout van Rees
reinout at vanrees.org
Thu Dec 24 06:18:05 EST 2009
Log message for revision 107052:
Zcml files are also searched for 'component=' patterns as that can be used
by securitypolicy declarations.
Changed:
U z3c.dependencychecker/trunk/CHANGES.txt
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/dependencychecker.py
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/dependencychecker.txt
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/setup.py_in
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/configure.zcml_in
U z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1.egg-info_in/requires.txt
-=-
Modified: z3c.dependencychecker/trunk/CHANGES.txt
===================================================================
--- z3c.dependencychecker/trunk/CHANGES.txt 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/CHANGES.txt 2009-12-24 11:18:05 UTC (rev 107052)
@@ -4,6 +4,9 @@
1.1 (unreleased)
----------------
+- Zcml files are also searched for 'component=' patterns as that can be used
+ by securitypolicy declarations.
+
- Dependencychecker is now case insensitive as pypi is too.
- Using optparse for parsing commandline now. Added --help and --version.
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/dependencychecker.py
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/dependencychecker.py 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/dependencychecker.py 2009-12-24 11:18:05 UTC (rev 107052)
@@ -33,6 +33,15 @@
['\"] # Single or double quote.
""", re.VERBOSE)
+ZCML_COMPONENT_PATTERN = re.compile(r"""
+\s # Whitespace.
+component= #
+['\"] # Single or double quote.
+(?P<import> # Start of 'import' variable.
+\S+ # Non-whitespace string.
+) # End of 'import' variable.
+['\"] # Single or double quote.
+""", re.VERBOSE)
DOCTEST_IMPORT = re.compile(r"""
^ # From start of line
@@ -223,6 +232,9 @@
found = [module for module in
re.findall(ZCML_PACKAGE_PATTERN, contents)
if not module.startswith('.')]
+ found += [module for module in
+ re.findall(ZCML_COMPONENT_PATTERN, contents)
+ if not module.startswith('.')]
if 'test' in zcml:
# ftesting.zcml, mostly.
test_modules += found
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/dependencychecker.txt
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/dependencychecker.txt 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/dependencychecker.txt 2009-12-24 11:18:05 UTC (rev 107052)
@@ -57,6 +57,13 @@
>>> dependencychecker.filter_missing(imports, required)
['some.thing']
+Watch out with similar names:
+
+ >>> imports = ['zope.app.securitypolicy']
+ >>> required = ['zope.app.security']
+ >>> dependencychecker.filter_missing(imports, required)
+ ['zope.app.securitypolicy']
+
An oft-occurring example is a an import like ``from zope import interface``,
and a requirement for ``zope.interface``. zope is picked up by the
importchecker mechanism (not zope.interface!), so we get the following problem:
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/setup.py_in
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/setup.py_in 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/setup.py_in 2009-12-24 11:18:05 UTC (rev 107052)
@@ -24,6 +24,7 @@
'Needed.By.Test',
# ^^^ Note: capitalized to test case-insensitive pypi
'needed.by.zcml',
+ 'also.needed.by.zcml',
],
extras_require = {
'test': [
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/configure.zcml_in
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/configure.zcml_in 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1/configure.zcml_in 2009-12-24 11:18:05 UTC (rev 107052)
@@ -1,5 +1,8 @@
<zcml>
<include package="needed.by.zcml"/>
+ <securityPolicy
+ component="also.needed.by.zcml.ZopeSecurityPolicy"
+ />
</zcml>
\ No newline at end of file
Modified: z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1.egg-info_in/requires.txt
===================================================================
--- z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1.egg-info_in/requires.txt 2009-12-24 10:19:55 UTC (rev 107051)
+++ z3c.dependencychecker/trunk/src/z3c/dependencychecker/tests/sample1/src/sample1.egg-info_in/requires.txt 2009-12-24 11:18:05 UTC (rev 107052)
@@ -3,6 +3,7 @@
unneeded.req
Needed.By.Test
needed.by.zcml
+also.needed.by.zcml
[test]
my.package
More information about the checkins
mailing list