* python38.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Jinja2?expand=0&rev=72
188 lines
5.6 KiB
Diff
188 lines
5.6 KiB
Diff
From 31bf9b7e71c3fee3b7866ffdc0f70f4525a490d9 Mon Sep 17 00:00:00 2001
|
|
From: Florian Bruhin <git@the-compiler.org>
|
|
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'),
|