Coverage for /home/martinb/.local/share/virtualenvs/camcops/lib/python3.6/site-packages/pendulum/utils/_compat.py : 35%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import sys
4PY2 = sys.version_info < (3, 0)
5PY36 = sys.version_info >= (3, 6)
6PYPY = hasattr(sys, "pypy_version_info")
8_HAS_FOLD = PY36
11try: # Python 2
12 long = long
13 unicode = unicode
14 basestring = basestring
15except NameError: # Python 3
16 long = int
17 unicode = str
18 basestring = str
21def decode(string, encodings=None):
22 if not PY2 and not isinstance(string, bytes):
23 return string
25 if PY2 and isinstance(string, unicode):
26 return string
28 encodings = encodings or ["utf-8", "latin1", "ascii"]
30 for encoding in encodings:
31 try:
32 return string.decode(encoding)
33 except (UnicodeEncodeError, UnicodeDecodeError):
34 pass
36 return string.decode(encodings[0], errors="ignore")
39def encode(string, encodings=None):
40 if not PY2 and isinstance(string, bytes):
41 return string
43 if PY2 and isinstance(string, str):
44 return string
46 encodings = encodings or ["utf-8", "latin1", "ascii"]
48 for encoding in encodings:
49 try:
50 return string.encode(encoding)
51 except (UnicodeEncodeError, UnicodeDecodeError):
52 pass
54 return string.encode(encodings[0], errors="ignore")