7703043195
Our `jsonschema` external won't support Python 3.10, so we need to upgrade it. It currently generates this warning: lib/spack/external/jsonschema/compat.py:6: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working This upgrades `jsonschema` to 3.2.0, the latest version with support for Python 2.7. The next version after this (4.0.0) drops support for 2.7 and 3.6, so we'll have to wait to upgrade to it. Dependencies have been added in prior commits.
55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
"""
|
|
Python 2/3 compatibility helpers.
|
|
|
|
Note: This module is *not* public API.
|
|
"""
|
|
import contextlib
|
|
import operator
|
|
import sys
|
|
|
|
|
|
try:
|
|
from collections.abc import MutableMapping, Sequence # noqa
|
|
except ImportError:
|
|
from collections import MutableMapping, Sequence # noqa
|
|
|
|
PY3 = sys.version_info[0] >= 3
|
|
|
|
if PY3:
|
|
zip = zip
|
|
from functools import lru_cache
|
|
from io import StringIO as NativeIO
|
|
from urllib.parse import (
|
|
unquote, urljoin, urlunsplit, SplitResult, urlsplit
|
|
)
|
|
from urllib.request import pathname2url, urlopen
|
|
str_types = str,
|
|
int_types = int,
|
|
iteritems = operator.methodcaller("items")
|
|
else:
|
|
from itertools import izip as zip # noqa
|
|
from io import BytesIO as NativeIO
|
|
from urlparse import urljoin, urlunsplit, SplitResult, urlsplit
|
|
from urllib import pathname2url, unquote # noqa
|
|
import urllib2 # noqa
|
|
def urlopen(*args, **kwargs):
|
|
return contextlib.closing(urllib2.urlopen(*args, **kwargs))
|
|
|
|
str_types = basestring
|
|
int_types = int, long
|
|
iteritems = operator.methodcaller("iteritems")
|
|
|
|
from functools32 import lru_cache
|
|
|
|
|
|
def urldefrag(url):
|
|
if "#" in url:
|
|
s, n, p, q, frag = urlsplit(url)
|
|
defrag = urlunsplit((s, n, p, q, ""))
|
|
else:
|
|
defrag = url
|
|
frag = ""
|
|
return defrag, frag
|
|
|
|
|
|
# flake8: noqa
|