[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