Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/galaxy/util/template.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/galaxy/util/template.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -"""Entry point for the usage of Cheetah templating within Galaxy.""" -from __future__ import absolute_import - -import sys -import traceback -from lib2to3.refactor import RefactoringTool - -import packaging.version -from Cheetah.Compiler import Compiler -from Cheetah.NameMapper import NotFound -from Cheetah.Template import Template -from past.translation import myfixes - -from . import unicodify - -# Skip libpasteurize fixers, which make sure code is py2 and py3 compatible. -# This is not needed, we only translate code on py3. -if sys.version_info.major > 2: - myfixes = [f for f in myfixes if not f.startswith('libpasteurize')] - refactoring_tool = RefactoringTool(myfixes, {'print_function': True}) -else: - myfixes = refactoring_tool = None - - -class FixedModuleCodeCompiler(Compiler): - - module_code = None - - def getModuleCode(self): - self._moduleDef = self.module_code - return self._moduleDef - - -def create_compiler_class(module_code): - - class CustomCompilerClass(FixedModuleCodeCompiler): - pass - - setattr(CustomCompilerClass, 'module_code', module_code) - - return CustomCompilerClass - - -def fill_template(template_text, - context=None, - retry=10, - compiler_class=Compiler, - first_exception=None, - futurized=False, - python_template_version='3', - **kwargs): - """Fill a cheetah template out for specified context. - - If template_text is None, an exception will be thrown, if context - is None (the default) - keyword arguments to this function will be used - as the context. - """ - if template_text is None: - raise TypeError("Template text specified as None to fill_template.") - if not context: - context = kwargs - if isinstance(python_template_version, str): - python_template_version = packaging.version.parse(python_template_version) - klass = Template.compile(source=template_text, compilerClass=compiler_class) - t = klass(searchList=[context]) - try: - return unicodify(t) - except NotFound as e: - if first_exception is None: - first_exception = e - if refactoring_tool and python_template_version.release[0] < 3 and retry > 0: - tb = e.__traceback__ - last_stack = traceback.extract_tb(tb)[-1] - if last_stack.name == '<listcomp>': - # On python 3 list, dict and set comprehensions as well as generator expressions - # have their own local scope, which prevents accessing frame variables in cheetah. - # We can work around this by replacing `$var` with `var`, but we only do this for - # list comprehensions, as this has never worked for dict or set comprehensions or - # generator expressions in Cheetah. - var_not_found = e.args[0].split("'")[1] - replace_str = 'VFFSL(SL,"%s",True)' % var_not_found - lineno = last_stack.lineno - 1 - module_code = t._CHEETAH_generatedModuleCode.splitlines() - module_code[lineno] = module_code[lineno].replace(replace_str, var_not_found) - module_code = "\n".join(module_code) - compiler_class = create_compiler_class(module_code) - return fill_template(template_text=template_text, - context=context, - retry=retry - 1, - compiler_class=compiler_class, - first_exception=first_exception, - python_template_version=python_template_version, - ) - raise first_exception or e - except Exception as e: - if first_exception is None: - first_exception = e - if sys.version_info.major > 2 and python_template_version.release[0] < 3 and not futurized: - # Possibly an error caused by attempting to run python 2 - # template code on python 3. Run the generated module code - # through futurize and hope for the best. - module_code = t._CHEETAH_generatedModuleCode - module_code = futurize_preprocessor(module_code) - compiler_class = create_compiler_class(module_code) - return fill_template(template_text=template_text, - context=context, - retry=retry, - compiler_class=compiler_class, - first_exception=first_exception, - futurized=True, - python_template_version=python_template_version, - ) - raise first_exception or e - - -def futurize_preprocessor(source): - source = str(refactoring_tool.refactor_string(source, name='auto_translate_cheetah')) - # libfuturize.fixes.fix_unicode_keep_u' breaks from Cheetah.compat import unicode - source = source.replace('from Cheetah.compat import str', 'from Cheetah.compat import unicode') - return source
