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

11 statements  

1"""Constants used internally in arrow.""" 

2 

3import sys 

4from datetime import datetime 

5 

6if sys.version_info < (3, 8): # pragma: no cover 

7 from typing_extensions import Final 

8else: 

9 from typing import Final # pragma: no cover 

10 

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 ) 

30 

31MAX_TIMESTAMP: Final[float] = _MAX_TIMESTAMP 

32MAX_TIMESTAMP_MS: Final[float] = MAX_TIMESTAMP * 1000 

33MAX_TIMESTAMP_US: Final[float] = MAX_TIMESTAMP * 1_000_000 

34 

35MAX_ORDINAL: Final[int] = datetime.max.toordinal() 

36MIN_ORDINAL: Final[int] = 1 

37 

38DEFAULT_LOCALE: Final[str] = "en-us" 

39 

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}