[Checkins] SVN: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_ create namespace packages (or not) automatically

Christophe Combelles ccomb at free.fr
Sun Mar 28 21:41:24 EDT 2010


Log message for revision 110275:
  create namespace packages (or not) automatically
  

Changed:
  U   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl
  U   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/setup.py_tmpl
  A   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/
  U   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/ftesting.zcml_tmpl
  U   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/tests.py_tmpl
  D   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+namespace_package+/+main_package+/
  U   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py
  D   bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_simple/

-=-
Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl	2010-03-29 01:27:47 UTC (rev 110274)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl	2010-03-29 01:41:23 UTC (rev 110275)
@@ -44,6 +44,6 @@
   <include package="zope.traversing.browser" />
   <include package="zope.app.pagetemplate" />
 
-  <include package="${namespace_package}.${main_package}" />
+  <include package="${'.'.join(ns_packages)}${ns_packages and '.' or None}${main_package}" />
 
 </configure>

Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/setup.py_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/setup.py_tmpl	2010-03-29 01:27:47 UTC (rev 110274)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/setup.py_tmpl	2010-03-29 01:41:23 UTC (rev 110275)
@@ -15,7 +15,7 @@
       license=${repr(license_name)|empty},
       package_dir={'': 'src'},
       packages=find_packages('src'),
-      namespace_packages=[${repr(namespace_package)},],
+      ${ns_packages and 'namespace_packages=%s,' % repr(['.'.join(ns_packages[:i+1]) for i in range(len(ns_packages))]) or None}
       include_package_data=True,
       zip_safe=${repr(bool(zip_safe))|False},
       install_requires=['setuptools',
@@ -57,9 +57,9 @@
                         ],
       entry_points = """
       [paste.app_factory]
-      main = ${namespace_package}.${main_package}.startup:application_factory
+      main = ${'.'.join(ns_packages)}${ns_packages and '.' or None}${main_package}.startup:application_factory
 
       [paste.global_paster_command]
-      shell = ${namespace_package}.${main_package}.debug:Shell
+      shell = ${'.'.join(ns_packages)}${ns_packages and '.' or None}${main_package}.debug:Shell
       """,
       )

Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/ftesting.zcml_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+namespace_package+/+main_package+/tests/ftesting.zcml_tmpl	2010-03-29 01:27:47 UTC (rev 110274)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/ftesting.zcml_tmpl	2010-03-29 01:41:23 UTC (rev 110275)
@@ -48,6 +48,6 @@
   <grantAll role="zope.Manager" />
   <grant role="zope.Manager" principal="zope.mgr" />
 
-  <include package="${namespace_package}.${main_package}" />
+  <include package="${'.'.join(ns_packages)}${ns_packages and '.' or None}${main_package}" />
 
 </configure>

Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/tests.py_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+namespace_package+/+main_package+/tests/tests.py_tmpl	2010-03-29 01:27:47 UTC (rev 110274)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/tests.py_tmpl	2010-03-29 01:41:23 UTC (rev 110275)
@@ -1,3 +1,4 @@
 import z3c.testsetup
 
-test_suite = z3c.testsetup.register_all_tests('${namespace_package}.${main_package}')
+test_suite =
+z3c.testsetup.register_all_tests('${'.'.join(ns_packages)}${ns_packages and '.' or None}${main_package}')

Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py	2010-03-29 01:27:47 UTC (rev 110274)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py	2010-03-29 01:41:23 UTC (rev 110275)
@@ -11,7 +11,7 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-import sys
+import os, sys, shutil
 from paste.script import templates
 from paste.script.templates import var
 
@@ -22,10 +22,10 @@
     summary = "A BlueBream project, base template"
 
     vars = [
-        var('namespace_package', 'Namespace package name'),
-        var('main_package',
-            'Main package name (under the namespace)',
-            default='main'),
+#        var('namespace_package', 'Namespace package name'),
+#        var('main_package',
+#            'Main package name (under the namespace)',
+#            default='main'),
         var('interpreter',
             'Name of custom Python interpreter',
             default='breampy'),
@@ -43,7 +43,6 @@
         ]
 
     def check_vars(self, vars, cmd):
-
         if vars['package'] in ('bluebream', 'bream', 'zope'):
             print
             print "Error: The chosen project name results in an invalid " \
@@ -51,10 +50,36 @@
             print "Please choose a different project name."
             sys.exit(1)
 
+        # detect namespaces in the project name
+        vars['main_package'] = vars['project'].split('.')[-1]
+        self.ns_split = vars['project'].split('.')
+        vars['ns_packages'] = self.ns_split[:-1]
+        vars['packages'] = vars['project']
+
         for var in self.vars:
             if var.name == 'namespace_package':
                 var.default = vars['package']
 
-        vars = templates.Template.check_vars(self, vars, cmd)
+        self._vars = vars = templates.Template.check_vars(self, vars, cmd)
 
         return vars
+
+    def write_files(self, command, output_dir, vars):
+        """Add namespace packages and nest the main package in them"""
+        templates.Template.write_files(self, command, output_dir, vars)
+        if len(self.ns_split) > 1:
+            target_dir = os.path.join(output_dir, 'src',
+                                      os.path.join(*self.ns_split[:-1]))
+            os.makedirs(target_dir)
+            ns_declar = "__import__('pkg_resources').declare_namespace(__name__)"
+            for i, namespace_package in enumerate(self.ns_split[:-1]):
+                init_file = os.path.join(output_dir, 'src',
+                                         os.path.join(*self.ns_split[:i+1]),
+                                         '__init__.py')
+                open(init_file, 'w').write(ns_declar)
+            shutil.move(os.path.join(output_dir, 'src', vars['main_package']),
+                        target_dir)
+
+
+
+



More information about the checkins mailing list