dateparser 1.4.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.4.0 → dateparser-1.4.1}/HISTORY.rst +47 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/PKG-INFO +44 -286
- dateparser-1.4.1/README.rst +415 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/__init__.py +1 -1
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/calendars/jalali_parser.py +25 -30
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/conf.py +2 -0
- dateparser-1.4.1/dateparser/custom_language_detection/fasttext.py +35 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/af.py +31 -31
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/am.py +30 -30
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ar.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ast.py +46 -46
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Latn.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/be.py +43 -43
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bg.py +54 -54
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bn.py +16 -16
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/br.py +26 -26
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs-Cyrl.py +66 -66
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs-Latn.py +42 -42
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs.py +42 -42
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ca.py +37 -37
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ce.py +28 -28
- {dateparser-1.4.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.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cy.py +16 -16
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/da.py +44 -44
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/de.py +43 -43
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dsb.py +50 -50
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dz.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ee.py +30 -30
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/el.py +49 -49
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/en.py +63 -60
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/es.py +55 -55
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/et.py +30 -30
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eu.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fa.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fi.py +36 -36
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fil.py +20 -20
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fo.py +44 -44
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fr.py +49 -49
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fur.py +26 -26
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fy.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ga.py +29 -29
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gd.py +42 -42
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gl.py +42 -42
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gu.py +17 -17
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/he.py +28 -28
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hi.py +22 -22
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hr.py +56 -56
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hsb.py +50 -50
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hu.py +15 -15
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hy.py +26 -26
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/id.py +31 -31
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/is.py +35 -35
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/it.py +43 -43
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ja.py +33 -33
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jgo.py +12 -12
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ka.py +19 -19
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kea.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kk.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kl.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/km.py +17 -17
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kn.py +29 -29
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ko.py +22 -17
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksh.py +4 -4
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ky.py +32 -32
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lb.py +28 -28
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lkt.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lo.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lt.py +43 -43
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lv.py +46 -46
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mk.py +28 -28
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ml.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mn.py +21 -21
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mr.py +32 -32
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ms.py +25 -25
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mt.py +2 -2
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/my.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mzn.py +17 -17
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nb.py +90 -47
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ne.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nl.py +30 -30
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nn.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/os.py +5 -5
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Guru.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa.py +24 -24
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pl.py +45 -45
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pt.py +248 -248
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ro.py +41 -41
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ru.py +44 -44
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sah.py +15 -15
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/se.py +28 -28
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/si.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sk.py +49 -49
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sl.py +38 -38
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sq.py +28 -28
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Cyrl.py +48 -48
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Latn.py +48 -48
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr.py +48 -48
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sv.py +45 -45
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sw.py +23 -23
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ta.py +50 -50
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/te.py +36 -36
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/th.py +27 -27
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/to.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tr.py +22 -22
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ug.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uk.py +53 -53
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ur.py +36 -36
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Cyrl.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Latn.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vi.py +15 -15
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/wae.py +25 -25
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yi.py +8 -8
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yue.py +14 -14
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hans.py +16 -16
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hant.py +50 -50
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh.py +22 -22
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zu.py +12 -12
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/date.py +14 -3
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/freshness_date_parser.py +13 -11
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/languages/loader.py +2 -2
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/languages/locale.py +48 -4
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/parser.py +9 -17
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/search/search.py +29 -4
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/PKG-INFO +44 -286
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/SOURCES.txt +2 -2
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/requires.txt +0 -4
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_cli/cli.py +13 -5
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_data/settings.py +1 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/get_cldr_data.py +10 -11
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/order_languages.py +1 -2
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/utils.py +2 -3
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/write_complete_data.py +40 -5
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/custom_language_detection.rst +8 -36
- dateparser-1.4.1/docs/index.rst +30 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/settings.rst +30 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/supported_locales.rst +6 -0
- dateparser-1.4.1/pyproject.toml +85 -0
- dateparser-1.4.1/setup.py +14 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_date.py +9 -13
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_date_parser.py +112 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_freshness_date_parser.py +54 -3
- dateparser-1.4.1/tests/test_language_detect.py +185 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_languages.py +73 -29
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_search.py +6 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_settings.py +1 -0
- dateparser-1.4.1/tests/test_whitespace_preservation.py +103 -0
- dateparser-1.4.0/README.rst +0 -214
- dateparser-1.4.0/dateparser/custom_language_detection/fasttext.py +0 -43
- dateparser-1.4.0/dateparser/data/date_translation_data/cs.py +0 -316
- dateparser-1.4.0/docs/index.rst +0 -63
- dateparser-1.4.0/docs/introduction.rst +0 -275
- dateparser-1.4.0/pyproject.toml +0 -25
- dateparser-1.4.0/setup.py +0 -62
- dateparser-1.4.0/tests/test_language_detect.py +0 -118
- {dateparser-1.4.0 → dateparser-1.4.1}/AUTHORS.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/CONTRIBUTING.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/LICENSE +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/MANIFEST.in +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/calendars/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/calendars/hijri.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/calendars/hijri_parser.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/calendars/jalali.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/custom_language_detection/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/custom_language_detection/langdetect.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/custom_language_detection/language_mapping.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/agq.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ak.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/as.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/asa.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Cyrl.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bas.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bem.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bez.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bm.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/brx.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cgg.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ckb.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dav.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dje.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dua.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dyo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ebu.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ewo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ff.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gsw.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/guz.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gv.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ha.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/haw.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ig.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ii.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jmc.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kab.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kam.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kde.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/khq.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ki.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kln.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kok.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ks.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksb.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksf.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kw.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lag.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lg.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ln.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lrc.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lu.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luy.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mas.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mer.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mfe.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mg.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgh.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mua.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/naq.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nd.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nmg.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nnh.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nus.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nyn.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/om.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/or.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Arab.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ps.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/qu.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rm.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rn.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rof.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rw.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rwk.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/saq.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sbp.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/seh.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ses.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sg.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Latn.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Tfng.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/smn.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sn.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/so.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/teo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ti.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tl.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/twq.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tzm.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Arab.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vun.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/xog.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yav.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yo.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zgh.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/data/languages_info.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/date_parser.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/languages/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/languages/dictionary.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/languages/validation.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/search/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/search/detection.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/search/text_detection.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/timezone_parser.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/timezones.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/utils/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/utils/strptime.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser/utils/time_spans.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/dependency_links.txt +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/entry_points.txt +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/not-zip-safe +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser.egg-info/top_level.txt +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_cli/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_cli/exceptions.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_cli/fasttext_manager.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_cli/utils.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_data/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/dateparser_scripts/update_supported_languages_and_locales.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/Makefile +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/authors.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/conf.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/contributing.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/dateparser.calendars.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/dateparser.languages.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/dateparser.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/history.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/installation.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/make.bat +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/modules.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/template.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/docs/usage.rst +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/setup.cfg +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/__init__.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_clean_api.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_data.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_date_data.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_dateparser_data_integrity.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_hijri.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_jalali.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_loading.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_parser.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_pickle.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_timezone_parser.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_utils.py +0 -0
- {dateparser-1.4.0 → dateparser-1.4.1}/tests/test_utils_strptime.py +0 -0
|
@@ -3,6 +3,53 @@
|
|
|
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
|
+
|
|
6
53
|
1.4.0 (2026-03-26)
|
|
7
54
|
------------------
|
|
8
55
|
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dateparser
|
|
3
|
-
Version: 1.4.
|
|
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,66 @@ 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.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
Dependencies
|
|
281
|
-
============
|
|
282
|
-
|
|
283
|
-
`dateparser` relies on following libraries in some ways:
|
|
284
|
-
|
|
285
|
-
* dateutil_'s module ``relativedelta`` for its freshness parser.
|
|
286
|
-
* convertdate_ to convert *Jalali* dates to *Gregorian*.
|
|
287
|
-
* hijridate_ to convert *Hijri* dates to *Gregorian*.
|
|
288
|
-
* tzlocal_ to reliably get local timezone.
|
|
289
|
-
* ruamel.yaml_ (optional) for operations on language files.
|
|
290
|
-
|
|
291
|
-
.. _dateutil: https://pypi.python.org/pypi/python-dateutil
|
|
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
|
|
296
|
-
|
|
297
|
-
Supported languages and locales
|
|
298
|
-
===============================
|
|
299
|
-
You can check the supported locales by visiting the "`supported-locales`" section.
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
Supported Calendars
|
|
303
|
-
===================
|
|
304
|
-
|
|
305
|
-
Apart from the Georgian calendar, `dateparser` supports the `Persian Jalali calendar` and the `Hijri/Islami calendar`
|
|
39
|
+
.. :changelog:
|
|
306
40
|
|
|
307
|
-
|
|
41
|
+
History
|
|
42
|
+
=======
|
|
308
43
|
|
|
309
|
-
|
|
44
|
+
1.4.1 (2026-06-15)
|
|
45
|
+
------------------
|
|
310
46
|
|
|
47
|
+
Breaking changes:
|
|
311
48
|
|
|
312
|
-
|
|
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)
|
|
313
53
|
|
|
314
|
-
|
|
315
|
-
>>> JalaliCalendar('جمعه سی ام اسفند ۱۳۸۷').get_date()
|
|
316
|
-
DateData(date_obj=datetime.datetime(2009, 3, 20, 0, 0), period='day', locale=None)
|
|
54
|
+
Security fixes:
|
|
317
55
|
|
|
56
|
+
- Make digit quantifiers possessive in the relative-date regexes to prevent
|
|
57
|
+
quadratic backtracking (ReDoS) on long digit runs (#1335)
|
|
318
58
|
|
|
319
|
-
|
|
59
|
+
New features:
|
|
320
60
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
DateData(date_obj=datetime.datetime(2015, 10, 30, 20, 30), period='day', locale=None)
|
|
61
|
+
- Add the ``USE_GIVEN_LANGUAGE_ORDER`` setting to try ``languages`` and
|
|
62
|
+
``locales`` in the order given rather than by frequency (#789)
|
|
324
63
|
|
|
325
|
-
|
|
64
|
+
Fixes:
|
|
326
65
|
|
|
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)
|
|
327
80
|
|
|
328
|
-
|
|
81
|
+
Improvements:
|
|
329
82
|
|
|
330
|
-
|
|
331
|
-
|
|
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)
|
|
332
90
|
|
|
333
91
|
1.4.0 (2026-03-26)
|
|
334
92
|
------------------
|