Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
S slapos.recipe.template
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • nexedi
  • slapos.recipe.template
  • Merge requests
  • !1

You need to sign in or sign up before continuing.
Merged
Created Nov 16, 2015 by Kirill Smelkov@kirrOwner

jinja2: Handle non-ascii input/output

  • Overview 10
  • Commits 2
  • Changes

Currently slapos.recipe.template:jinja2 fails if source contains non-ascii input:

<BLANKLINE>
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File ".../site-packages/zc/buildout/buildout.py", line 1992, in main
    getattr(buildout, command)(args)
  File ".../site-packages/zc/buildout/buildout.py", line 550, in install
    [self[part]['recipe'] for part in install_parts]
  File ".../site-packages/zc/buildout/buildout.py", line 1135, in __getitem__
    options._initialize()
  File ".../site-packages/zc/buildout/buildout.py", line 1239, in _initialize
    self.initialize()
  File ".../site-packages/zc/buildout/buildout.py", line 1248, in initialize
    self.recipe = recipe_class(buildout, name, self)
  File ".../slapos.recipe.template/slapos/recipe/template/jinja2_template.py", line 208, in __init__
    env.compile(source, filename=template),
  File ".../site-packages/jinja2/environment.py", line 551, in compile
    source = self._parse(source, name, filename)
  File ".../site-packages/jinja2/environment.py", line 470, in _parse
    return Parser(self, source, name, encode_filename(filename)).parse()
  File ".../site-packages/jinja2/parser.py", line 31, in __init__
    self.stream = environment._tokenize(source, name, filename, state)
  File ".../site-packages/jinja2/environment.py", line 501, in _tokenize
    source = self.preprocess(source, name, filename)
  File ".../site-packages/jinja2/environment.py", line 495, in preprocess
    self.iter_extensions(), text_type(source))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 219: ordinal not in range(128)

it also fails writing-out non-ascii input (which could originate even programmatically even if source was purely ascii):

<BLANKLINE>
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File ".../site-packages/zc/buildout/buildout.py", line 1992, in main
    getattr(buildout, command)(args)
  File ".../site-packages/zc/buildout/buildout.py", line 666, in install
    installed_files = self[part]._call(recipe.install)
  File ".../site-packages/zc/buildout/buildout.py", line 1407, in _call
    return f()
  File ".../slapos/slapos.recipe.template/slapos/recipe/template/jinja2_template.py", line 227, in install
    out.write(self.template.render(**self.context))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 206-211: ordinal not in range(128)

Fix it.

My use case is to pass and handle in jinja2 template

ICP = 沪ICP备14008524号

as instance parameter (see also slapos.core!3 (merged))

/cc @vpelletier, @jm, @saurabh.bansod, @kazuhiko, @jerome

Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: non-ascii
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7