diff options
Diffstat (limited to 'pendulum/utils')
-rw-r--r-- | pendulum/utils/_compat.py | 67 |
1 files changed, 13 insertions, 54 deletions
diff --git a/pendulum/utils/_compat.py b/pendulum/utils/_compat.py index 07cead1..8f32f9e 100644 --- a/pendulum/utils/_compat.py +++ b/pendulum/utils/_compat.py @@ -1,54 +1,13 @@ -import sys
-
-
-PY2 = sys.version_info < (3, 0)
-PY36 = sys.version_info >= (3, 6)
-PYPY = hasattr(sys, "pypy_version_info")
-
-_HAS_FOLD = PY36
-
-
-try: # Python 2
- long = long
- unicode = unicode
- basestring = basestring
-except NameError: # Python 3
- long = int
- unicode = str
- basestring = str
-
-
-def decode(string, encodings=None):
- if not PY2 and not isinstance(string, bytes):
- return string
-
- if PY2 and isinstance(string, unicode):
- return string
-
- encodings = encodings or ["utf-8", "latin1", "ascii"]
-
- for encoding in encodings:
- try:
- return string.decode(encoding)
- except (UnicodeEncodeError, UnicodeDecodeError):
- pass
-
- return string.decode(encodings[0], errors="ignore")
-
-
-def encode(string, encodings=None):
- if not PY2 and isinstance(string, bytes):
- return string
-
- if PY2 and isinstance(string, str):
- return string
-
- encodings = encodings or ["utf-8", "latin1", "ascii"]
-
- for encoding in encodings:
- try:
- return string.encode(encoding)
- except (UnicodeEncodeError, UnicodeDecodeError):
- pass
-
- return string.encode(encodings[0], errors="ignore")
+from __future__ import annotations + +import sys + +PYPY = hasattr(sys, "pypy_version_info") +PY38 = sys.version_info[:2] >= (3, 8) + +try: + from backports import zoneinfo +except ImportError: + import zoneinfo # type: ignore[no-redef] + +__all__ = ["zoneinfo"] |