[Checkins] SVN: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/ cleaning the code again, and allowing to choose a package name different from
Christophe Combelles
ccomb at free.fr
Wed Mar 31 19:57:14 EDT 2010
Log message for revision 110382:
cleaning the code again, and allowing to choose a package name different from
the autogenerated one
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
D bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/
A bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+ns_prefix++package+.egg-info/
A bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/
U bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/ftesting.zcml_tmpl
U bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/tests.py_tmpl
D bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+.egg-info/
U bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py
U bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/tests/bluebream.txt
-=-
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-31 23:50:44 UTC (rev 110381)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/etc/site.zcml_tmpl 2010-03-31 23:57:13 UTC (rev 110382)
@@ -44,6 +44,6 @@
<include package="zope.traversing.browser" />
<include package="zope.app.pagetemplate" />
- <include package="${ns_prefix}${main_package}" />
+ <include package="${ns_prefix}${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-31 23:50:44 UTC (rev 110381)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/setup.py_tmpl 2010-03-31 23:57:13 UTC (rev 110382)
@@ -57,9 +57,9 @@
],
entry_points = """
[paste.app_factory]
- main = ${ns_prefix}${main_package}.startup:application_factory
+ main = ${ns_prefix}${package}.startup:application_factory
[paste.global_paster_command]
- shell = ${ns_prefix}${main_package}.debug:Shell
+ shell = ${ns_prefix}${package}.debug:Shell
""",
)
Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/ftesting.zcml_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/ftesting.zcml_tmpl 2010-03-31 21:09:25 UTC (rev 110380)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/ftesting.zcml_tmpl 2010-03-31 23:57:13 UTC (rev 110382)
@@ -48,6 +48,6 @@
<grantAll role="zope.Manager" />
<grant role="zope.Manager" principal="zope.mgr" />
- <include package="${ns_prefix}${main_package}" />
+ <include package="${ns_prefix}${package}" />
</configure>
Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/tests.py_tmpl
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+main_package+/tests/tests.py_tmpl 2010-03-31 21:09:25 UTC (rev 110380)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/project_template/src/+package+/tests/tests.py_tmpl 2010-03-31 23:57:13 UTC (rev 110382)
@@ -1,3 +1,3 @@
import z3c.testsetup
-test_suite = z3c.testsetup.register_all_tests('${ns_prefix}${main_package}')
+test_suite = z3c.testsetup.register_all_tests('${ns_prefix}${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-31 23:50:44 UTC (rev 110381)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/template.py 2010-03-31 23:57:13 UTC (rev 110382)
@@ -23,6 +23,8 @@
summary = "A BlueBream project, base template"
vars = [
+ var('package',
+ 'Main Python package (with namespace if any)'),
var('interpreter',
'Name of custom Python interpreter',
default='breampy'),
@@ -39,18 +41,43 @@
default=False),
]
- def check_vars(self, vars, cmd):
- if vars['package'] in ('bluebream', 'bream', 'zope'):
+ def check_name(self, name):
+ """Disallow certain package names
+ """
+ if name in ('bluebream', 'bream', 'zope'):
print
print "Error: The chosen project name results in an invalid " \
- "package name: %s." % vars['package']
+ "package name: %s." % name
print "Please choose a different project name."
sys.exit(1)
- # detect namespaces in the project name
- vars['package'] = re.sub('[^A-Za-z0-9.]+', '_', vars['project']).lower()
- vars['main_package'] = vars['package'].split('.')[-1]
- self.ns_split = vars['project'].split('.')
+ def check_vars(self, vars, cmd):
+ """This method checks and cleans the variables
+ passed on the command line
+ """
+ # check once just after the project name choice
+ pkg_name = re.sub('[^A-Za-z0-9.]+', '_', vars['project']).lower()
+ self.check_name(pkg_name)
+
+ # remove Paste chosen value for the package name and suggest a new one
+ del vars['package']
+ for var in self.vars:
+ if var.name == 'package':
+ var.default = pkg_name
+
+ # ask the remaining questions
+ vars = templates.Template.check_vars(self, vars, cmd)
+ # check again since we could chose anything
+ self.check_name(vars['package'])
+ return vars
+
+ def pre(self, command, output_dir, vars):
+ """Detect namespaces in the project name
+ """
+ if not command.options.verbose:
+ command.verbose = 0
+ self.ns_split = vars['package'].split('.')
+ vars['package'] = self.ns_split[-1]
vars['namespace_packages'] = list(reversed([
vars['package'].rsplit('.', i)[0]
for i in range(1,len(self.ns_split))]))
@@ -58,32 +85,31 @@
if len(self.ns_split) == 1:
vars['ns_prefix'] = ''
- return templates.Template.check_vars(self, vars, cmd)
- def write_files(self, command, output_dir, vars):
+ def post(self, command, output_dir, vars):
"""Add namespace packages and move the main package to the last level
"""
- if not command.options.verbose:
- command.verbose = 0
- templates.Template.write_files(self, command, output_dir, vars)
+ # do nothing if there is no namespace
+ if len(self.ns_split) == 1:
+ return
- if len(self.ns_split) > 1:
- target_dir = os.path.join(output_dir, 'src',
- os.path.join(*self.ns_split[:-1]))
+ # create the intermediate namespace packages
+ target_dir = os.path.join(output_dir, 'src',
+ os.path.join(*self.ns_split[:-1]))
- os.makedirs(target_dir)
+ os.makedirs(target_dir)
- ns_decl = "__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_decl)
- main_package_dir = os.path.join(output_dir,
- 'src',
- vars['main_package'])
- os.rename(main_package_dir,
- os.path.join(target_dir,
- os.path.basename(main_package_dir,)))
+ # create each __init__.py with namespace declaration
+ ns_decl = "__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_decl)
+ # move the main package to the last namespace
+ package_dir = os.path.join(output_dir, 'src', vars['package'])
+ os.rename(package_dir,
+ os.path.join(target_dir, os.path.basename(package_dir,)))
+
Modified: bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/tests/bluebream.txt
===================================================================
--- bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/tests/bluebream.txt 2010-03-31 23:50:44 UTC (rev 110381)
+++ bluebream/branches/ccomb-merge-templates/src/bluebream/bluebream_base/tests/bluebream.txt 2010-03-31 23:57:13 UTC (rev 110382)
@@ -22,6 +22,7 @@
>>> runner = cmd('create')
>>> option_args = []
>>> extra_args = [
+... "package=sample",
... "interpreter=testpy",
... "version=0.1",
... "description=test_description",
@@ -100,6 +101,7 @@
----------------------------------------------
>>> project = 'sample.main'
+>>> extra_args[0] = "package=sample.main"
>>> exit_code = runner.run(option_args + ['-t', 'bluebream', project] + extra_args)
Selected and implied templates:
bluebream#bluebream A BlueBream project, base template
@@ -113,7 +115,7 @@
keywords: test_keyword
license_name: Test Public License
long_description: test_long_description
- package: samplemain
+ package: sample.main
project: sample.main
url: http://example.com
version: 0.1
@@ -174,6 +176,7 @@
---------------------------------------------
>>> project = 'sample.app.main'
+>>> extra_args[0] = "package=sample.app.main"
>>> exit_code = runner.run(option_args + ['-t', 'bluebream', project] + extra_args)
Selected and implied templates:
bluebream#bluebream A BlueBream project, base template
@@ -187,7 +190,7 @@
keywords: test_keyword
license_name: Test Public License
long_description: test_long_description
- package: sampleappmain
+ package: sample.app.main
project: sample.app.main
url: http://example.com
version: 0.1
More information about the checkins
mailing list