dateparser 1.3.0__tar.gz → 1.4.1__tar.gz
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-1.3.0 → dateparser-1.4.1}/CONTRIBUTING.rst +1 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/HISTORY.rst +77 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/MANIFEST.in +0 -1
- {dateparser-1.3.0 → dateparser-1.4.1}/PKG-INFO +65 -277
- dateparser-1.4.1/README.rst +415 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/__init__.py +1 -1
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/jalali_parser.py +25 -30
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/conf.py +5 -1
- dateparser-1.4.1/dateparser/custom_language_detection/fasttext.py +35 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/af.py +31 -31
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/am.py +30 -30
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ar.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ast.py +46 -46
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Latn.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/be.py +43 -43
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bg.py +54 -54
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bn.py +16 -16
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/br.py +26 -26
- dateparser-1.4.1/dateparser/data/date_translation_data/bs-Cyrl.py +294 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs-Latn.py +42 -42
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs.py +42 -42
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ca.py +37 -37
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ce.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/chr.py +36 -36
- dateparser-1.4.1/dateparser/data/date_translation_data/cs.py +642 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cy.py +16 -16
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/da.py +44 -44
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/de.py +43 -43
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dsb.py +50 -50
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dz.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ee.py +30 -30
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/el.py +49 -49
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/en.py +68 -61
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/es.py +55 -55
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/et.py +30 -30
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eu.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fa.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fi.py +36 -36
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fil.py +20 -20
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fo.py +44 -44
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fr.py +49 -49
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fur.py +26 -26
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fy.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ga.py +29 -29
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gd.py +42 -42
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gl.py +42 -42
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gu.py +17 -17
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/he.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hi.py +22 -22
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hr.py +56 -56
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hsb.py +50 -50
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hu.py +15 -15
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hy.py +26 -26
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/id.py +31 -31
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/is.py +35 -35
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/it.py +43 -43
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ja.py +33 -33
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jgo.py +12 -12
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ka.py +19 -19
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kea.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kk.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kl.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/km.py +17 -17
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kn.py +29 -29
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ko.py +22 -17
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksh.py +4 -4
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ky.py +32 -32
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lb.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lkt.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lo.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lt.py +43 -43
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lv.py +46 -46
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mk.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ml.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mn.py +21 -21
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mr.py +32 -32
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ms.py +25 -25
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mt.py +2 -2
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/my.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mzn.py +17 -17
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nb.py +90 -47
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ne.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nl.py +30 -30
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nn.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/os.py +5 -5
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Guru.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa.py +24 -24
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pl.py +45 -45
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pt.py +248 -248
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ro.py +41 -41
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ru.py +44 -44
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sah.py +15 -15
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/se.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/si.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sk.py +49 -49
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sl.py +38 -38
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sq.py +28 -28
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Cyrl.py +48 -48
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Latn.py +48 -48
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr.py +48 -48
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sv.py +45 -45
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sw.py +23 -23
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ta.py +50 -50
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/te.py +36 -36
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/th.py +27 -27
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/to.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tr.py +22 -22
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ug.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uk.py +53 -53
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ur.py +36 -36
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Cyrl.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Latn.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vi.py +15 -15
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/wae.py +25 -25
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yi.py +8 -8
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yue.py +14 -14
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hans.py +16 -16
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hant.py +50 -50
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh.py +22 -22
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zu.py +12 -12
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/languages_info.py +1 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/date.py +53 -20
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/freshness_date_parser.py +13 -11
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/dictionary.py +10 -2
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/loader.py +2 -2
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/locale.py +57 -5
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/parser.py +9 -17
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/search.py +29 -4
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/timezone_parser.py +4 -47
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/PKG-INFO +65 -277
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/SOURCES.txt +2 -3
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/requires.txt +0 -4
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/cli.py +13 -5
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_data/settings.py +1 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/get_cldr_data.py +10 -11
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/order_languages.py +1 -2
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/utils.py +2 -3
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/write_complete_data.py +40 -5
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/custom_language_detection.rst +8 -36
- dateparser-1.4.1/docs/index.rst +30 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/installation.rst +1 -1
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/settings.rst +30 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/supported_locales.rst +7 -1
- dateparser-1.4.1/pyproject.toml +85 -0
- dateparser-1.4.1/setup.py +14 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_clean_api.py +47 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date.py +9 -13
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date_parser.py +198 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_freshness_date_parser.py +70 -3
- dateparser-1.4.1/tests/test_language_detect.py +185 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_languages.py +128 -29
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_loading.py +50 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_search.py +7 -1
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_settings.py +1 -0
- dateparser-1.4.1/tests/test_whitespace_preservation.py +103 -0
- dateparser-1.3.0/README.rst +0 -214
- dateparser-1.3.0/dateparser/custom_language_detection/fasttext.py +0 -43
- dateparser-1.3.0/dateparser/data/date_translation_data/bs-Cyrl.py +0 -226
- dateparser-1.3.0/dateparser/data/date_translation_data/cs.py +0 -316
- dateparser-1.3.0/dateparser/data/dateparser_tz_cache.pkl +0 -0
- dateparser-1.3.0/docs/index.rst +0 -63
- dateparser-1.3.0/docs/introduction.rst +0 -275
- dateparser-1.3.0/pyproject.toml +0 -20
- dateparser-1.3.0/setup.py +0 -62
- dateparser-1.3.0/tests/test_language_detect.py +0 -118
- {dateparser-1.3.0 → dateparser-1.4.1}/AUTHORS.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/LICENSE +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/hijri.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/hijri_parser.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/jalali.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/langdetect.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/language_mapping.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/agq.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ak.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/as.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/asa.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Cyrl.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bas.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bem.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bez.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bm.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/brx.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cgg.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ckb.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dav.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dje.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dua.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dyo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ebu.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ewo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ff.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gsw.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/guz.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gv.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ha.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/haw.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ig.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ii.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jmc.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kab.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kam.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kde.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/khq.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ki.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kln.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kok.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ks.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksb.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksf.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kw.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lag.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lg.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ln.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lrc.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lu.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luy.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mas.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mer.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mfe.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mg.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgh.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mua.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/naq.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nd.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nmg.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nnh.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nus.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nyn.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/om.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/or.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Arab.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ps.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/qu.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rm.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rn.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rof.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rw.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rwk.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/saq.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sbp.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/seh.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ses.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sg.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Latn.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Tfng.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/smn.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sn.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/so.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/teo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ti.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tl.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/twq.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tzm.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Arab.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vun.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/xog.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yav.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yo.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zgh.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/date_parser.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/validation.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/detection.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/text_detection.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/timezones.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/strptime.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/time_spans.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/dependency_links.txt +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/entry_points.txt +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/not-zip-safe +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/top_level.txt +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/exceptions.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/fasttext_manager.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/utils.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_data/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/update_supported_languages_and_locales.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/Makefile +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/authors.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/conf.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/contributing.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.calendars.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.languages.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/history.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/make.bat +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/modules.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/template.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/docs/usage.rst +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/setup.cfg +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/__init__.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_data.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date_data.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_dateparser_data_integrity.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_hijri.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_jalali.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_parser.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_pickle.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_timezone_parser.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_utils.py +0 -0
- {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_utils_strptime.py +0 -0
|
@@ -76,7 +76,7 @@ installed, this is how you set up your fork for local development::
|
|
|
76
76
|
|
|
77
77
|
$ mkvirtualenv dateparser
|
|
78
78
|
$ cd dateparser/
|
|
79
|
-
$
|
|
79
|
+
$ pip install -e .
|
|
80
80
|
|
|
81
81
|
4. Create a branch for local development::
|
|
82
82
|
|
|
@@ -179,16 +179,3 @@ Whenever the content of
|
|
|
179
179
|
the corresponding documentation table::
|
|
180
180
|
|
|
181
181
|
dateparser_scripts/update_supported_languages_and_locales.py
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Updating the Timezone Cache
|
|
185
|
-
----------------------------------------------------
|
|
186
|
-
|
|
187
|
-
Whenever the content of
|
|
188
|
-
``dateparser/timezones.py`` is modified you need to rebuild the timezone cache.
|
|
189
|
-
|
|
190
|
-
Run this command:
|
|
191
|
-
``BUILD_TZ_CACHE=1 python -c "import dateparser"``
|
|
192
|
-
|
|
193
|
-
which should update
|
|
194
|
-
``dateparser/data/dateparser_tz_cache.pkl``
|
|
@@ -3,6 +3,83 @@
|
|
|
3
3
|
History
|
|
4
4
|
=======
|
|
5
5
|
|
|
6
|
+
1.4.1 (2026-06-15)
|
|
7
|
+
------------------
|
|
8
|
+
|
|
9
|
+
Breaking changes:
|
|
10
|
+
|
|
11
|
+
- Remove fastText language detection support: the ``fasttext`` extra is
|
|
12
|
+
dropped and ``detect_languages()`` now raises ``ImportError``. Migrate to
|
|
13
|
+
the ``langdetect`` extra, which also unblocks ``numpy`` 2.x compatibility
|
|
14
|
+
(#1315)
|
|
15
|
+
|
|
16
|
+
Security fixes:
|
|
17
|
+
|
|
18
|
+
- Make digit quantifiers possessive in the relative-date regexes to prevent
|
|
19
|
+
quadratic backtracking (ReDoS) on long digit runs (#1335)
|
|
20
|
+
|
|
21
|
+
New features:
|
|
22
|
+
|
|
23
|
+
- Add the ``USE_GIVEN_LANGUAGE_ORDER`` setting to try ``languages`` and
|
|
24
|
+
``locales`` in the order given rather than by frequency (#789)
|
|
25
|
+
|
|
26
|
+
Fixes:
|
|
27
|
+
|
|
28
|
+
- Preserve explicit signs on individual components when parsing relative
|
|
29
|
+
dates that combine decades with years, such as "-1 decade +2 years" (#1330)
|
|
30
|
+
- Fall back to other provided languages in ``search_dates`` when the
|
|
31
|
+
detected language yields no dates (#1331)
|
|
32
|
+
- Parse relative date expressions with spaces between the sign and number,
|
|
33
|
+
such as "now - 2 hours" and "now + 1 day" (#1327)
|
|
34
|
+
- Use the parser-relative ``now`` for the current month when filling in
|
|
35
|
+
incomplete dates so the month and day stay consistent (#1332)
|
|
36
|
+
- Fix Norwegian Bokmål (``nb``) parsing of relative date expressions such
|
|
37
|
+
as "3 måneder siden" and "om 2 måneder" (#1334)
|
|
38
|
+
- Parse abbreviated English month expressions such as "1mon ago" and
|
|
39
|
+
"3mons ago" (#1329)
|
|
40
|
+
- Preserve surrounding whitespace when removing skip tokens during
|
|
41
|
+
translation to avoid spurious double spaces (#1324)
|
|
42
|
+
|
|
43
|
+
Improvements:
|
|
44
|
+
|
|
45
|
+
- Move project metadata and build configuration to ``pyproject.toml`` (#1311)
|
|
46
|
+
- Add alternative Korean date expressions for today, yesterday, tomorrow,
|
|
47
|
+
and "N months ago/later" (#1289)
|
|
48
|
+
- Expand Czech date translations with additional inflections, word numbers,
|
|
49
|
+
decade and century expressions, and clock phrases like "čtvrt na tři"
|
|
50
|
+
(#1325)
|
|
51
|
+
- Replace internal ``OrderedDict`` usage with the built-in ``dict`` (#1328)
|
|
52
|
+
|
|
53
|
+
1.4.0 (2026-03-26)
|
|
54
|
+
------------------
|
|
55
|
+
|
|
56
|
+
Security fixes:
|
|
57
|
+
|
|
58
|
+
- Remove import-time loading of timezone offset data from pickle to prevent
|
|
59
|
+
unsafe deserialization from packaged data
|
|
60
|
+
- Replace ``eval()`` use when parsing ``no_word_spacing`` with strict boolean
|
|
61
|
+
parsing to prevent code execution from locale metadata (#1056)
|
|
62
|
+
|
|
63
|
+
New features:
|
|
64
|
+
|
|
65
|
+
- Add support for expressions like "N {interval} from now" in English (#1271)
|
|
66
|
+
- Add support for the ``en-US`` locale (#1222)
|
|
67
|
+
|
|
68
|
+
Fixes:
|
|
69
|
+
|
|
70
|
+
- Honor ``REQUIRE_PARTS`` for ambiguous month-number inputs by retrying with a
|
|
71
|
+
year-biased ``DATE_ORDER`` (#1298)
|
|
72
|
+
- Fix parsing word-number relative phrases such as "two days later" (#1316)
|
|
73
|
+
- Allow md5hash to work in FIPS environments (#1267)
|
|
74
|
+
|
|
75
|
+
Improvements:
|
|
76
|
+
|
|
77
|
+
- Add Bosnian Cyrillic (ijekavica) date translations (#1293)
|
|
78
|
+
- Add a new browser-based demo to the project documentation (#1306)
|
|
79
|
+
- Update installation documentation to replace ``setup.py install`` guidance
|
|
80
|
+
(#1310)
|
|
81
|
+
- Add a project security policy (#1318)
|
|
82
|
+
|
|
6
83
|
1.3.0 (2026-02-04)
|
|
7
84
|
------------------
|
|
8
85
|
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dateparser
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.1
|
|
4
4
|
Summary: Date parsing library designed to parse dates from HTML pages
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
License: BSD
|
|
5
|
+
Author-email: Scrapinghub <opensource@zyte.com>
|
|
6
|
+
License-Expression: BSD-3-Clause
|
|
7
|
+
Project-URL: Source, https://github.com/scrapinghub/dateparser
|
|
9
8
|
Project-URL: History, https://dateparser.readthedocs.io/en/latest/history.html
|
|
10
9
|
Keywords: dateparser
|
|
11
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
11
|
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
14
12
|
Classifier: Natural Language :: English
|
|
15
13
|
Classifier: Programming Language :: Python :: 3
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -29,306 +27,96 @@ Requires-Dist: tzlocal>=0.2
|
|
|
29
27
|
Provides-Extra: calendars
|
|
30
28
|
Requires-Dist: convertdate>=2.2.1; extra == "calendars"
|
|
31
29
|
Requires-Dist: hijridate; extra == "calendars"
|
|
32
|
-
Provides-Extra: fasttext
|
|
33
|
-
Requires-Dist: fasttext>=0.9.1; extra == "fasttext"
|
|
34
|
-
Requires-Dist: numpy<2,>=1.22.0; extra == "fasttext"
|
|
35
30
|
Provides-Extra: langdetect
|
|
36
31
|
Requires-Dist: langdetect>=1.0.0; extra == "langdetect"
|
|
37
|
-
Dynamic: author
|
|
38
|
-
Dynamic: author-email
|
|
39
|
-
Dynamic: classifier
|
|
40
32
|
Dynamic: description
|
|
41
|
-
Dynamic: home-page
|
|
42
|
-
Dynamic: keywords
|
|
43
|
-
Dynamic: license
|
|
44
33
|
Dynamic: license-file
|
|
45
|
-
Dynamic: project-url
|
|
46
|
-
Dynamic: provides-extra
|
|
47
|
-
Dynamic: requires-dist
|
|
48
|
-
Dynamic: requires-python
|
|
49
|
-
Dynamic: summary
|
|
50
34
|
|
|
51
|
-
|
|
52
|
-
Introduction to dateparser
|
|
53
|
-
==========================
|
|
35
|
+
.. Note that we use raw HTML in the header section because centering images and paragraphs is not supported in Github (https://github.com/github/markup/issues/163)
|
|
54
36
|
|
|
55
37
|
|
|
56
|
-
Features
|
|
57
|
-
========
|
|
58
38
|
|
|
59
|
-
|
|
60
|
-
* Generic parsing of relative dates like: ``'1 min ago'``, ``'2 weeks ago'``, ``'3 months, 1 week and 1 day ago'``, ``'in 2 days'``, ``'tomorrow'``.
|
|
61
|
-
* Generic parsing of dates with time zones abbreviations or UTC offsets like: ``'August 14, 2015 EST'``, ``'July 4, 2013 PST'``, ``'21 July 2013 10:15 pm +0500'``.
|
|
62
|
-
* Date lookup in longer texts.
|
|
63
|
-
* Support for non-Gregorian calendar systems. See `Supported Calendars`_.
|
|
64
|
-
* Extensive test coverage.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Basic Usage
|
|
68
|
-
===========
|
|
69
|
-
|
|
70
|
-
The most straightforward way is to use the `dateparser.parse <#dateparser.parse>`_ function,
|
|
71
|
-
that wraps around most of the functionality in the module.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
:noindex:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
Popular Formats
|
|
79
|
-
---------------
|
|
80
|
-
|
|
81
|
-
>>> import dateparser
|
|
82
|
-
>>> dateparser.parse('12/12/12')
|
|
83
|
-
datetime.datetime(2012, 12, 12, 0, 0)
|
|
84
|
-
>>> dateparser.parse('Fri, 12 Dec 2014 10:55:50')
|
|
85
|
-
datetime.datetime(2014, 12, 12, 10, 55, 50)
|
|
86
|
-
>>> dateparser.parse('Martes 21 de Octubre de 2014') # Spanish (Tuesday 21 October 2014)
|
|
87
|
-
datetime.datetime(2014, 10, 21, 0, 0)
|
|
88
|
-
>>> dateparser.parse('Le 11 Décembre 2014 à 09:00') # French (11 December 2014 at 09:00)
|
|
89
|
-
datetime.datetime(2014, 12, 11, 9, 0)
|
|
90
|
-
>>> dateparser.parse('13 января 2015 г. в 13:34') # Russian (13 January 2015 at 13:34)
|
|
91
|
-
datetime.datetime(2015, 1, 13, 13, 34)
|
|
92
|
-
>>> dateparser.parse('1 เดือนตุลาคม 2005, 1:00 AM') # Thai (1 October 2005, 1:00 AM)
|
|
93
|
-
datetime.datetime(2005, 10, 1, 1, 0)
|
|
94
|
-
|
|
95
|
-
This will try to parse a date from the given string, attempting to
|
|
96
|
-
detect the language each time.
|
|
97
|
-
|
|
98
|
-
You can specify the language(s), if known, using ``languages`` argument. In this case, given languages are used and language detection is skipped:
|
|
99
|
-
|
|
100
|
-
>>> dateparser.parse('2015, Ago 15, 1:08 pm', languages=['pt', 'es'])
|
|
101
|
-
datetime.datetime(2015, 8, 15, 13, 8)
|
|
102
|
-
|
|
103
|
-
If you know the possible formats of the dates, you can
|
|
104
|
-
use the ``date_formats`` argument:
|
|
105
|
-
|
|
106
|
-
>>> dateparser.parse('22 Décembre 2010', date_formats=['%d %B %Y'])
|
|
107
|
-
datetime.datetime(2010, 12, 22, 0, 0)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
Relative Dates
|
|
111
|
-
--------------
|
|
112
|
-
|
|
113
|
-
>>> parse('1 hour ago')
|
|
114
|
-
datetime.datetime(2015, 5, 31, 23, 0)
|
|
115
|
-
>>> parse('Il ya 2 heures') # French (2 hours ago)
|
|
116
|
-
datetime.datetime(2015, 5, 31, 22, 0)
|
|
117
|
-
>>> parse('1 anno 2 mesi') # Italian (1 year 2 months)
|
|
118
|
-
datetime.datetime(2014, 4, 1, 0, 0)
|
|
119
|
-
>>> parse('yaklaşık 23 saat önce') # Turkish (23 hours ago)
|
|
120
|
-
datetime.datetime(2015, 5, 31, 1, 0)
|
|
121
|
-
>>> parse('Hace una semana') # Spanish (a week ago)
|
|
122
|
-
datetime.datetime(2015, 5, 25, 0, 0)
|
|
123
|
-
>>> parse('2小时前') # Chinese (2 hours ago)
|
|
124
|
-
datetime.datetime(2015, 5, 31, 22, 0)
|
|
125
|
-
|
|
126
|
-
.. note:: Testing above code might return different values for you depending on your environment's current date and time.
|
|
127
|
-
|
|
128
|
-
.. note:: For `Finnish` language, please specify ``settings={'SKIP_TOKENS': []}`` to correctly parse relative dates.
|
|
129
|
-
|
|
130
|
-
OOTB Language Based Date Order Preference
|
|
131
|
-
-----------------------------------------
|
|
132
|
-
|
|
133
|
-
>>> # parsing ambiguous date
|
|
134
|
-
>>> parse('02-03-2016') # assumes english language, uses MDY date order
|
|
135
|
-
datetime.datetime(2016, 2, 3, 0, 0)
|
|
136
|
-
>>> parse('le 02-03-2016') # detects french, uses DMY date order
|
|
137
|
-
datetime.datetime(2016, 3, 2, 0, 0)
|
|
138
|
-
|
|
139
|
-
.. note:: Ordering is not locale based, that's why do not expect `DMY` order for UK/Australia English. You can specify date order in that case as follows using `settings`:
|
|
140
|
-
|
|
141
|
-
>>> parse('18-12-15 06:00', settings={'DATE_ORDER': 'DMY'})
|
|
142
|
-
datetime.datetime(2015, 12, 18, 6, 0)
|
|
143
|
-
|
|
144
|
-
For more on date order, please look at `settings`.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
Timezone and UTC Offset
|
|
148
|
-
-----------------------
|
|
149
|
-
|
|
150
|
-
By default, `dateparser` returns tzaware `datetime` if timezone is present in date string. Otherwise, it returns a naive `datetime` object.
|
|
151
|
-
|
|
152
|
-
>>> parse('January 12, 2012 10:00 PM EST')
|
|
153
|
-
datetime.datetime(2012, 1, 12, 22, 0, tzinfo=<StaticTzInfo 'EST'>)
|
|
154
|
-
|
|
155
|
-
>>> parse('January 12, 2012 10:00 PM -0500')
|
|
156
|
-
datetime.datetime(2012, 1, 12, 22, 0, tzinfo=<StaticTzInfo 'UTC\-05:00'>)
|
|
157
|
-
|
|
158
|
-
>>> parse('2 hours ago EST')
|
|
159
|
-
datetime.datetime(2017, 3, 10, 15, 55, 39, 579667, tzinfo=<StaticTzInfo 'EST'>)
|
|
160
|
-
|
|
161
|
-
>>> parse('2 hours ago -0500')
|
|
162
|
-
datetime.datetime(2017, 3, 10, 15, 59, 30, 193431, tzinfo=<StaticTzInfo 'UTC\-05:00'>)
|
|
163
|
-
|
|
164
|
-
If date has no timezone name/abbreviation or offset, you can specify it using `TIMEZONE` setting.
|
|
165
|
-
|
|
166
|
-
>>> parse('January 12, 2012 10:00 PM', settings={'TIMEZONE': 'US/Eastern'})
|
|
167
|
-
datetime.datetime(2012, 1, 12, 22, 0)
|
|
168
|
-
|
|
169
|
-
>>> parse('January 12, 2012 10:00 PM', settings={'TIMEZONE': '+0500'})
|
|
170
|
-
datetime.datetime(2012, 1, 12, 22, 0)
|
|
171
|
-
|
|
172
|
-
``TIMEZONE`` option may not be useful alone as it only attaches given timezone to
|
|
173
|
-
resultant ``datetime`` object. But can be useful in cases where you want conversions from and to different
|
|
174
|
-
timezones or when simply want a tzaware date with given timezone info attached.
|
|
175
|
-
|
|
176
|
-
>>> parse('January 12, 2012 10:00 PM', settings={'TIMEZONE': 'US/Eastern', 'RETURN_AS_TIMEZONE_AWARE': True})
|
|
177
|
-
datetime.datetime(2012, 1, 12, 22, 0, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
>>> parse('10:00 am', settings={'TIMEZONE': 'EST', 'TO_TIMEZONE': 'EDT'})
|
|
181
|
-
datetime.datetime(2016, 9, 25, 11, 0)
|
|
182
|
-
|
|
183
|
-
Some more use cases for conversion of timezones.
|
|
184
|
-
|
|
185
|
-
>>> parse('10:00 am EST', settings={'TO_TIMEZONE': 'EDT'}) # date string has timezone info
|
|
186
|
-
datetime.datetime(2017, 3, 12, 11, 0, tzinfo=<StaticTzInfo 'EDT'>)
|
|
187
|
-
|
|
188
|
-
>>> parse('now EST', settings={'TO_TIMEZONE': 'UTC'}) # relative dates
|
|
189
|
-
datetime.datetime(2017, 3, 10, 23, 24, 47, 371823, tzinfo=<StaticTzInfo 'UTC'>)
|
|
190
|
-
|
|
191
|
-
In case, no timezone is present in date string or defined in `settings`. You can still
|
|
192
|
-
return tzaware ``datetime``. It is especially useful in case of relative dates when uncertain
|
|
193
|
-
what timezone is relative base.
|
|
194
|
-
|
|
195
|
-
>>> parse('2 minutes ago', settings={'RETURN_AS_TIMEZONE_AWARE': True})
|
|
196
|
-
datetime.datetime(2017, 3, 11, 4, 25, 24, 152670, tzinfo=<DstTzInfo 'Asia/Karachi' PKT+5:00:00 STD>)
|
|
197
|
-
|
|
198
|
-
In case, you want to compute relative dates in UTC instead of default system's local timezone, you can use `TIMEZONE` setting.
|
|
199
|
-
|
|
200
|
-
>>> parse('4 minutes ago', settings={'TIMEZONE': 'UTC'})
|
|
201
|
-
datetime.datetime(2017, 3, 10, 23, 27, 59, 647248, tzinfo=<StaticTzInfo 'UTC'>)
|
|
202
|
-
|
|
203
|
-
.. note:: In case, when timezone is present both in string and also specified using `settings`, string is parsed into tzaware representation and then converted to timezone specified in `settings`.
|
|
204
|
-
|
|
205
|
-
>>> parse('10:40 pm PKT', settings={'TIMEZONE': 'UTC'})
|
|
206
|
-
datetime.datetime(2017, 3, 12, 17, 40, tzinfo=<StaticTzInfo 'UTC'>)
|
|
207
|
-
|
|
208
|
-
>>> parse('20 mins ago EST', settings={'TIMEZONE': 'UTC'})
|
|
209
|
-
datetime.datetime(2017, 3, 12, 21, 16, 0, 885091, tzinfo=<StaticTzInfo 'UTC'>)
|
|
210
|
-
|
|
211
|
-
For more on timezones, please look at `settings`.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
Incomplete Dates
|
|
215
|
-
----------------
|
|
216
|
-
|
|
217
|
-
>>> from dateparser import parse
|
|
218
|
-
>>> parse('December 2015') # default behavior
|
|
219
|
-
datetime.datetime(2015, 12, 16, 0, 0)
|
|
220
|
-
>>> parse('December 2015', settings={'PREFER_DAY_OF_MONTH': 'last'})
|
|
221
|
-
datetime.datetime(2015, 12, 31, 0, 0)
|
|
222
|
-
>>> parse('December 2015', settings={'PREFER_DAY_OF_MONTH': 'first'})
|
|
223
|
-
datetime.datetime(2015, 12, 1, 0, 0)
|
|
224
|
-
|
|
225
|
-
>>> parse('March')
|
|
226
|
-
datetime.datetime(2015, 3, 16, 0, 0)
|
|
227
|
-
>>> parse('March', settings={'PREFER_DATES_FROM': 'future'})
|
|
228
|
-
datetime.datetime(2016, 3, 16, 0, 0)
|
|
229
|
-
>>> # parsing with preference set for 'past'
|
|
230
|
-
>>> parse('August', settings={'PREFER_DATES_FROM': 'past'})
|
|
231
|
-
datetime.datetime(2015, 8, 15, 0, 0)
|
|
232
|
-
|
|
233
|
-
>>> import dateparser
|
|
234
|
-
>>> dateparser.parse("2015") # default behavior
|
|
235
|
-
datetime.datetime(2015, 3, 27, 0, 0)
|
|
236
|
-
>>> dateparser.parse("2015", settings={"PREFER_MONTH_OF_YEAR": "last"})
|
|
237
|
-
datetime.datetime(2015, 12, 27, 0, 0)
|
|
238
|
-
>>> dateparser.parse("2015", settings={"PREFER_MONTH_OF_YEAR": "first"})
|
|
239
|
-
datetime.datetime(2015, 1, 27, 0, 0)
|
|
240
|
-
>>> dateparser.parse("2015", settings={"PREFER_MONTH_OF_YEAR": "current"})
|
|
241
|
-
datetime.datetime(2015, 3, 27, 0, 0)
|
|
242
|
-
|
|
243
|
-
You can also ignore parsing incomplete dates altogether by setting `STRICT_PARSING` flag as follows:
|
|
244
|
-
|
|
245
|
-
>>> parse('December 2015', settings={'STRICT_PARSING': True})
|
|
246
|
-
None
|
|
247
|
-
|
|
248
|
-
For more on handling incomplete dates, please look at `settings`.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
Search for Dates in Longer Chunks of Text
|
|
252
|
-
-----------------------------------------
|
|
253
|
-
|
|
254
|
-
.. warning:: Support for searching dates is really limited and needs a lot of improvement, we look forward to community's contribution to get better on that part. See "`contributing`".
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
You can extract dates from longer strings of text. They are returned as list of tuples with text chunk containing the date and parsed datetime object.
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
:noindex:
|
|
263
|
-
|
|
264
|
-
Time Span Detection
|
|
265
|
-
-------------------
|
|
266
|
-
|
|
267
|
-
The `search_dates` function can detect time spans from expressions like "past month", "last week", etc. When `RETURN_TIME_SPAN` is enabled, it returns start and end dates for the detected period.
|
|
268
|
-
|
|
269
|
-
.. code-block:: python
|
|
270
|
-
|
|
271
|
-
>>> search_dates("Messages from the past month", settings={'RETURN_TIME_SPAN': True})
|
|
272
|
-
[('past month (start)', datetime.datetime(2024, 11, 7, 0, 0)),
|
|
273
|
-
('past month (end)', datetime.datetime(2024, 12, 7, 23, 59, 59, 999999))]
|
|
274
|
-
|
|
275
|
-
Advanced Usage
|
|
276
|
-
==============
|
|
277
|
-
If you need more control over what is being parser check the `settings` section as well as the `using-datedataparser` section.
|
|
39
|
+
.. :changelog:
|
|
278
40
|
|
|
41
|
+
History
|
|
42
|
+
=======
|
|
279
43
|
|
|
280
|
-
|
|
281
|
-
|
|
44
|
+
1.4.1 (2026-06-15)
|
|
45
|
+
------------------
|
|
282
46
|
|
|
283
|
-
|
|
47
|
+
Breaking changes:
|
|
284
48
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
* ruamel.yaml_ (optional) for operations on language files.
|
|
49
|
+
- Remove fastText language detection support: the ``fasttext`` extra is
|
|
50
|
+
dropped and ``detect_languages()`` now raises ``ImportError``. Migrate to
|
|
51
|
+
the ``langdetect`` extra, which also unblocks ``numpy`` 2.x compatibility
|
|
52
|
+
(#1315)
|
|
290
53
|
|
|
291
|
-
|
|
292
|
-
.. _convertdate: https://pypi.python.org/pypi/convertdate
|
|
293
|
-
.. _hijridate: https://pypi.python.org/pypi/hijridate
|
|
294
|
-
.. _tzlocal: https://pypi.python.org/pypi/tzlocal
|
|
295
|
-
.. _ruamel.yaml: https://pypi.python.org/pypi/ruamel.yaml
|
|
54
|
+
Security fixes:
|
|
296
55
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
You can check the supported locales by visiting the "`supported-locales`" section.
|
|
56
|
+
- Make digit quantifiers possessive in the relative-date regexes to prevent
|
|
57
|
+
quadratic backtracking (ReDoS) on long digit runs (#1335)
|
|
300
58
|
|
|
59
|
+
New features:
|
|
301
60
|
|
|
302
|
-
|
|
303
|
-
|
|
61
|
+
- Add the ``USE_GIVEN_LANGUAGE_ORDER`` setting to try ``languages`` and
|
|
62
|
+
``locales`` in the order given rather than by frequency (#789)
|
|
304
63
|
|
|
305
|
-
|
|
64
|
+
Fixes:
|
|
306
65
|
|
|
307
|
-
|
|
66
|
+
- Preserve explicit signs on individual components when parsing relative
|
|
67
|
+
dates that combine decades with years, such as "-1 decade +2 years" (#1330)
|
|
68
|
+
- Fall back to other provided languages in ``search_dates`` when the
|
|
69
|
+
detected language yields no dates (#1331)
|
|
70
|
+
- Parse relative date expressions with spaces between the sign and number,
|
|
71
|
+
such as "now - 2 hours" and "now + 1 day" (#1327)
|
|
72
|
+
- Use the parser-relative ``now`` for the current month when filling in
|
|
73
|
+
incomplete dates so the month and day stay consistent (#1332)
|
|
74
|
+
- Fix Norwegian Bokmål (``nb``) parsing of relative date expressions such
|
|
75
|
+
as "3 måneder siden" and "om 2 måneder" (#1334)
|
|
76
|
+
- Parse abbreviated English month expressions such as "1mon ago" and
|
|
77
|
+
"3mons ago" (#1329)
|
|
78
|
+
- Preserve surrounding whitespace when removing skip tokens during
|
|
79
|
+
translation to avoid spurious double spaces (#1324)
|
|
308
80
|
|
|
309
|
-
|
|
81
|
+
Improvements:
|
|
310
82
|
|
|
83
|
+
- Move project metadata and build configuration to ``pyproject.toml`` (#1311)
|
|
84
|
+
- Add alternative Korean date expressions for today, yesterday, tomorrow,
|
|
85
|
+
and "N months ago/later" (#1289)
|
|
86
|
+
- Expand Czech date translations with additional inflections, word numbers,
|
|
87
|
+
decade and century expressions, and clock phrases like "čtvrt na tři"
|
|
88
|
+
(#1325)
|
|
89
|
+
- Replace internal ``OrderedDict`` usage with the built-in ``dict`` (#1328)
|
|
311
90
|
|
|
312
|
-
|
|
91
|
+
1.4.0 (2026-03-26)
|
|
92
|
+
------------------
|
|
313
93
|
|
|
314
|
-
|
|
315
|
-
>>> JalaliCalendar('جمعه سی ام اسفند ۱۳۸۷').get_date()
|
|
316
|
-
DateData(date_obj=datetime.datetime(2009, 3, 20, 0, 0), period='day', locale=None)
|
|
94
|
+
Security fixes:
|
|
317
95
|
|
|
96
|
+
- Remove import-time loading of timezone offset data from pickle to prevent
|
|
97
|
+
unsafe deserialization from packaged data
|
|
98
|
+
- Replace ``eval()`` use when parsing ``no_word_spacing`` with strict boolean
|
|
99
|
+
parsing to prevent code execution from locale metadata (#1056)
|
|
318
100
|
|
|
319
|
-
|
|
101
|
+
New features:
|
|
320
102
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
DateData(date_obj=datetime.datetime(2015, 10, 30, 20, 30), period='day', locale=None)
|
|
103
|
+
- Add support for expressions like "N {interval} from now" in English (#1271)
|
|
104
|
+
- Add support for the ``en-US`` locale (#1222)
|
|
324
105
|
|
|
325
|
-
|
|
106
|
+
Fixes:
|
|
326
107
|
|
|
108
|
+
- Honor ``REQUIRE_PARTS`` for ambiguous month-number inputs by retrying with a
|
|
109
|
+
year-biased ``DATE_ORDER`` (#1298)
|
|
110
|
+
- Fix parsing word-number relative phrases such as "two days later" (#1316)
|
|
111
|
+
- Allow md5hash to work in FIPS environments (#1267)
|
|
327
112
|
|
|
328
|
-
|
|
113
|
+
Improvements:
|
|
329
114
|
|
|
330
|
-
|
|
331
|
-
|
|
115
|
+
- Add Bosnian Cyrillic (ijekavica) date translations (#1293)
|
|
116
|
+
- Add a new browser-based demo to the project documentation (#1306)
|
|
117
|
+
- Update installation documentation to replace ``setup.py install`` guidance
|
|
118
|
+
(#1310)
|
|
119
|
+
- Add a project security policy (#1318)
|
|
332
120
|
|
|
333
121
|
1.3.0 (2026-02-04)
|
|
334
122
|
------------------
|