diff options
author | R. Tyler Ballance <tyler@slide.com> | 2009-06-28 14:10:54 -0700 |
---|---|---|
committer | R. Tyler Ballance <tyler@slide.com> | 2009-06-28 14:10:54 -0700 |
commit | c38cbebcf6cd29adace490f1fbe7dee8324a27c9 (patch) | |
tree | 22663f2192c78ec30987395e06d26e3077d8b84c | |
parent | 899407bee3e372615b840c59b3eb25824250d7b0 (diff) | |
parent | 714a46b4ed922d7afaf8ef95144890cfcd74007e (diff) | |
download | python-cheetah-c38cbebcf6cd29adace490f1fbe7dee8324a27c9.tar.gz |
Merge commit 'abbeyj/performance' into performance
Conflicts:
src/Template.py
src/c/_template.c
-rw-r--r-- | SetupConfig.py | 3 | ||||
-rw-r--r-- | bin/.gitattributes | 1 | ||||
-rw-r--r-- | bin/cheetah.bat | 1 | ||||
-rw-r--r-- | src/Template.py | 39 | ||||
-rw-r--r-- | src/Tests/Template.py | 15 | ||||
-rw-r--r-- | src/c/_template.c | 8 |
6 files changed, 39 insertions, 28 deletions
diff --git a/SetupConfig.py b/SetupConfig.py index 87df62b..9508e3c 100644 --- a/SetupConfig.py +++ b/SetupConfig.py @@ -34,6 +34,7 @@ package_dir = {'Cheetah':'src'} import os import os.path +import sys from distutils.core import Extension ext_modules=[ @@ -51,6 +52,8 @@ ext_modules=[ scripts = ['bin/cheetah-compile', 'bin/cheetah', ] +if sys.platform == "win32": + scripts.append('bin/cheetah.bat') data_files = ['recursive: src *.tmpl *.txt LICENSE README TODO CHANGES', ] if not os.getenv('CHEETAH_INSTALL_WITHOUT_SETUPTOOLS'): diff --git a/bin/.gitattributes b/bin/.gitattributes new file mode 100644 index 0000000..5bebad2 --- /dev/null +++ b/bin/.gitattributes @@ -0,0 +1 @@ +cheetah.bat -crlf diff --git a/bin/cheetah.bat b/bin/cheetah.bat new file mode 100644 index 0000000..3f6cf2a --- /dev/null +++ b/bin/cheetah.bat @@ -0,0 +1 @@ +@"%~dp0..\python" "%~dpn0" %*
diff --git a/src/Template.py b/src/Template.py index 2fd9c50..eeeeb95 100644 --- a/src/Template.py +++ b/src/Template.py @@ -25,11 +25,6 @@ try: from types import StringTypes except ImportError: StringTypes = (types.StringType,types.UnicodeType) -try: - from types import BooleanType - boolTypeAvailable = True -except ImportError: - boolTypeAvailable = False try: from threading import Lock @@ -607,11 +602,11 @@ class Template(Servlet): N = types.NoneType; S = types.StringType; U = types.UnicodeType D = types.DictType; F = types.FileType C = types.ClassType; M = types.ModuleType - I = types.IntType + I = types.IntType; B = types.BooleanType + + IB = (I, B) + NS = (N, S) - if boolTypeAvailable: - B = types.BooleanType - vt(source, 'source', (N,S,U), 'string or None') vt(file, 'file',(N,S,U,F), 'string, file-like object, or None') @@ -622,12 +617,10 @@ class Template(Servlet): cacheCompilationResults = valOrDefault( cacheCompilationResults, klass._CHEETAH_cacheCompilationResults) - if boolTypeAvailable: - vt(cacheCompilationResults, 'cacheCompilationResults', (I,B), 'boolean') + vt(cacheCompilationResults, 'cacheCompilationResults', IB, 'boolean') useCache = valOrDefault(useCache, klass._CHEETAH_useCompilationCache) - if boolTypeAvailable: - vt(cacheCompilationResults, 'cacheCompilationResults', (I,B), 'boolean') + vt(useCache, 'useCache', IB, 'boolean') compilerSettings = valOrDefault( compilerSettings, klass._getCompilerSettings(source, file) or {}) @@ -638,10 +631,9 @@ class Template(Servlet): keepRefToGeneratedCode = valOrDefault( keepRefToGeneratedCode, klass._CHEETAH_keepRefToGeneratedCode) - if boolTypeAvailable: - vt(cacheCompilationResults, 'cacheCompilationResults', (I,B), 'boolean') - - vt(moduleName, 'moduleName', (N,S), 'string or None') + vt(keepRefToGeneratedCode, 'keepRefToGeneratedCode', IB, 'boolean') + + vt(moduleName, 'moduleName', NS, 'string or None') __orig_file__ = None if not moduleName: if file and type(file) in StringTypes: @@ -649,27 +641,26 @@ class Template(Servlet): __orig_file__ = file else: moduleName = klass._CHEETAH_defaultModuleNameForTemplates - + className = valOrDefault( className, klass._CHEETAH_defaultClassNameForTemplates) - vt(className, 'className', (N,S), 'string or None') + vt(className, 'className', NS, 'string or None') className = className or moduleName mainMethodName = valOrDefault( mainMethodName, klass._CHEETAH_defaultMainMethodNameForTemplates) - vt(mainMethodName, 'mainMethodName', (N,S), 'string or None') + vt(mainMethodName, 'mainMethodName', NS, 'string or None') moduleGlobals = valOrDefault( moduleGlobals, klass._CHEETAH_defaultModuleGlobalsForTemplates) cacheModuleFilesForTracebacks = valOrDefault( cacheModuleFilesForTracebacks, klass._CHEETAH_cacheModuleFilesForTracebacks) - if boolTypeAvailable: - vt(cacheModuleFilesForTracebacks, 'cacheModuleFilesForTracebacks', (I,B), 'boolean') - + vt(cacheModuleFilesForTracebacks, 'cacheModuleFilesForTracebacks', IB, 'boolean') + cacheDirForModuleFiles = valOrDefault( cacheDirForModuleFiles, klass._CHEETAH_cacheDirForModuleFiles) - vt(cacheDirForModuleFiles, 'cacheDirForModuleFiles', (N,S), 'string or None') + vt(cacheDirForModuleFiles, 'cacheDirForModuleFiles', NS, 'string or None') except TypeError, reason: raise TypeError(reason) diff --git a/src/Tests/Template.py b/src/Tests/Template.py index 9a07181..06f9768 100644 --- a/src/Tests/Template.py +++ b/src/Tests/Template.py @@ -326,7 +326,22 @@ class StaticMethodSupport(TemplateTest): except AttributeError, ex: self.fail(ex) +class Useless(object): + def boink(self): + return [1, 2, 3] +class MultipleInheritanceSupport(TemplateTest): + def runTest(self): + template = ''' + #extends Template, Useless + #def foo() + #return [4,5] + $boink() + #end def + ''' + template = Template.compile(template) + template = template() + result = template.foo() + print result ################################################## diff --git a/src/c/_template.c b/src/c/_template.c index 04fced1..2345336 100644 --- a/src/c/_template.c +++ b/src/c/_template.c @@ -14,7 +14,7 @@ static PyObject *unspecified = NULL; static PyObject *py_valordefault(PyObject *self, PyObject *args, PyObject *kwargs) { - PyObject *value, *def, *res; + PyObject *value, *def; if (!PyArg_ParseTuple(args, "OO", &value, &def)) return NULL; @@ -31,7 +31,7 @@ static const char _template_doc[] = "\ \n\ "; static struct PyMethodDef _template_methods[] = { - {"valOrDefault", py_valordefault, METH_VARARGS, NULL}, + {"valOrDefault", (PyCFunction)py_valordefault, METH_VARARGS, NULL}, {NULL} }; @@ -41,10 +41,10 @@ PyMODINIT_FUNC init_template() _template_doc); unspecifiedModule = PyImport_ImportModule("Cheetah.Unspecified"); if ( (PyErr_Occurred()) || (!unspecifiedModule) ) - return NULL; + return; unspecified = PyObject_GetAttrString(unspecifiedModule, "Unspecified"); if (PyErr_Occurred()) - return NULL; + return; } #ifdef __cplusplus |