Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/arrow/constants.py: 100%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""Constants used internally in arrow."""
3import sys
4from datetime import datetime
6if sys.version_info < (3, 8): # pragma: no cover
7 from typing_extensions import Final
8else:
9 from typing import Final # pragma: no cover
11# datetime.max.timestamp() errors on Windows, so we must hardcode
12# the highest possible datetime value that can output a timestamp.
13# tl;dr platform-independent max timestamps are hard to form
14# See: https://stackoverflow.com/q/46133223
15try:
16 # Get max timestamp. Works on POSIX-based systems like Linux and macOS,
17 # but will trigger an OverflowError, ValueError, or OSError on Windows
18 _MAX_TIMESTAMP = datetime.max.timestamp()
19except (OverflowError, ValueError, OSError): # pragma: no cover
20 # Fallback for Windows and 32-bit systems if initial max timestamp call fails
21 # Must get max value of ctime on Windows based on architecture (x32 vs x64)
22 # https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64
23 # Note: this may occur on both 32-bit Linux systems (issue #930) along with Windows systems
24 is_64bits = sys.maxsize > 2**32
25 _MAX_TIMESTAMP = (
26 datetime(3000, 1, 1, 23, 59, 59, 999999).timestamp()
27 if is_64bits
28 else datetime(2038, 1, 1, 23, 59, 59, 999999).timestamp()
29 )
31MAX_TIMESTAMP: Final[float] = _MAX_TIMESTAMP
32MAX_TIMESTAMP_MS: Final[float] = MAX_TIMESTAMP * 1000
33MAX_TIMESTAMP_US: Final[float] = MAX_TIMESTAMP * 1_000_000
35MAX_ORDINAL: Final[int] = datetime.max.toordinal()
36MIN_ORDINAL: Final[int] = 1
38DEFAULT_LOCALE: Final[str] = "en-us"
40# Supported dehumanize locales
41DEHUMANIZE_LOCALES = {
42 "en",
43 "en-us",
44 "en-gb",
45 "en-au",
46 "en-be",
47 "en-jp",
48 "en-za",
49 "en-ca",
50 "en-ph",
51 "fr",
52 "fr-fr",
53 "fr-ca",
54 "it",
55 "it-it",
56 "es",
57 "es-es",
58 "el",
59 "el-gr",
60 "ja",
61 "ja-jp",
62 "se",
63 "se-fi",
64 "se-no",
65 "se-se",
66 "sv",
67 "sv-se",
68 "fi",
69 "fi-fi",
70 "zh",
71 "zh-cn",
72 "zh-tw",
73 "zh-hk",
74 "nl",
75 "nl-nl",
76 "be",
77 "be-by",
78 "pl",
79 "pl-pl",
80 "ru",
81 "ru-ru",
82 "af",
83 "bg",
84 "bg-bg",
85 "ua",
86 "uk",
87 "uk-ua",
88 "mk",
89 "mk-mk",
90 "de",
91 "de-de",
92 "de-ch",
93 "de-at",
94 "nb",
95 "nb-no",
96 "nn",
97 "nn-no",
98 "pt",
99 "pt-pt",
100 "pt-br",
101 "tl",
102 "tl-ph",
103 "vi",
104 "vi-vn",
105 "tr",
106 "tr-tr",
107 "az",
108 "az-az",
109 "da",
110 "da-dk",
111 "ml",
112 "hi",
113 "cs",
114 "cs-cz",
115 "sk",
116 "sk-sk",
117 "fa",
118 "fa-ir",
119 "mr",
120 "ca",
121 "ca-es",
122 "ca-ad",
123 "ca-fr",
124 "ca-it",
125 "eo",
126 "eo-xx",
127 "bn",
128 "bn-bd",
129 "bn-in",
130 "rm",
131 "rm-ch",
132 "ro",
133 "ro-ro",
134 "sl",
135 "sl-si",
136 "id",
137 "id-id",
138 "ne",
139 "ne-np",
140 "ee",
141 "et",
142 "sw",
143 "sw-ke",
144 "sw-tz",
145 "la",
146 "la-va",
147 "lt",
148 "lt-lt",
149 "ms",
150 "ms-my",
151 "ms-bn",
152 "or",
153 "or-in",
154 "lb",
155 "lb-lu",
156 "zu",
157 "zu-za",
158 "sq",
159 "sq-al",
160 "ta",
161 "ta-in",
162 "ta-lk",
163 "ur",
164 "ur-pk",
165 "ka",
166 "ka-ge",
167 "kk",
168 "kk-kz",
169 # "lo",
170 # "lo-la",
171 "am",
172 "am-et",
173 "hy-am",
174 "hy",
175 "uz",
176 "uz-uz",
177}