Compare commits

..

No commits in common. "rawhide" and "f34" have entirely different histories.

9 changed files with 206 additions and 172 deletions

View file

@ -1 +0,0 @@
1

1
.gitignore vendored
View file

@ -1,2 +1 @@
/Jinja2-*.tar.gz
/jinja2-*.tar.gz

View file

@ -0,0 +1,27 @@
From 9a99db929323f60553b391c80d0395821121d593 Mon Sep 17 00:00:00 2001
From: Thomas Moschny <thomas.moschny@gmx.de>
Date: Tue, 19 Jan 2021 21:01:18 +0100
Subject: [PATCH] add 'linetable' to the preserved CodeType attributes (#1334)
add 'linetable' to the preserved CodeType attributes
co_linetable replaces co_lnotab as part of PEP 626 in Python 3.10.
---
src/jinja2/debug.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/jinja2/debug.py b/src/jinja2/debug.py
index 5d8aec3..e256617 100644
--- a/src/jinja2/debug.py
+++ b/src/jinja2/debug.py
@@ -137,6 +137,7 @@ def fake_traceback(exc_value, tb, filename, lineno):
"lnotab",
"freevars",
"cellvars",
+ "linetable", # Python 3.10
):
if isinstance(attr, tuple):
# Replace with given value.
--
2.29.2

View file

@ -0,0 +1,49 @@
From 58250a709532ccb3e6d92ca65b3d305d1464cb68 Mon Sep 17 00:00:00 2001
From: Martin Krizek <martin.krizek@gmail.com>
Date: Thu, 28 Jan 2021 10:08:50 +0100
Subject: [PATCH] native_concat: pass only strings to literal_eval
If there is only single node and it is not a string, there is no point
in passing it into ``literal_eval``, just return it immediately.
One of the examples where passing a non-string node into
``literal_eval`` would actually cause problems is when the node is
``Undefined``. On Python 3.10 this would cause ``UndefinedError``
instead of just ``Undefined`` being returned.
Fixes #1335
---
CHANGES.rst | 3 +++
src/jinja2/nativetypes.py | 2 ++
2 files changed, 5 insertions(+)
diff --git a/CHANGES.rst b/CHANGES.rst
index 511b22b..a8a66ea 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -8,6 +8,9 @@ Released 2021-01-31
- Improve the speed of the ``urlize`` filter by reducing regex
backtracking. Email matching requires a word character at the start
of the domain part, and only word characters in the TLD. :pr:`1343`
+- Fix UndefinedError incorrectly being thrown on an undefined variable
+ instead of ``Undefined`` being returned on
+ ``NativeEnvironment`` on Python 3.10. :issue:`1335`
Version 2.11.2
diff --git a/src/jinja2/nativetypes.py b/src/jinja2/nativetypes.py
index a9ead4e..2fee17f 100644
--- a/src/jinja2/nativetypes.py
+++ b/src/jinja2/nativetypes.py
@@ -26,6 +26,8 @@ def native_concat(nodes):
if len(head) == 1:
raw = head[0]
+ if not isinstance(raw, str):
+ return raw
else:
raw = u"".join([text_type(v) for v in chain(head, nodes)])
--
2.29.2

View file

@ -1,4 +0,0 @@
discover:
how: fmf
execute:
how: tmt

View file

@ -1,27 +1,44 @@
%global srcname jinja2
%global srcname Jinja2
Name: python-jinja2
Version: 3.1.6
Release: 6%{?dist}
Version: 2.11.3
Release: 1%{?dist}
Summary: General purpose template engine
License: BSD-3-Clause
License: BSD
URL: https://palletsprojects.com/p/jinja/
Source0: %{pypi_source %srcname}
Source0: %{pypi_source}
# cherry-picked patches to build with Python 3.10 (#1907442)
Patch1: 0001-add-linetable-to-the-preserved-CodeType-attributes-1.patch
Patch2: 0002-native_concat-pass-only-strings-to-literal_eval.patch
%if 0%{?fedora} || 0%{?rhel} > 7
# Enable python3 build by default
%bcond_without python3
%else
%bcond_with python3
%endif
%if 0%{?fedora} > 33 || 0%{?rhel} > 7
# Disable python2 build by default
%bcond_with python2
%else
%bcond_without python2
%endif
# Enable building without docs to avoid a circular dependency between this
# and python-sphinx:
%if 0%{?rhel} || 0%{?flatpak}
%bcond_with docs
%else
%bcond_without docs
%if 0%{?fedora} || 0%{?rhel} > 7
%bcond_without async
%else
%bcond_with async
%endif
# The dependency on trio is undesired on RHEL
%bcond asyncio_tests %{undefined rhel}
BuildArch: noarch
%global _description %{expand:
Jinja2 is a template engine written in pure Python. It provides a
%description
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and an
optional sandboxed environment.
@ -29,180 +46,143 @@ If you have any exposure to other text-based template languages, such
as Smarty or Django, you should feel right at home with Jinja2. It's
both designer and developer friendly by sticking to Python's
principles and adding functionality useful for templating
environments.}
environments.
%description %_description
%if %{with python2}
%package -n python2-jinja2
Summary: General purpose template engine for python2
BuildRequires: python2-devel
BuildRequires: python2-setuptools
BuildRequires: python2-babel >= 0.8
BuildRequires: python2-markupsafe >= 0.23
Requires: python2-babel >= 0.8
Requires: python2-markupsafe >= 0.23
Requires: python2-setuptools
%{?python_provide:%python_provide python2-jinja2}
%description -n python2-jinja2
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and an
optional sandboxed environment.
If you have any exposure to other text-based template languages, such
as Smarty or Django, you should feel right at home with Jinja2. It's
both designer and developer friendly by sticking to Python's
principles and adding functionality useful for templating
environments.
%endif # with python2
%if %{with python3}
%package -n python3-jinja2
Summary: %{summary}
Summary: General purpose template engine for python3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-babel >= 0.8
BuildRequires: python3-markupsafe >= 0.23
BuildRequires: python3-pytest
%if %{with asyncio_tests}
BuildRequires: python3-trio
%endif
%if %{with docs}
BuildRequires: %{_bindir}/sphinx-build-3
BuildRequires: make
BuildRequires: python3-Pallets-Sphinx-Themes >= 2
BuildRequires: python3-Pallets-Sphinx-Themes
BuildRequires: python3-sphinxcontrib-log-cabinet
BuildRequires: python3-sphinx-issues
%endif
Requires: python3-babel >= 0.8
Requires: python3-markupsafe >= 0.23
Requires: python3-setuptools
%{?python_provide:%python_provide python3-jinja2}
%description -n python3-jinja2 %_description
%description -n python3-jinja2
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and an
optional sandboxed environment.
%pyproject_extras_subpkg -n python3-jinja2 i18n
If you have any exposure to other text-based template languages, such
as Smarty or Django, you should feel right at home with Jinja2. It's
both designer and developer friendly by sticking to Python's
principles and adding functionality useful for templating
environments.
%endif # with python3
%prep
%autosetup -p1 -n %{srcname}-%{version}
%generate_buildrequires
%pyproject_buildrequires -x i18n
# cleanup
find . -name '*.pyo' -o -name '*.pyc' -delete
%build
%pyproject_wheel
%if %{with python2}
%py2_build
%endif # with python2
%if %{with python3}
%py3_build
%if %{with docs}
make -C docs html PYTHONPATH=$(pwd)/src SPHINXBUILD=sphinx-build-3
# remove hidden file
rm -rvf docs/_build/html/.buildinfo
%endif
rm -rf docs/_build/html/.buildinfo
%endif # with docs
%endif # with python3
%install
%pyproject_install
%pyproject_save_files jinja2
%if %{with python2}
%py2_install
# these files are valid only on Python 3.6+
rm %{buildroot}%{python2_sitelib}/jinja2/asyncsupport.py
rm %{buildroot}%{python2_sitelib}/jinja2/asyncfilters.py
%endif # with python2
%if %{with python3}
%py3_install
%if ! %{with async}
# these files are valid only on Python 3.6+
rm %{buildroot}%{python3_sitelib}/jinja2/asyncsupport.py
rm %{buildroot}%{python3_sitelib}/jinja2/asyncfilters.py
%endif # ! with async
%endif # with python3
%check
# test_elif_deep is flaky for an unknown reason
# https://github.com/pallets/jinja/issues/2079
%pytest tests -k "not test_elif_deep" %{!?with_asyncio_tests:--ignore tests/test_async.py --ignore tests/test_async_filters.py}
%if %{with python3}
PYTHONPATH=$(pwd)/src %{__python3} -m pytest tests
%endif # with python3
%files -n python3-jinja2 -f %{pyproject_files}
%doc README.md
%doc docs/examples
%license LICENSE.txt
%if %{with python2}
%files -n python2-jinja2
%doc CHANGES.rst
%doc ext
%doc examples
%license LICENSE.rst
%if %{with docs}
%doc docs/_build/html
%endif
%{python2_sitelib}/jinja2/
%{python2_sitelib}/Jinja2-*.egg-info/
%endif # with python2
%if %{with python3}
%files -n python3-jinja2
%doc CHANGES.rst
%doc ext
%doc examples
%license LICENSE.rst
%if %{with docs}
%doc docs/_build/html
%endif
%{python3_sitelib}/jinja2/
%{python3_sitelib}/Jinja2-*.egg-info/
%endif # with python3
%changelog
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 3.1.6-6
- Rebuilt for Python 3.14.0rc3 bytecode
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 3.1.6-5
- Rebuilt for Python 3.14.0rc2 bytecode
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Tue Jun 03 2025 Python Maint <python-maint@redhat.com> - 3.1.6-3
- Rebuilt for Python 3.14
* Mon Jun 02 2025 Python Maint <python-maint@redhat.com> - 3.1.6-2
- Bootstrap for Python 3.14
* Sun Mar 9 2025 Thomas Moschny <thomas.moschny@gmx.de> - 3.1.6-1
- Update to 3.1.6.
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Jan 08 2025 Miro Hrončok <mhroncok@redhat.com> - 3.1.5-1
- Update to 3.1.5
- Security fix for CVE-2024-56201
- Fixes: rhzb#2333688
- Fixes: rhzb#2336377
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jun 08 2024 Python Maint <python-maint@redhat.com> - 3.1.4-4
- Rebuilt for Python 3.13
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 3.1.4-3
- Bootstrap for Python 3.13
* Thu May 23 2024 Miro Hrončok <mhroncok@redhat.com> - 3.1.4-2
- Python 3.13 fixes
- Fixes: rhzb#2245265
* Tue May 07 2024 Lumír Balhar <lbalhar@redhat.com> - 3.1.4-1
- Update to 3.1.4 (rhbz#2279211,rhbz#2279491)
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jan 11 2024 Michel Lind <salimma@fedoraproject.org> - 3.1.3-1
- Update to 3.1.3 to fix CVE-2024-22195
* Tue Aug 08 2023 Karolina Surma <ksurma@redhat.com> - 3.1.2-6
- Declare the license as an SPDX expression
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jun 16 2023 Python Maint <python-maint@redhat.com> - 3.1.2-4
- Rebuilt for Python 3.12
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 3.1.2-3
- Bootstrap for Python 3.12
* Fri May 19 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 3.1.2-2
- Disable docs by default in RHEL builds
* Mon May 01 2023 Sandro Mani <manisandro@gmail.com> - 3.1.2-1
- Update to 3.1.2
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Nov 14 2022 Lumír Balhar <lbalhar@redhat.com> - 3.0.3-6
- Fix compatibility with pytest 7.2
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.0.3-4
- Rebuilt for Python 3.11
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.0.3-3
- Bootstrap for Python 3.11
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Nov 15 2021 Thomas Moschny <thomas.moschny@gmx.de> - 3.0.3-1
- Update to 3.0.3.
* Mon Nov 15 2021 Thomas Moschny <thomas.moschny@gmx.de> - 3.0.1-4
- Use new Python packaging guidelines.
- Jinja2 version 3 does not support Python 2 anymore.
* Wed Nov 10 2021 Karolina Surma <ksurma@redhat.com> - 3.0.1-3
- Don't explicitly declare runtime dependencies when building for Python 3
- Declare jinja2+i18n extra to map the upstream package structure
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jun 22 2021 Lumír Balhar <lbalhar@redhat.com> - 3.0.1-1
- Update to 3.0.1
- Resolves: rhbz#1961862
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 2.11.3-3
- Rebuilt for Python 3.10
* Wed Jun 02 2021 Python Maint <python-maint@redhat.com> - 2.11.3-2
- Bootstrap for Python 3.10
* Sat Feb 6 2021 Thomas Moschny <thomas.moschny@gmx.de> - 2.11.3-1
- Update to 2.11.3.
- Add patches to build with Python 3.10 (#1907442).

View file

@ -1 +1 @@
SHA512 (jinja2-3.1.6.tar.gz) = bddd5e142f1462426c57b2efafdfafdfc6b66de257668707940896feae71eabdf19e0b6e34ef49b965153baf9b1eb59bb5a97349bb287ea0921dd2a751e967ab
SHA512 (Jinja2-2.11.3.tar.gz) = fce4f835795fe9afb622f8106f60344032a811f3f693806f31ba482f9b7c1400f93dfa1701b4db0b472cbed4b0793cb329778c8091811ef0e3b577150d28e004

View file

@ -1,7 +0,0 @@
description: |
Runs very simple jinja2 template which should always work
test: python3 smoke.py
framework: shell
require:
- python3
- python3-jinja2

View file

@ -1,9 +0,0 @@
import jinja2
TEMPLATE = "Text {{ variable }}"
environment = jinja2.Environment()
template = environment.from_string(TEMPLATE)
output = template.render(variable="demo")
assert output == "Text demo", f"got: {output}"