Skip to content

Probably incompatible with jinja2 >= 3.0 #17

Description

@igneus

On Python 3.8 i pip-installed chant21, but it crashes on import

Python 3.8.10 (default, May  6 2021, 00:05:59) 
[GCC 10.2.1 20201203] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import chant21
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/site-packages/chant21/__init__.py", line 16, in <module>
    from .gabc import *
  File "/usr/lib/python3.8/site-packages/chant21/gabc/__init__.py", line 2, in <module>
    from .converter import *
  File "/usr/lib/python3.8/site-packages/chant21/gabc/converter.py", line 10, in <module>
    from .. import chant
  File "/usr/lib/python3.8/site-packages/chant21/chant.py", line 26, in <module>
    from .html import toFile
  File "/usr/lib/python3.8/site-packages/chant21/html/__init__.py", line 42, in <module>
    WIDGET = TEMPLATE_ENV.get_template('widget.html')
  File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 997, in get_template
    return self._load_template(name, globals)
  File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 958, in _load_template
    template = self.loader.load(self, name, self.make_globals(globals))
  File "/usr/lib/python3.8/site-packages/jinja2/loaders.py", line 137, in load
    code = environment.compile(source, name, filename)
  File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 750, in compile
    source = self._generate(source, name, filename, defer_init=defer_init)
  File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 678, in _generate
    return generate(  # type: ignore
  File "/usr/lib/python3.8/site-packages/jinja2/compiler.py", line 117, in generate
    generator.visit(node)
  File "/usr/lib/python3.8/site-packages/jinja2/visitor.py", line 40, in visit
    return f(node, *args, **kwargs)
  File "/usr/lib/python3.8/site-packages/jinja2/compiler.py", line 888, in visit_Template
    self.blockvisit(node.body, frame)
  File "/usr/lib/python3.8/site-packages/jinja2/compiler.py", line 449, in blockvisit
    self.visit(node, frame)
  File "/usr/lib/python3.8/site-packages/jinja2/visitor.py", line 40, in visit
    return f(node, *args, **kwargs)
  File "/usr/lib/python3.8/site-packages/jinja2/compiler.py", line 1582, in visit_AssignBlock
    self.pop_assign_tracking(frame)
  File "/usr/lib/python3.8/site-packages/jinja2/compiler.py", line 813, in pop_assign_tracking
    ref = frame.symbols.ref(name)
  File "/usr/lib/python3.8/site-packages/jinja2/idtracking.py", line 80, in ref
    raise AssertionError(
AssertionError: Tried to resolve a name to a reference that was unknown to the frame ('_')

The error seems to be caused by

{%- for _ in range(5) -%}

Installed jinja2 version:

>>> import jinja2
>>> jinja2.__version__
'3.0.1'

Downgrading jinja2 to 2.11.3 (current result of pip install jinja2<3.0) fixes the issue. It seems that the current jinja2 version constraint in setup.py ("Jinja2>=2.11.1") is not completely accurate and the library is in fact incompatible with jinja2 >= 3.0.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions