diff --git a/python-Jinja2.changes b/python-Jinja2.changes index 53c0621..ea039bc 100644 --- a/python-Jinja2.changes +++ b/python-Jinja2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Sep 24 11:06:41 UTC 2019 - Tomáš Chvátal + +- Add patch to work with python 3.8: + * python38.patch + ------------------------------------------------------------------- Sat Apr 13 16:46:23 UTC 2019 - Jan Engelhardt diff --git a/python-Jinja2.spec b/python-Jinja2.spec index bbc4483..a062295 100644 --- a/python-Jinja2.spec +++ b/python-Jinja2.spec @@ -26,6 +26,7 @@ License: BSD-3-Clause Group: Development/Languages/Python URL: http://jinja.pocoo.org/ Source: https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-%{version}.tar.gz +Patch0: python38.patch BuildRequires: %{python_module MarkupSafe >= 0.23} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} @@ -81,18 +82,17 @@ Emacs syntax highlighting scheme for Jinja2 templates. %prep %setup -q -n Jinja2-%{version} +%patch0 -p1 +sed -i 's/\r$//' LICENSE # Fix wrong EOL encoding %build %python_build -sed -i 's/\r$//' LICENSE # Fix wrong EOL encoding %install %python_install install -Dm644 ext/Vim/jinja.vim %{buildroot}%{_datadir}/vim/site/syntax/jinja.vim # Install VIM syntax file install -Dm644 ext/jinja.el %{buildroot}%{_datadir}/emacs/site-lisp/jinja.el # Install Emacs syntax file -%if 0%{?suse_version} %python_expand %fdupes %{buildroot}%{$python_sitelib} -%endif %check %pytest diff --git a/python38.patch b/python38.patch new file mode 100644 index 0000000..e52b425 --- /dev/null +++ b/python38.patch @@ -0,0 +1,187 @@ +From 31bf9b7e71c3fee3b7866ffdc0f70f4525a490d9 Mon Sep 17 00:00:00 2001 +From: Florian Bruhin +Date: Wed, 27 Jun 2018 15:30:54 +0200 +Subject: [PATCH] Import abstract base classes from collections.abc + +In Python 3.7, importing ABCs directly from the `collections` module shows a +warning (and in Python 3.8 it will stop working) - see +https://github.com/python/cpython/commit/c66f9f8d3909f588c251957d499599a1680e2320 + +This fixes various DeprecationWarnings such as those: + +``` +.../jinja2/utils.py:485: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working + from collections import MutableMapping + +.../jinja2/runtime.py:318: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working + from collections import Mapping +``` +--- + docs/jinjaext.py | 4 ++-- + jinja2/_compat.py | 6 ++++++ + jinja2/runtime.py | 9 ++------- + jinja2/sandbox.py | 12 +++++------- + jinja2/tests.py | 5 ++--- + jinja2/utils.py | 9 ++------- + 6 files changed, 19 insertions(+), 26 deletions(-) + +diff --git a/docs/jinjaext.py b/docs/jinjaext.py +index bb508089..fd38ee8f 100644 +--- a/docs/jinjaext.py ++++ b/docs/jinjaext.py +@@ -8,7 +8,6 @@ + :copyright: Copyright 2008 by Armin Ronacher. + :license: BSD. + """ +-import collections + import os + import re + import inspect +@@ -26,6 +25,7 @@ + from pygments.token import Keyword, Name, Comment, String, Error, \ + Number, Operator, Generic + from jinja2 import Environment, FileSystemLoader ++from jinja2._compat import abc + + + def parse_rst(state, content_offset, doc): +@@ -160,7 +160,7 @@ def walk(node, indent): + members = [] + for key, name in node.__dict__.items(): + if not key.startswith('_') and \ +- not hasattr(node.__base__, key) and isinstance(name, collections.Callable): ++ not hasattr(node.__base__, key) and isinstance(name, abc.Callable): + members.append(key) + if members: + members.sort() +diff --git a/jinja2/_compat.py b/jinja2/_compat.py +index 61d85301..4dbf6ea0 100644 +--- a/jinja2/_compat.py ++++ b/jinja2/_compat.py +@@ -97,3 +97,9 @@ def __new__(cls, name, this_bases, d): + from urllib.parse import quote_from_bytes as url_quote + except ImportError: + from urllib import quote as url_quote ++ ++ ++try: ++ from collections import abc ++except ImportError: ++ import collections as abc +diff --git a/jinja2/runtime.py b/jinja2/runtime.py +index f9d7a680..5e313369 100644 +--- a/jinja2/runtime.py ++++ b/jinja2/runtime.py +@@ -20,7 +20,7 @@ + TemplateNotFound + from jinja2._compat import imap, text_type, iteritems, \ + implements_iterator, implements_to_string, string_types, PY2, \ +- with_metaclass ++ with_metaclass, abc + + + # these variables are exported to the template runtime +@@ -313,12 +313,7 @@ def __repr__(self): + ) + + +-# register the context as mapping if possible +-try: +- from collections import Mapping +- Mapping.register(Context) +-except ImportError: +- pass ++abc.Mapping.register(Context) + + + class BlockReference(object): +diff --git a/jinja2/sandbox.py b/jinja2/sandbox.py +index 03aaebd2..8015ee0c 100644 +--- a/jinja2/sandbox.py ++++ b/jinja2/sandbox.py +@@ -14,10 +14,9 @@ + """ + import types + import operator +-from collections import Mapping + from jinja2.environment import Environment + from jinja2.exceptions import SecurityError +-from jinja2._compat import string_types, PY2 ++from jinja2._compat import string_types, PY2, abc + from jinja2.utils import Markup + + from markupsafe import EscapeFormatter +@@ -79,10 +78,9 @@ + pass + + #: register Python 2.6 abstract base classes +-from collections import MutableSet, MutableMapping, MutableSequence +-_mutable_set_types += (MutableSet,) +-_mutable_mapping_types += (MutableMapping,) +-_mutable_sequence_types += (MutableSequence,) ++_mutable_set_types += (abc.MutableSet,) ++_mutable_mapping_types += (abc.MutableMapping,) ++_mutable_sequence_types += (abc.MutableSequence,) + + + _mutable_spec = ( +@@ -103,7 +101,7 @@ + ) + + +-class _MagicFormatMapping(Mapping): ++class _MagicFormatMapping(abc.Mapping): + """This class implements a dummy wrapper to fix a bug in the Python + standard library for string formatting. + +diff --git a/jinja2/tests.py b/jinja2/tests.py +index 0adc3d4d..bc99d66c 100644 +--- a/jinja2/tests.py ++++ b/jinja2/tests.py +@@ -10,9 +10,8 @@ + """ + import operator + import re +-from collections import Mapping + from jinja2.runtime import Undefined +-from jinja2._compat import text_type, string_types, integer_types ++from jinja2._compat import text_type, string_types, integer_types, abc + import decimal + + number_re = re.compile(r'^-?\d+(\.\d+)?$') +@@ -84,7 +83,7 @@ def test_mapping(value): + + .. versionadded:: 2.6 + """ +- return isinstance(value, Mapping) ++ return isinstance(value, abc.Mapping) + + + def test_number(value): +diff --git a/jinja2/utils.py b/jinja2/utils.py +index 083ea274..538b7745 100644 +--- a/jinja2/utils.py ++++ b/jinja2/utils.py +@@ -14,7 +14,7 @@ + from collections import deque + from threading import Lock + from jinja2._compat import text_type, string_types, implements_iterator, \ +- url_quote ++ url_quote, abc + + + _word_split_re = re.compile(r'(\s+)') +@@ -480,12 +480,7 @@ def __reversed__(self): + __copy__ = copy + + +-# register the LRU cache as mutable mapping if possible +-try: +- from collections import MutableMapping +- MutableMapping.register(LRUCache) +-except ImportError: +- pass ++abc.MutableMapping.register(LRUCache) + + + def select_autoescape(enabled_extensions=('html', 'htm', 'xml'),