dateparser 1.2.1__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.
- dateparser/__init__.py +82 -0
- dateparser/calendars/__init__.py +144 -0
- dateparser/calendars/hijri.py +6 -0
- dateparser/calendars/hijri_parser.py +60 -0
- dateparser/calendars/jalali.py +9 -0
- dateparser/calendars/jalali_parser.py +184 -0
- dateparser/conf.py +267 -0
- dateparser/custom_language_detection/__init__.py +0 -0
- dateparser/custom_language_detection/fasttext.py +43 -0
- dateparser/custom_language_detection/langdetect.py +37 -0
- dateparser/custom_language_detection/language_mapping.py +18 -0
- dateparser/data/__init__.py +2 -0
- dateparser/data/date_translation_data/__init__.py +0 -0
- dateparser/data/date_translation_data/af.py +242 -0
- dateparser/data/date_translation_data/agq.py +169 -0
- dateparser/data/date_translation_data/ak.py +169 -0
- dateparser/data/date_translation_data/am.py +222 -0
- dateparser/data/date_translation_data/ar.py +574 -0
- dateparser/data/date_translation_data/as.py +164 -0
- dateparser/data/date_translation_data/asa.py +168 -0
- dateparser/data/date_translation_data/ast.py +280 -0
- dateparser/data/date_translation_data/az-Cyrl.py +168 -0
- dateparser/data/date_translation_data/az-Latn.py +217 -0
- dateparser/data/date_translation_data/az.py +217 -0
- dateparser/data/date_translation_data/bas.py +169 -0
- dateparser/data/date_translation_data/be.py +340 -0
- dateparser/data/date_translation_data/bem.py +161 -0
- dateparser/data/date_translation_data/bez.py +169 -0
- dateparser/data/date_translation_data/bg.py +345 -0
- dateparser/data/date_translation_data/bm.py +167 -0
- dateparser/data/date_translation_data/bn.py +241 -0
- dateparser/data/date_translation_data/bo.py +185 -0
- dateparser/data/date_translation_data/br.py +226 -0
- dateparser/data/date_translation_data/brx.py +157 -0
- dateparser/data/date_translation_data/bs-Cyrl.py +226 -0
- dateparser/data/date_translation_data/bs-Latn.py +248 -0
- dateparser/data/date_translation_data/bs.py +248 -0
- dateparser/data/date_translation_data/ca.py +313 -0
- dateparser/data/date_translation_data/ce.py +225 -0
- dateparser/data/date_translation_data/cgg.py +169 -0
- dateparser/data/date_translation_data/chr.py +240 -0
- dateparser/data/date_translation_data/ckb.py +154 -0
- dateparser/data/date_translation_data/cs.py +316 -0
- dateparser/data/date_translation_data/cy.py +217 -0
- dateparser/data/date_translation_data/da.py +296 -0
- dateparser/data/date_translation_data/dav.py +169 -0
- dateparser/data/date_translation_data/de.py +357 -0
- dateparser/data/date_translation_data/dje.py +167 -0
- dateparser/data/date_translation_data/dsb.py +270 -0
- dateparser/data/date_translation_data/dua.py +169 -0
- dateparser/data/date_translation_data/dyo.py +168 -0
- dateparser/data/date_translation_data/dz.py +225 -0
- dateparser/data/date_translation_data/ebu.py +169 -0
- dateparser/data/date_translation_data/ee.py +233 -0
- dateparser/data/date_translation_data/el.py +279 -0
- dateparser/data/date_translation_data/en.py +851 -0
- dateparser/data/date_translation_data/eo.py +169 -0
- dateparser/data/date_translation_data/es.py +499 -0
- dateparser/data/date_translation_data/et.py +233 -0
- dateparser/data/date_translation_data/eu.py +219 -0
- dateparser/data/date_translation_data/ewo.py +169 -0
- dateparser/data/date_translation_data/fa.py +270 -0
- dateparser/data/date_translation_data/ff.py +179 -0
- dateparser/data/date_translation_data/fi.py +345 -0
- dateparser/data/date_translation_data/fil.py +223 -0
- dateparser/data/date_translation_data/fo.py +256 -0
- dateparser/data/date_translation_data/fr.py +520 -0
- dateparser/data/date_translation_data/fur.py +223 -0
- dateparser/data/date_translation_data/fy.py +223 -0
- dateparser/data/date_translation_data/ga.py +238 -0
- dateparser/data/date_translation_data/gd.py +277 -0
- dateparser/data/date_translation_data/gl.py +253 -0
- dateparser/data/date_translation_data/gsw.py +179 -0
- dateparser/data/date_translation_data/gu.py +216 -0
- dateparser/data/date_translation_data/guz.py +170 -0
- dateparser/data/date_translation_data/gv.py +166 -0
- dateparser/data/date_translation_data/ha.py +176 -0
- dateparser/data/date_translation_data/haw.py +168 -0
- dateparser/data/date_translation_data/he.py +371 -0
- dateparser/data/date_translation_data/hi.py +261 -0
- dateparser/data/date_translation_data/hr.py +378 -0
- dateparser/data/date_translation_data/hsb.py +271 -0
- dateparser/data/date_translation_data/hu.py +297 -0
- dateparser/data/date_translation_data/hy.py +246 -0
- dateparser/data/date_translation_data/id.py +272 -0
- dateparser/data/date_translation_data/ig.py +168 -0
- dateparser/data/date_translation_data/ii.py +157 -0
- dateparser/data/date_translation_data/is.py +242 -0
- dateparser/data/date_translation_data/it.py +282 -0
- dateparser/data/date_translation_data/ja.py +286 -0
- dateparser/data/date_translation_data/jgo.py +188 -0
- dateparser/data/date_translation_data/jmc.py +168 -0
- dateparser/data/date_translation_data/ka.py +241 -0
- dateparser/data/date_translation_data/kab.py +169 -0
- dateparser/data/date_translation_data/kam.py +169 -0
- dateparser/data/date_translation_data/kde.py +169 -0
- dateparser/data/date_translation_data/kea.py +230 -0
- dateparser/data/date_translation_data/khq.py +167 -0
- dateparser/data/date_translation_data/ki.py +169 -0
- dateparser/data/date_translation_data/kk.py +228 -0
- dateparser/data/date_translation_data/kl.py +213 -0
- dateparser/data/date_translation_data/kln.py +171 -0
- dateparser/data/date_translation_data/km.py +198 -0
- dateparser/data/date_translation_data/kn.py +225 -0
- dateparser/data/date_translation_data/ko.py +207 -0
- dateparser/data/date_translation_data/kok.py +157 -0
- dateparser/data/date_translation_data/ks.py +152 -0
- dateparser/data/date_translation_data/ksb.py +168 -0
- dateparser/data/date_translation_data/ksf.py +169 -0
- dateparser/data/date_translation_data/ksh.py +192 -0
- dateparser/data/date_translation_data/kw.py +169 -0
- dateparser/data/date_translation_data/ky.py +240 -0
- dateparser/data/date_translation_data/lag.py +169 -0
- dateparser/data/date_translation_data/lb.py +233 -0
- dateparser/data/date_translation_data/lg.py +169 -0
- dateparser/data/date_translation_data/lkt.py +194 -0
- dateparser/data/date_translation_data/ln.py +179 -0
- dateparser/data/date_translation_data/lo.py +228 -0
- dateparser/data/date_translation_data/lrc.py +154 -0
- dateparser/data/date_translation_data/lt.py +263 -0
- dateparser/data/date_translation_data/lu.py +169 -0
- dateparser/data/date_translation_data/luo.py +169 -0
- dateparser/data/date_translation_data/luy.py +168 -0
- dateparser/data/date_translation_data/lv.py +257 -0
- dateparser/data/date_translation_data/mas.py +173 -0
- dateparser/data/date_translation_data/mer.py +168 -0
- dateparser/data/date_translation_data/mfe.py +166 -0
- dateparser/data/date_translation_data/mg.py +168 -0
- dateparser/data/date_translation_data/mgh.py +169 -0
- dateparser/data/date_translation_data/mgo.py +151 -0
- dateparser/data/date_translation_data/mk.py +234 -0
- dateparser/data/date_translation_data/ml.py +217 -0
- dateparser/data/date_translation_data/mn.py +224 -0
- dateparser/data/date_translation_data/mr.py +229 -0
- dateparser/data/date_translation_data/ms.py +242 -0
- dateparser/data/date_translation_data/mt.py +175 -0
- dateparser/data/date_translation_data/mua.py +169 -0
- dateparser/data/date_translation_data/my.py +203 -0
- dateparser/data/date_translation_data/mzn.py +199 -0
- dateparser/data/date_translation_data/naq.py +169 -0
- dateparser/data/date_translation_data/nb.py +261 -0
- dateparser/data/date_translation_data/nd.py +169 -0
- dateparser/data/date_translation_data/ne.py +207 -0
- dateparser/data/date_translation_data/nl.py +273 -0
- dateparser/data/date_translation_data/nmg.py +169 -0
- dateparser/data/date_translation_data/nn.py +231 -0
- dateparser/data/date_translation_data/nnh.py +150 -0
- dateparser/data/date_translation_data/nus.py +166 -0
- dateparser/data/date_translation_data/nyn.py +169 -0
- dateparser/data/date_translation_data/om.py +173 -0
- dateparser/data/date_translation_data/or.py +157 -0
- dateparser/data/date_translation_data/os.py +203 -0
- dateparser/data/date_translation_data/pa-Arab.py +150 -0
- dateparser/data/date_translation_data/pa-Guru.py +221 -0
- dateparser/data/date_translation_data/pa.py +221 -0
- dateparser/data/date_translation_data/pl.py +416 -0
- dateparser/data/date_translation_data/ps.py +150 -0
- dateparser/data/date_translation_data/pt.py +981 -0
- dateparser/data/date_translation_data/qu.py +176 -0
- dateparser/data/date_translation_data/rm.py +166 -0
- dateparser/data/date_translation_data/rn.py +169 -0
- dateparser/data/date_translation_data/ro.py +270 -0
- dateparser/data/date_translation_data/rof.py +157 -0
- dateparser/data/date_translation_data/ru.py +442 -0
- dateparser/data/date_translation_data/rw.py +169 -0
- dateparser/data/date_translation_data/rwk.py +168 -0
- dateparser/data/date_translation_data/sah.py +219 -0
- dateparser/data/date_translation_data/saq.py +169 -0
- dateparser/data/date_translation_data/sbp.py +169 -0
- dateparser/data/date_translation_data/se.py +280 -0
- dateparser/data/date_translation_data/seh.py +169 -0
- dateparser/data/date_translation_data/ses.py +167 -0
- dateparser/data/date_translation_data/sg.py +169 -0
- dateparser/data/date_translation_data/shi-Latn.py +169 -0
- dateparser/data/date_translation_data/shi-Tfng.py +169 -0
- dateparser/data/date_translation_data/shi.py +169 -0
- dateparser/data/date_translation_data/si.py +220 -0
- dateparser/data/date_translation_data/sk.py +327 -0
- dateparser/data/date_translation_data/sl.py +244 -0
- dateparser/data/date_translation_data/smn.py +176 -0
- dateparser/data/date_translation_data/sn.py +169 -0
- dateparser/data/date_translation_data/so.py +179 -0
- dateparser/data/date_translation_data/sq.py +237 -0
- dateparser/data/date_translation_data/sr-Cyrl.py +306 -0
- dateparser/data/date_translation_data/sr-Latn.py +306 -0
- dateparser/data/date_translation_data/sr.py +255 -0
- dateparser/data/date_translation_data/sv.py +309 -0
- dateparser/data/date_translation_data/sw.py +231 -0
- dateparser/data/date_translation_data/ta.py +264 -0
- dateparser/data/date_translation_data/te.py +239 -0
- dateparser/data/date_translation_data/teo.py +173 -0
- dateparser/data/date_translation_data/th.py +300 -0
- dateparser/data/date_translation_data/ti.py +173 -0
- dateparser/data/date_translation_data/tl.py +137 -0
- dateparser/data/date_translation_data/to.py +216 -0
- dateparser/data/date_translation_data/tr.py +259 -0
- dateparser/data/date_translation_data/twq.py +167 -0
- dateparser/data/date_translation_data/tzm.py +169 -0
- dateparser/data/date_translation_data/ug.py +203 -0
- dateparser/data/date_translation_data/uk.py +502 -0
- dateparser/data/date_translation_data/ur.py +256 -0
- dateparser/data/date_translation_data/uz-Arab.py +167 -0
- dateparser/data/date_translation_data/uz-Cyrl.py +210 -0
- dateparser/data/date_translation_data/uz-Latn.py +216 -0
- dateparser/data/date_translation_data/uz.py +216 -0
- dateparser/data/date_translation_data/vi.py +260 -0
- dateparser/data/date_translation_data/vun.py +168 -0
- dateparser/data/date_translation_data/wae.py +224 -0
- dateparser/data/date_translation_data/xog.py +169 -0
- dateparser/data/date_translation_data/yav.py +169 -0
- dateparser/data/date_translation_data/yi.py +178 -0
- dateparser/data/date_translation_data/yo.py +263 -0
- dateparser/data/date_translation_data/yue.py +203 -0
- dateparser/data/date_translation_data/zgh.py +169 -0
- dateparser/data/date_translation_data/zh-Hans.py +240 -0
- dateparser/data/date_translation_data/zh-Hant.py +402 -0
- dateparser/data/date_translation_data/zh.py +273 -0
- dateparser/data/date_translation_data/zu.py +196 -0
- dateparser/data/languages_info.py +826 -0
- dateparser/date.py +599 -0
- dateparser/date_parser.py +55 -0
- dateparser/freshness_date_parser.py +156 -0
- dateparser/languages/__init__.py +2 -0
- dateparser/languages/dictionary.py +352 -0
- dateparser/languages/loader.py +224 -0
- dateparser/languages/locale.py +625 -0
- dateparser/languages/validation.py +467 -0
- dateparser/parser.py +742 -0
- dateparser/search/__init__.py +71 -0
- dateparser/search/detection.py +78 -0
- dateparser/search/search.py +297 -0
- dateparser/search/text_detection.py +89 -0
- dateparser/timezone_parser.py +91 -0
- dateparser/timezones.py +469 -0
- dateparser/utils/__init__.py +257 -0
- dateparser/utils/strptime.py +108 -0
- dateparser-1.2.1.dist-info/AUTHORS.rst +17 -0
- dateparser-1.2.1.dist-info/LICENSE +12 -0
- dateparser-1.2.1.dist-info/METADATA +864 -0
- dateparser-1.2.1.dist-info/RECORD +256 -0
- dateparser-1.2.1.dist-info/WHEEL +5 -0
- dateparser-1.2.1.dist-info/entry_points.txt +2 -0
- dateparser-1.2.1.dist-info/top_level.txt +4 -0
- dateparser_cli/__init__.py +0 -0
- dateparser_cli/cli.py +36 -0
- dateparser_cli/exceptions.py +2 -0
- dateparser_cli/fasttext_manager.py +42 -0
- dateparser_cli/utils.py +27 -0
- dateparser_data/__init__.py +0 -0
- dateparser_data/settings.py +33 -0
- dateparser_scripts/__init__.py +0 -0
- dateparser_scripts/get_cldr_data.py +567 -0
- dateparser_scripts/order_languages.py +217 -0
- dateparser_scripts/update_supported_languages_and_locales.py +48 -0
- dateparser_scripts/utils.py +73 -0
- dateparser_scripts/write_complete_data.py +129 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
from collections import OrderedDict
|
|
2
|
+
from copy import deepcopy
|
|
3
|
+
from importlib import import_module
|
|
4
|
+
from itertools import zip_longest
|
|
5
|
+
|
|
6
|
+
import regex as re
|
|
7
|
+
|
|
8
|
+
from ..data import language_locale_dict, language_order
|
|
9
|
+
from .locale import Locale
|
|
10
|
+
|
|
11
|
+
LOCALE_SPLIT_PATTERN = re.compile(r"-(?=[A-Z0-9]+$)")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _isvalidlocale(locale):
|
|
15
|
+
language = LOCALE_SPLIT_PATTERN.split(locale)[0]
|
|
16
|
+
if language not in language_order:
|
|
17
|
+
return False
|
|
18
|
+
else:
|
|
19
|
+
locales_list = language_locale_dict[language]
|
|
20
|
+
if locale == language or locale in locales_list:
|
|
21
|
+
return True
|
|
22
|
+
else:
|
|
23
|
+
return False
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _filter_valid_locales(locales):
|
|
27
|
+
return [locale for locale in locales if _isvalidlocale(locale)]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _construct_locales(languages, region):
|
|
31
|
+
if region:
|
|
32
|
+
possible_locales = [language + "-" + region for language in languages]
|
|
33
|
+
locales = _filter_valid_locales(possible_locales)
|
|
34
|
+
else:
|
|
35
|
+
locales = languages
|
|
36
|
+
return locales
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class LocaleDataLoader:
|
|
40
|
+
"""Class that handles loading of locale instances."""
|
|
41
|
+
|
|
42
|
+
_loaded_languages = {}
|
|
43
|
+
_loaded_locales = {}
|
|
44
|
+
|
|
45
|
+
def get_locale_map(
|
|
46
|
+
self,
|
|
47
|
+
languages=None,
|
|
48
|
+
locales=None,
|
|
49
|
+
region=None,
|
|
50
|
+
use_given_order=False,
|
|
51
|
+
allow_conflicting_locales=False,
|
|
52
|
+
):
|
|
53
|
+
"""
|
|
54
|
+
Get an ordered mapping with locale codes as keys
|
|
55
|
+
and corresponding locale instances as values.
|
|
56
|
+
|
|
57
|
+
:param languages:
|
|
58
|
+
A list of language codes, e.g. ['en', 'es', 'zh-Hant'].
|
|
59
|
+
If locales are not given, languages and region are
|
|
60
|
+
used to construct locales to load.
|
|
61
|
+
:type languages: list
|
|
62
|
+
|
|
63
|
+
:param locales:
|
|
64
|
+
A list of codes of locales which are to be loaded,
|
|
65
|
+
e.g. ['fr-PF', 'qu-EC', 'af-NA']
|
|
66
|
+
:type locales: list
|
|
67
|
+
|
|
68
|
+
:param region:
|
|
69
|
+
A region code, e.g. 'IN', '001', 'NE'.
|
|
70
|
+
If locales are not given, languages and region are
|
|
71
|
+
used to construct locales to load.
|
|
72
|
+
:type region: str
|
|
73
|
+
|
|
74
|
+
:param use_given_order:
|
|
75
|
+
If True, the returned mapping is ordered in the order locales are given.
|
|
76
|
+
:type use_given_order: bool
|
|
77
|
+
|
|
78
|
+
:param allow_conflicting_locales:
|
|
79
|
+
if True, locales with same language and different region can be loaded.
|
|
80
|
+
:type allow_conflicting_locales: bool
|
|
81
|
+
|
|
82
|
+
:return: ordered locale code to locale instance mapping
|
|
83
|
+
"""
|
|
84
|
+
return OrderedDict(
|
|
85
|
+
self._load_data(
|
|
86
|
+
languages=languages,
|
|
87
|
+
locales=locales,
|
|
88
|
+
region=region,
|
|
89
|
+
use_given_order=use_given_order,
|
|
90
|
+
allow_conflicting_locales=allow_conflicting_locales,
|
|
91
|
+
)
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
def get_locales(
|
|
95
|
+
self,
|
|
96
|
+
languages=None,
|
|
97
|
+
locales=None,
|
|
98
|
+
region=None,
|
|
99
|
+
use_given_order=False,
|
|
100
|
+
allow_conflicting_locales=False,
|
|
101
|
+
):
|
|
102
|
+
"""
|
|
103
|
+
Yield locale instances.
|
|
104
|
+
|
|
105
|
+
:param languages:
|
|
106
|
+
A list of language codes, e.g. ['en', 'es', 'zh-Hant'].
|
|
107
|
+
If locales are not given, languages and region are
|
|
108
|
+
used to construct locales to load.
|
|
109
|
+
:type languages: list
|
|
110
|
+
|
|
111
|
+
:param locales:
|
|
112
|
+
A list of codes of locales which are to be loaded,
|
|
113
|
+
e.g. ['fr-PF', 'qu-EC', 'af-NA']
|
|
114
|
+
:type locales: list
|
|
115
|
+
|
|
116
|
+
:param region:
|
|
117
|
+
A region code, e.g. 'IN', '001', 'NE'.
|
|
118
|
+
If locales are not given, languages and region are
|
|
119
|
+
used to construct locales to load.
|
|
120
|
+
:type region: str
|
|
121
|
+
|
|
122
|
+
:param use_given_order:
|
|
123
|
+
If True, the returned mapping is ordered in the order locales are given.
|
|
124
|
+
:type use_given_order: bool
|
|
125
|
+
|
|
126
|
+
:param allow_conflicting_locales:
|
|
127
|
+
if True, locales with same language and different region can be loaded.
|
|
128
|
+
:type allow_conflicting_locales: bool
|
|
129
|
+
|
|
130
|
+
:yield: locale instances
|
|
131
|
+
"""
|
|
132
|
+
for _, locale in self._load_data(
|
|
133
|
+
languages=languages,
|
|
134
|
+
locales=locales,
|
|
135
|
+
region=region,
|
|
136
|
+
use_given_order=use_given_order,
|
|
137
|
+
allow_conflicting_locales=allow_conflicting_locales,
|
|
138
|
+
):
|
|
139
|
+
yield locale
|
|
140
|
+
|
|
141
|
+
def get_locale(self, shortname):
|
|
142
|
+
"""
|
|
143
|
+
Get a locale instance.
|
|
144
|
+
|
|
145
|
+
:param shortname:
|
|
146
|
+
A locale code, e.g. 'fr-PF', 'qu-EC', 'af-NA'.
|
|
147
|
+
:type shortname: str
|
|
148
|
+
|
|
149
|
+
:return: locale instance
|
|
150
|
+
"""
|
|
151
|
+
return list(self.get_locales(locales=[shortname]))[0]
|
|
152
|
+
|
|
153
|
+
def _load_data(
|
|
154
|
+
self,
|
|
155
|
+
languages=None,
|
|
156
|
+
locales=None,
|
|
157
|
+
region=None,
|
|
158
|
+
use_given_order=False,
|
|
159
|
+
allow_conflicting_locales=False,
|
|
160
|
+
):
|
|
161
|
+
locale_dict = OrderedDict()
|
|
162
|
+
if locales:
|
|
163
|
+
invalid_locales = []
|
|
164
|
+
for locale in locales:
|
|
165
|
+
lang_reg = LOCALE_SPLIT_PATTERN.split(locale)
|
|
166
|
+
if len(lang_reg) == 1:
|
|
167
|
+
lang_reg.append("")
|
|
168
|
+
locale_dict[locale] = tuple(lang_reg)
|
|
169
|
+
if not _isvalidlocale(locale):
|
|
170
|
+
invalid_locales.append(locale)
|
|
171
|
+
if invalid_locales:
|
|
172
|
+
raise ValueError(
|
|
173
|
+
"Unknown locale(s): %s" % ", ".join(map(repr, invalid_locales))
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
if not allow_conflicting_locales:
|
|
177
|
+
if len(set(locales)) > len({t[0] for t in locale_dict.values()}):
|
|
178
|
+
raise ValueError(
|
|
179
|
+
"Locales should not have same language and different region"
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
else:
|
|
183
|
+
if languages is None:
|
|
184
|
+
languages = language_order
|
|
185
|
+
unsupported_languages = set(languages) - set(language_order)
|
|
186
|
+
if unsupported_languages:
|
|
187
|
+
raise ValueError(
|
|
188
|
+
"Unknown language(s): %s"
|
|
189
|
+
% ", ".join(map(repr, unsupported_languages))
|
|
190
|
+
)
|
|
191
|
+
if region is None:
|
|
192
|
+
region = ""
|
|
193
|
+
locales = _construct_locales(languages, region)
|
|
194
|
+
locale_dict.update(
|
|
195
|
+
zip_longest(
|
|
196
|
+
locales, tuple(zip_longest(languages, [], fillvalue=region))
|
|
197
|
+
)
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
if not use_given_order:
|
|
201
|
+
locale_dict = OrderedDict(
|
|
202
|
+
sorted(locale_dict.items(), key=lambda x: language_order.index(x[1][0]))
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
for shortname, lang_reg in locale_dict.items():
|
|
206
|
+
if shortname not in self._loaded_locales:
|
|
207
|
+
lang, reg = lang_reg
|
|
208
|
+
if lang in self._loaded_languages:
|
|
209
|
+
locale = Locale(
|
|
210
|
+
shortname, language_info=deepcopy(self._loaded_languages[lang])
|
|
211
|
+
)
|
|
212
|
+
self._loaded_locales[shortname] = locale
|
|
213
|
+
else:
|
|
214
|
+
language_info = getattr(
|
|
215
|
+
import_module("dateparser.data.date_translation_data." + lang),
|
|
216
|
+
"info",
|
|
217
|
+
)
|
|
218
|
+
locale = Locale(shortname, language_info=deepcopy(language_info))
|
|
219
|
+
self._loaded_languages[lang] = language_info
|
|
220
|
+
self._loaded_locales[shortname] = locale
|
|
221
|
+
yield shortname, self._loaded_locales[shortname]
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
default_loader = LocaleDataLoader()
|