summaryrefslogtreecommitdiffstats
path: root/pendulum/utils/_compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'pendulum/utils/_compat.py')
-rw-r--r--pendulum/utils/_compat.py67
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"]