appier 1.31.4__py2.py3-none-any.whl → 1.32.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- appier/__init__.py +333 -52
- appier/amqp.py +29 -30
- appier/api.py +214 -212
- appier/asgi.py +54 -55
- appier/async_neo.py +46 -35
- appier/async_old.py +55 -42
- appier/asynchronous.py +7 -13
- appier/base.py +1762 -1429
- appier/bus.py +51 -52
- appier/cache.py +99 -84
- appier/common.py +9 -11
- appier/component.py +17 -19
- appier/compress.py +25 -28
- appier/config.py +96 -73
- appier/controller.py +9 -15
- appier/crypt.py +25 -21
- appier/data.py +73 -57
- appier/defines.py +191 -226
- appier/exceptions.py +103 -63
- appier/execution.py +94 -88
- appier/export.py +90 -88
- appier/extra.py +6 -13
- appier/extra_neo.py +8 -11
- appier/extra_old.py +18 -16
- appier/geo.py +57 -47
- appier/git.py +101 -90
- appier/graph.py +23 -24
- appier/http.py +520 -398
- appier/legacy.py +373 -180
- appier/log.py +90 -97
- appier/meta.py +42 -42
- appier/mock.py +32 -34
- appier/model.py +793 -681
- appier/model_a.py +208 -183
- appier/mongo.py +183 -107
- appier/observer.py +39 -31
- appier/part.py +23 -24
- appier/preferences.py +44 -47
- appier/queuing.py +78 -96
- appier/redisdb.py +40 -35
- appier/request.py +227 -175
- appier/scheduler.py +13 -18
- appier/serialize.py +37 -31
- appier/session.py +161 -147
- appier/settings.py +2 -11
- appier/smtp.py +53 -49
- appier/storage.py +39 -33
- appier/structures.py +50 -45
- appier/test/__init__.py +2 -11
- appier/test/base.py +111 -108
- appier/test/cache.py +28 -35
- appier/test/config.py +10 -19
- appier/test/crypt.py +3 -12
- appier/test/data.py +3 -12
- appier/test/exceptions.py +8 -17
- appier/test/export.py +16 -33
- appier/test/graph.py +27 -60
- appier/test/http.py +42 -54
- appier/test/legacy.py +20 -30
- appier/test/log.py +14 -35
- appier/test/mock.py +27 -123
- appier/test/model.py +79 -91
- appier/test/part.py +5 -14
- appier/test/preferences.py +5 -13
- appier/test/queuing.py +29 -37
- appier/test/request.py +61 -73
- appier/test/serialize.py +12 -23
- appier/test/session.py +10 -19
- appier/test/smtp.py +8 -14
- appier/test/structures.py +20 -24
- appier/test/typesf.py +14 -28
- appier/test/util.py +480 -438
- appier/typesf.py +251 -171
- appier/util.py +578 -407
- appier/validation.py +280 -143
- {appier-1.31.4.dist-info → appier-1.32.0.dist-info}/METADATA +6 -1
- appier-1.32.0.dist-info/RECORD +86 -0
- appier-1.31.4.dist-info/RECORD +0 -86
- {appier-1.31.4.dist-info → appier-1.32.0.dist-info}/LICENSE +0 -0
- {appier-1.31.4.dist-info → appier-1.32.0.dist-info}/WHEEL +0 -0
- {appier-1.31.4.dist-info → appier-1.32.0.dist-info}/top_level.txt +0 -0
appier/defines.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
|
|
4
4
|
# Hive Appier Framework
|
|
5
|
-
# Copyright (c) 2008-
|
|
5
|
+
# Copyright (c) 2008-2024 Hive Solutions Lda.
|
|
6
6
|
#
|
|
7
7
|
# This file is part of Hive Appier Framework.
|
|
8
8
|
#
|
|
@@ -22,16 +22,7 @@
|
|
|
22
22
|
__author__ = "João Magalhães <joamag@hive.pt>"
|
|
23
23
|
""" The author(s) of the module """
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
""" The version of the module """
|
|
27
|
-
|
|
28
|
-
__revision__ = "$LastChangedRevision$"
|
|
29
|
-
""" The revision number of the module """
|
|
30
|
-
|
|
31
|
-
__date__ = "$LastChangedDate$"
|
|
32
|
-
""" The last change date of the module """
|
|
33
|
-
|
|
34
|
-
__copyright__ = "Copyright (c) 2008-2022 Hive Solutions Lda."
|
|
25
|
+
__copyright__ = "Copyright (c) 2008-2024 Hive Solutions Lda."
|
|
35
26
|
""" The copyright for the module """
|
|
36
27
|
|
|
37
28
|
__license__ = "Apache License, Version 2.0"
|
|
@@ -47,19 +38,28 @@ ITERABLES = (list, tuple)
|
|
|
47
38
|
""" The tuple that defined the various base types
|
|
48
39
|
that are considered to be generally "iterable" """
|
|
49
40
|
|
|
50
|
-
MOBILE_REGEX = re.compile(
|
|
41
|
+
MOBILE_REGEX = re.compile(
|
|
42
|
+
r"(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino",
|
|
43
|
+
re.I | re.M,
|
|
44
|
+
) # @UndefinedVariable
|
|
51
45
|
""" The regular expression that is going to be used
|
|
52
46
|
to validate the complete user agent string for mobile """
|
|
53
47
|
|
|
54
|
-
TABLET_REGEX = re.compile(
|
|
48
|
+
TABLET_REGEX = re.compile(
|
|
49
|
+
r"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk",
|
|
50
|
+
re.I | re.M,
|
|
51
|
+
) # @UndefinedVariable
|
|
55
52
|
""" The regular expression that is going to be used
|
|
56
53
|
to validate the complete user agent string for tablet """
|
|
57
54
|
|
|
58
|
-
MOBILE_PREFIX_REGEX = re.compile(
|
|
55
|
+
MOBILE_PREFIX_REGEX = re.compile(
|
|
56
|
+
r"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-",
|
|
57
|
+
re.I | re.M,
|
|
58
|
+
) # @UndefinedVariable
|
|
59
59
|
""" The regular expression to test the base prefix
|
|
60
60
|
of the user agent string for mobile browser """
|
|
61
61
|
|
|
62
|
-
BODY_REGEX = re.compile(r"<body[^<>]*?>(.*?)</body>", re.I)
|
|
62
|
+
BODY_REGEX = re.compile(r"<body[^<>]*?>(.*?)</body>", re.I) # @UndefinedVariable
|
|
63
63
|
""" Regular expression that is going to be used in the matching
|
|
64
64
|
of the partial contents (child) nodes of a body HTML node """
|
|
65
65
|
|
|
@@ -69,230 +69,195 @@ of an html/xml based node in the HTML to plain text conversion """
|
|
|
69
69
|
|
|
70
70
|
EMAIL_REGEX = re.compile(
|
|
71
71
|
r"((?P<name>^.+) \<(?P<email_a>[\w\d\._%+-]+@[\w\d\.\-]+)\>)|(?P<email_b>[\w\d\._%+-]+@[\w\d\.\-]+)$",
|
|
72
|
-
flags
|
|
72
|
+
flags=re.UNICODE, # @UndefinedVariable
|
|
73
73
|
)
|
|
74
74
|
""" The regular expression that is going to be used
|
|
75
75
|
in the matching of email lines, it supports both the
|
|
76
76
|
extended (including name) and the simplified versions """
|
|
77
77
|
|
|
78
|
-
BROWSER_INFO = [
|
|
79
|
-
identity =
|
|
80
|
-
sub_string
|
|
81
|
-
),
|
|
82
|
-
identity
|
|
83
|
-
sub_string
|
|
84
|
-
),
|
|
85
|
-
identity =
|
|
86
|
-
sub_string =
|
|
87
|
-
),
|
|
88
|
-
identity =
|
|
89
|
-
),
|
|
90
|
-
|
|
91
|
-
sub_string = "Firefox"
|
|
92
|
-
), dict(
|
|
93
|
-
identity = "Explorer",
|
|
94
|
-
sub_string = "MSIE",
|
|
95
|
-
version_search = "MSIE "
|
|
96
|
-
), dict(
|
|
97
|
-
identity = "AppleWebKit",
|
|
98
|
-
sub_string = "AppleWebKit"
|
|
99
|
-
), dict(
|
|
100
|
-
identity = "Googlebot",
|
|
101
|
-
sub_string = "Googlebot",
|
|
102
|
-
interactive = False,
|
|
103
|
-
bot = True
|
|
104
|
-
), dict(
|
|
105
|
-
identity = "Bingbot",
|
|
106
|
-
sub_string = "Bingbot",
|
|
107
|
-
interactive = False,
|
|
108
|
-
bot = True
|
|
109
|
-
), dict(
|
|
110
|
-
identity = "DuckDuckBot",
|
|
111
|
-
sub_string = "DuckDuckBot",
|
|
112
|
-
interactive = False,
|
|
113
|
-
bot = True
|
|
114
|
-
), dict(
|
|
115
|
-
identity = "netius",
|
|
116
|
-
sub_string = "netius",
|
|
117
|
-
interactive = False
|
|
118
|
-
)]
|
|
78
|
+
BROWSER_INFO = [
|
|
79
|
+
dict(identity="Edge", sub_string="Edge"),
|
|
80
|
+
dict(identity="Chrome", sub_string="Chrome"),
|
|
81
|
+
dict(identity="Safari", sub_string="Safari"),
|
|
82
|
+
dict(identity="Opera"),
|
|
83
|
+
dict(identity="Firefox", sub_string="Firefox"),
|
|
84
|
+
dict(identity="Explorer", sub_string="MSIE", version_search="MSIE "),
|
|
85
|
+
dict(identity="AppleWebKit", sub_string="AppleWebKit"),
|
|
86
|
+
dict(identity="Googlebot", sub_string="Googlebot", interactive=False, bot=True),
|
|
87
|
+
dict(identity="Bingbot", sub_string="Bingbot", interactive=False, bot=True),
|
|
88
|
+
dict(identity="DuckDuckBot", sub_string="DuckDuckBot", interactive=False, bot=True),
|
|
89
|
+
dict(identity="netius", sub_string="netius", interactive=False),
|
|
90
|
+
]
|
|
119
91
|
""" List that contains the complete information used
|
|
120
92
|
for the parsing and identification of the browser information
|
|
121
93
|
from a typical user agent string """
|
|
122
94
|
|
|
123
|
-
OS_INFO = [
|
|
124
|
-
identity
|
|
125
|
-
sub_string
|
|
126
|
-
),
|
|
127
|
-
identity
|
|
128
|
-
|
|
129
|
-
), dict(
|
|
130
|
-
identity = "iPhone/iPod",
|
|
131
|
-
sub_string = "iPhone"
|
|
132
|
-
), dict(
|
|
133
|
-
sub_string = "Linux",
|
|
134
|
-
identity = "Linux"
|
|
135
|
-
)]
|
|
95
|
+
OS_INFO = [
|
|
96
|
+
dict(identity="Windows", sub_string="Win"),
|
|
97
|
+
dict(identity="Mac", sub_string="Mac"),
|
|
98
|
+
dict(identity="iPhone/iPod", sub_string="iPhone"),
|
|
99
|
+
dict(sub_string="Linux", identity="Linux"),
|
|
100
|
+
]
|
|
136
101
|
""" List that contains the complete information used
|
|
137
102
|
for the parsing and identification of the os information
|
|
138
103
|
from a typical user agent string """
|
|
139
104
|
|
|
140
105
|
WINDOWS_LOCALE = dict(
|
|
141
|
-
af
|
|
142
|
-
sq
|
|
143
|
-
am
|
|
144
|
-
ar_DZ
|
|
145
|
-
ar_BH
|
|
146
|
-
ar_EG
|
|
147
|
-
ar_IQ
|
|
148
|
-
ar_JO
|
|
149
|
-
ar_KW
|
|
150
|
-
ar_LB
|
|
151
|
-
ar_LY
|
|
152
|
-
ar_MA
|
|
153
|
-
ar_OM
|
|
154
|
-
ar_QA
|
|
155
|
-
ar_SA
|
|
156
|
-
ar_SY
|
|
157
|
-
ar_TN
|
|
158
|
-
ar_AE
|
|
159
|
-
ar_YE
|
|
160
|
-
hy
|
|
161
|
-
az_AZ
|
|
162
|
-
eu
|
|
163
|
-
be
|
|
164
|
-
bn
|
|
165
|
-
bs
|
|
166
|
-
bg
|
|
167
|
-
my
|
|
168
|
-
ca
|
|
169
|
-
zh_CN
|
|
170
|
-
zh_HK
|
|
171
|
-
zh_MO
|
|
172
|
-
zh_SG
|
|
173
|
-
zh_TW
|
|
174
|
-
hr
|
|
175
|
-
cs
|
|
176
|
-
da
|
|
177
|
-
dv
|
|
178
|
-
nl_BE
|
|
179
|
-
nl_NL
|
|
180
|
-
en_AU
|
|
181
|
-
en_BZ
|
|
182
|
-
en_CA
|
|
183
|
-
en_CB
|
|
184
|
-
en_GB
|
|
185
|
-
en_IN
|
|
186
|
-
en_IE
|
|
187
|
-
en_JM
|
|
188
|
-
en_NZ
|
|
189
|
-
en_PH
|
|
190
|
-
en_ZA
|
|
191
|
-
en_TT
|
|
192
|
-
en_US
|
|
193
|
-
et
|
|
194
|
-
fo
|
|
195
|
-
fa
|
|
196
|
-
fi
|
|
197
|
-
fr_BE
|
|
198
|
-
fr_CA
|
|
199
|
-
fr_FR
|
|
200
|
-
fr_LU
|
|
201
|
-
fr_CH
|
|
202
|
-
mk
|
|
203
|
-
gd_IE
|
|
204
|
-
gd
|
|
205
|
-
de_AT
|
|
206
|
-
de_DE
|
|
207
|
-
de_LI
|
|
208
|
-
de_LU
|
|
209
|
-
de_CH
|
|
210
|
-
el
|
|
211
|
-
gn
|
|
212
|
-
gu
|
|
213
|
-
he
|
|
214
|
-
hi
|
|
215
|
-
hu
|
|
216
|
-
id
|
|
217
|
-
it_IT
|
|
218
|
-
it_CH
|
|
219
|
-
ja
|
|
220
|
-
kn
|
|
221
|
-
ks
|
|
222
|
-
kk
|
|
223
|
-
km
|
|
224
|
-
ko
|
|
225
|
-
lo
|
|
226
|
-
la
|
|
227
|
-
lv
|
|
228
|
-
lt
|
|
229
|
-
ms_BN
|
|
230
|
-
ms_MY
|
|
231
|
-
ml
|
|
232
|
-
mt
|
|
233
|
-
mi
|
|
234
|
-
mr
|
|
235
|
-
mn
|
|
236
|
-
ne
|
|
237
|
-
no_NO
|
|
238
|
-
pl
|
|
239
|
-
pt_BR
|
|
240
|
-
pt_PT
|
|
241
|
-
pa
|
|
242
|
-
rm
|
|
243
|
-
ro_MO
|
|
244
|
-
ro
|
|
245
|
-
ru
|
|
246
|
-
ru_MO
|
|
247
|
-
sa
|
|
248
|
-
sr_SP
|
|
249
|
-
tn
|
|
250
|
-
sd
|
|
251
|
-
si
|
|
252
|
-
sk
|
|
253
|
-
sl
|
|
254
|
-
so
|
|
255
|
-
sb
|
|
256
|
-
es_AR
|
|
257
|
-
es_BO
|
|
258
|
-
es_CL
|
|
259
|
-
es_CO
|
|
260
|
-
es_CR
|
|
261
|
-
es_DO
|
|
262
|
-
es_EC
|
|
263
|
-
es_SV
|
|
264
|
-
es_GT
|
|
265
|
-
es_HN
|
|
266
|
-
es_MX
|
|
267
|
-
es_NI
|
|
268
|
-
es_PA
|
|
269
|
-
es_PY
|
|
270
|
-
es_PE
|
|
271
|
-
es_PR
|
|
272
|
-
es_ES
|
|
273
|
-
es_UY
|
|
274
|
-
es_VE
|
|
275
|
-
sw
|
|
276
|
-
sv_FI
|
|
277
|
-
sv_SE
|
|
278
|
-
tg
|
|
279
|
-
ta
|
|
280
|
-
tt
|
|
281
|
-
te
|
|
282
|
-
th
|
|
283
|
-
bo
|
|
284
|
-
ts
|
|
285
|
-
tr
|
|
286
|
-
tk
|
|
287
|
-
uk
|
|
288
|
-
UTF_8
|
|
289
|
-
ur
|
|
290
|
-
uz_UZ
|
|
291
|
-
vi
|
|
292
|
-
cy
|
|
293
|
-
xh
|
|
294
|
-
yi
|
|
295
|
-
zu
|
|
106
|
+
af="Afrikaans",
|
|
107
|
+
sq="Albanian",
|
|
108
|
+
am="Amharic",
|
|
109
|
+
ar_DZ="Arabic_Algeria",
|
|
110
|
+
ar_BH="Arabic_Bahrain",
|
|
111
|
+
ar_EG="Arabic_Egypt",
|
|
112
|
+
ar_IQ="Arabic_Iraq",
|
|
113
|
+
ar_JO="Arabic_Jordan",
|
|
114
|
+
ar_KW="Arabic_Kuwait",
|
|
115
|
+
ar_LB="Arabic_Lebanon",
|
|
116
|
+
ar_LY="Arabic_Libya",
|
|
117
|
+
ar_MA="Arabic_Morocco",
|
|
118
|
+
ar_OM="Arabic_Oman",
|
|
119
|
+
ar_QA="Arabic_Qatar",
|
|
120
|
+
ar_SA="Arabic_Saudi Arabia",
|
|
121
|
+
ar_SY="Arabic_Syria",
|
|
122
|
+
ar_TN="Arabic_Tunisia",
|
|
123
|
+
ar_AE="Arabic_United Arab Emirates",
|
|
124
|
+
ar_YE="Arabic_Yemen",
|
|
125
|
+
hy="Armenian",
|
|
126
|
+
az_AZ="Azeri_Cyrillic",
|
|
127
|
+
eu="Basque",
|
|
128
|
+
be="Belarusian",
|
|
129
|
+
bn="Bengali_Bangladesh",
|
|
130
|
+
bs="Bosnian",
|
|
131
|
+
bg="Bulgarian",
|
|
132
|
+
my="Burmese",
|
|
133
|
+
ca="Catalan",
|
|
134
|
+
zh_CN="Chinese_China",
|
|
135
|
+
zh_HK="Chinese_Hong Kong SAR",
|
|
136
|
+
zh_MO="Chinese_Macau SAR",
|
|
137
|
+
zh_SG="Chinese_Singapore",
|
|
138
|
+
zh_TW="Chinese_Taiwan",
|
|
139
|
+
hr="Croatian",
|
|
140
|
+
cs="Czech",
|
|
141
|
+
da="Danish",
|
|
142
|
+
dv="Divehi; Dhivehi; Maldivian",
|
|
143
|
+
nl_BE="Dutch_Belgium",
|
|
144
|
+
nl_NL="Dutch_Netherlands",
|
|
145
|
+
en_AU="English_Australia",
|
|
146
|
+
en_BZ="English_Belize",
|
|
147
|
+
en_CA="English_Canada",
|
|
148
|
+
en_CB="English_Caribbean",
|
|
149
|
+
en_GB="English_Great Britain",
|
|
150
|
+
en_IN="English_India",
|
|
151
|
+
en_IE="English_Ireland",
|
|
152
|
+
en_JM="English_Jamaica",
|
|
153
|
+
en_NZ="English_New Zealand",
|
|
154
|
+
en_PH="English_Phillippines",
|
|
155
|
+
en_ZA="English_Southern Africa",
|
|
156
|
+
en_TT="English_Trinidad",
|
|
157
|
+
en_US="English_United States",
|
|
158
|
+
et="Estonian",
|
|
159
|
+
fo="Faroese",
|
|
160
|
+
fa="Farsi_Persian",
|
|
161
|
+
fi="Finnish",
|
|
162
|
+
fr_BE="French_Belgium",
|
|
163
|
+
fr_CA="French_Canada",
|
|
164
|
+
fr_FR="French_France",
|
|
165
|
+
fr_LU="French_Luxembourg",
|
|
166
|
+
fr_CH="French_Switzerland",
|
|
167
|
+
mk="FYRO Macedonia",
|
|
168
|
+
gd_IE="Gaelic_Ireland",
|
|
169
|
+
gd="Gaelic_Scotland",
|
|
170
|
+
de_AT="German_Austria",
|
|
171
|
+
de_DE="German_Germany",
|
|
172
|
+
de_LI="German_Liechtenstein",
|
|
173
|
+
de_LU="German_Luxembourg",
|
|
174
|
+
de_CH="German_Switzerland",
|
|
175
|
+
el="Greek",
|
|
176
|
+
gn="Guarani_Paraguay",
|
|
177
|
+
gu="Gujarati",
|
|
178
|
+
he="Hebrew",
|
|
179
|
+
hi="Hindi",
|
|
180
|
+
hu="Hungarian",
|
|
181
|
+
id="Indonesian",
|
|
182
|
+
it_IT="Italian_Italy",
|
|
183
|
+
it_CH="Italian_Switzerland",
|
|
184
|
+
ja="Japanese",
|
|
185
|
+
kn="Kannada",
|
|
186
|
+
ks="Kashmiri",
|
|
187
|
+
kk="Kazakh",
|
|
188
|
+
km="Khmer",
|
|
189
|
+
ko="Korean",
|
|
190
|
+
lo="Lao",
|
|
191
|
+
la="Latin",
|
|
192
|
+
lv="Latvian",
|
|
193
|
+
lt="Lithuanian",
|
|
194
|
+
ms_BN="Malay_Brunei",
|
|
195
|
+
ms_MY="Malay_Malaysia",
|
|
196
|
+
ml="Malayalam",
|
|
197
|
+
mt="Maltese",
|
|
198
|
+
mi="Maori",
|
|
199
|
+
mr="Marathi",
|
|
200
|
+
mn="Mongolian",
|
|
201
|
+
ne="Nepali",
|
|
202
|
+
no_NO="Norwegian_Bokml",
|
|
203
|
+
pl="Polish",
|
|
204
|
+
pt_BR="Portuguese_Brazil",
|
|
205
|
+
pt_PT="Portuguese_Portugal",
|
|
206
|
+
pa="Punjabi",
|
|
207
|
+
rm="Raeto-Romance",
|
|
208
|
+
ro_MO="Romanian_Moldova",
|
|
209
|
+
ro="Romanian_Romania",
|
|
210
|
+
ru="Russian",
|
|
211
|
+
ru_MO="Russian_Moldova",
|
|
212
|
+
sa="Sanskrit",
|
|
213
|
+
sr_SP="Serbian_Cyrillic",
|
|
214
|
+
tn="Setsuana",
|
|
215
|
+
sd="Sindhi",
|
|
216
|
+
si="Sinhala; Sinhalese",
|
|
217
|
+
sk="Slovak",
|
|
218
|
+
sl="Slovenian",
|
|
219
|
+
so="Somali",
|
|
220
|
+
sb="Sorbian",
|
|
221
|
+
es_AR="Spanish_Argentina",
|
|
222
|
+
es_BO="Spanish_Bolivia",
|
|
223
|
+
es_CL="Spanish_Chile",
|
|
224
|
+
es_CO="Spanish_Colombia",
|
|
225
|
+
es_CR="Spanish_Costa Rica",
|
|
226
|
+
es_DO="Spanish_Dominican Republic",
|
|
227
|
+
es_EC="Spanish_Ecuador",
|
|
228
|
+
es_SV="Spanish_El Salvador",
|
|
229
|
+
es_GT="Spanish_Guatemala",
|
|
230
|
+
es_HN="Spanish_Honduras",
|
|
231
|
+
es_MX="Spanish_Mexico",
|
|
232
|
+
es_NI="Spanish_Nicaragua",
|
|
233
|
+
es_PA="Spanish_Panama",
|
|
234
|
+
es_PY="Spanish_Paraguay",
|
|
235
|
+
es_PE="Spanish_Peru",
|
|
236
|
+
es_PR="Spanish_Puerto Rico",
|
|
237
|
+
es_ES="Spanish_Spain (Traditional)",
|
|
238
|
+
es_UY="Spanish_Uruguay",
|
|
239
|
+
es_VE="Spanish_Venezuela",
|
|
240
|
+
sw="Swahili",
|
|
241
|
+
sv_FI="Swedish_Finland",
|
|
242
|
+
sv_SE="Swedish_Sweden",
|
|
243
|
+
tg="Tajik",
|
|
244
|
+
ta="Tamil",
|
|
245
|
+
tt="Tatar",
|
|
246
|
+
te="Telugu",
|
|
247
|
+
th="Thai",
|
|
248
|
+
bo="Tibetan",
|
|
249
|
+
ts="Tsonga",
|
|
250
|
+
tr="Turkish",
|
|
251
|
+
tk="Turkmen",
|
|
252
|
+
uk="Ukrainian",
|
|
253
|
+
UTF_8="Unicode",
|
|
254
|
+
ur="Urdu",
|
|
255
|
+
uz_UZ="Uzbek_Cyrillic",
|
|
256
|
+
vi="Vietnamese",
|
|
257
|
+
cy="Welsh",
|
|
258
|
+
xh="Xhosa",
|
|
259
|
+
yi="Yiddish",
|
|
260
|
+
zu="Zulu",
|
|
296
261
|
)
|
|
297
262
|
""" The map containing the associations between the
|
|
298
263
|
normalized version/descriptor of the locale and the
|
|
@@ -319,7 +284,7 @@ SLUG_PERMUTATIONS = (
|
|
|
319
284
|
("ü", "u"),
|
|
320
285
|
("ÿ", "y"),
|
|
321
286
|
("æ", "ae"),
|
|
322
|
-
("œ", "oe")
|
|
287
|
+
("œ", "oe"),
|
|
323
288
|
)
|
|
324
289
|
""" The complete set of permutation tuples to be used in
|
|
325
290
|
a slug based simplification process """
|