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.
Files changed (315) hide show
  1. {dateparser-1.3.0 → dateparser-1.4.1}/CONTRIBUTING.rst +1 -14
  2. {dateparser-1.3.0 → dateparser-1.4.1}/HISTORY.rst +77 -0
  3. {dateparser-1.3.0 → dateparser-1.4.1}/MANIFEST.in +0 -1
  4. {dateparser-1.3.0 → dateparser-1.4.1}/PKG-INFO +65 -277
  5. dateparser-1.4.1/README.rst +415 -0
  6. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/__init__.py +1 -1
  7. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/jalali_parser.py +25 -30
  8. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/conf.py +5 -1
  9. dateparser-1.4.1/dateparser/custom_language_detection/fasttext.py +35 -0
  10. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/af.py +31 -31
  11. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/am.py +30 -30
  12. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ar.py +14 -14
  13. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ast.py +46 -46
  14. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Latn.py +14 -14
  15. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az.py +14 -14
  16. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/be.py +43 -43
  17. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bg.py +54 -54
  18. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bn.py +16 -16
  19. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/br.py +26 -26
  20. dateparser-1.4.1/dateparser/data/date_translation_data/bs-Cyrl.py +294 -0
  21. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs-Latn.py +42 -42
  22. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bs.py +42 -42
  23. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ca.py +37 -37
  24. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ce.py +28 -28
  25. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/chr.py +36 -36
  26. dateparser-1.4.1/dateparser/data/date_translation_data/cs.py +642 -0
  27. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cy.py +16 -16
  28. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/da.py +44 -44
  29. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/de.py +43 -43
  30. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dsb.py +50 -50
  31. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dz.py +14 -14
  32. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ee.py +30 -30
  33. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/el.py +49 -49
  34. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/en.py +68 -61
  35. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/es.py +55 -55
  36. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/et.py +30 -30
  37. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eu.py +14 -14
  38. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fa.py +14 -14
  39. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fi.py +36 -36
  40. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fil.py +20 -20
  41. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fo.py +44 -44
  42. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fr.py +49 -49
  43. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fur.py +26 -26
  44. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/fy.py +24 -24
  45. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ga.py +29 -29
  46. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gd.py +42 -42
  47. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gl.py +42 -42
  48. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gu.py +17 -17
  49. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/he.py +28 -28
  50. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hi.py +22 -22
  51. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hr.py +56 -56
  52. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hsb.py +50 -50
  53. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hu.py +15 -15
  54. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/hy.py +26 -26
  55. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/id.py +31 -31
  56. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/is.py +35 -35
  57. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/it.py +43 -43
  58. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ja.py +33 -33
  59. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jgo.py +12 -12
  60. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ka.py +19 -19
  61. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kea.py +24 -24
  62. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kk.py +24 -24
  63. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kl.py +14 -14
  64. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/km.py +17 -17
  65. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kn.py +29 -29
  66. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ko.py +22 -17
  67. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksh.py +4 -4
  68. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ky.py +32 -32
  69. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lb.py +28 -28
  70. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lkt.py +14 -14
  71. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lo.py +24 -24
  72. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lt.py +43 -43
  73. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lv.py +46 -46
  74. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mk.py +28 -28
  75. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ml.py +14 -14
  76. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mn.py +21 -21
  77. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mr.py +32 -32
  78. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ms.py +25 -25
  79. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mt.py +2 -2
  80. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/my.py +14 -14
  81. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mzn.py +17 -17
  82. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nb.py +90 -47
  83. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ne.py +14 -14
  84. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nl.py +30 -30
  85. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nn.py +24 -24
  86. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/os.py +5 -5
  87. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Guru.py +24 -24
  88. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa.py +24 -24
  89. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pl.py +45 -45
  90. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pt.py +248 -248
  91. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ro.py +41 -41
  92. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ru.py +44 -44
  93. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sah.py +15 -15
  94. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/se.py +28 -28
  95. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/si.py +14 -14
  96. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sk.py +49 -49
  97. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sl.py +38 -38
  98. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sq.py +28 -28
  99. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Cyrl.py +48 -48
  100. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr-Latn.py +48 -48
  101. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sr.py +48 -48
  102. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sv.py +45 -45
  103. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sw.py +23 -23
  104. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ta.py +50 -50
  105. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/te.py +36 -36
  106. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/th.py +27 -27
  107. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/to.py +14 -14
  108. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tr.py +22 -22
  109. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ug.py +14 -14
  110. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uk.py +53 -53
  111. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ur.py +36 -36
  112. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Cyrl.py +14 -14
  113. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Latn.py +14 -14
  114. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz.py +14 -14
  115. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vi.py +15 -15
  116. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/wae.py +25 -25
  117. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yi.py +8 -8
  118. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yue.py +14 -14
  119. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hans.py +16 -16
  120. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh-Hant.py +50 -50
  121. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zh.py +22 -22
  122. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zu.py +12 -12
  123. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/languages_info.py +1 -0
  124. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/date.py +53 -20
  125. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/freshness_date_parser.py +13 -11
  126. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/dictionary.py +10 -2
  127. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/loader.py +2 -2
  128. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/locale.py +57 -5
  129. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/parser.py +9 -17
  130. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/search.py +29 -4
  131. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/timezone_parser.py +4 -47
  132. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/PKG-INFO +65 -277
  133. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/SOURCES.txt +2 -3
  134. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/requires.txt +0 -4
  135. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/cli.py +13 -5
  136. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_data/settings.py +1 -0
  137. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/get_cldr_data.py +10 -11
  138. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/order_languages.py +1 -2
  139. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/utils.py +2 -3
  140. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/write_complete_data.py +40 -5
  141. {dateparser-1.3.0 → dateparser-1.4.1}/docs/custom_language_detection.rst +8 -36
  142. dateparser-1.4.1/docs/index.rst +30 -0
  143. {dateparser-1.3.0 → dateparser-1.4.1}/docs/installation.rst +1 -1
  144. {dateparser-1.3.0 → dateparser-1.4.1}/docs/settings.rst +30 -0
  145. {dateparser-1.3.0 → dateparser-1.4.1}/docs/supported_locales.rst +7 -1
  146. dateparser-1.4.1/pyproject.toml +85 -0
  147. dateparser-1.4.1/setup.py +14 -0
  148. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_clean_api.py +47 -0
  149. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date.py +9 -13
  150. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date_parser.py +198 -0
  151. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_freshness_date_parser.py +70 -3
  152. dateparser-1.4.1/tests/test_language_detect.py +185 -0
  153. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_languages.py +128 -29
  154. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_loading.py +50 -0
  155. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_search.py +7 -1
  156. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_settings.py +1 -0
  157. dateparser-1.4.1/tests/test_whitespace_preservation.py +103 -0
  158. dateparser-1.3.0/README.rst +0 -214
  159. dateparser-1.3.0/dateparser/custom_language_detection/fasttext.py +0 -43
  160. dateparser-1.3.0/dateparser/data/date_translation_data/bs-Cyrl.py +0 -226
  161. dateparser-1.3.0/dateparser/data/date_translation_data/cs.py +0 -316
  162. dateparser-1.3.0/dateparser/data/dateparser_tz_cache.pkl +0 -0
  163. dateparser-1.3.0/docs/index.rst +0 -63
  164. dateparser-1.3.0/docs/introduction.rst +0 -275
  165. dateparser-1.3.0/pyproject.toml +0 -20
  166. dateparser-1.3.0/setup.py +0 -62
  167. dateparser-1.3.0/tests/test_language_detect.py +0 -118
  168. {dateparser-1.3.0 → dateparser-1.4.1}/AUTHORS.rst +0 -0
  169. {dateparser-1.3.0 → dateparser-1.4.1}/LICENSE +0 -0
  170. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/__init__.py +0 -0
  171. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/hijri.py +0 -0
  172. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/hijri_parser.py +0 -0
  173. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/calendars/jalali.py +0 -0
  174. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/__init__.py +0 -0
  175. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/langdetect.py +0 -0
  176. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/custom_language_detection/language_mapping.py +0 -0
  177. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/__init__.py +0 -0
  178. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/__init__.py +0 -0
  179. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/agq.py +0 -0
  180. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ak.py +0 -0
  181. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/as.py +0 -0
  182. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/asa.py +0 -0
  183. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/az-Cyrl.py +0 -0
  184. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bas.py +0 -0
  185. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bem.py +0 -0
  186. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bez.py +0 -0
  187. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bm.py +0 -0
  188. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/bo.py +0 -0
  189. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/brx.py +0 -0
  190. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/cgg.py +0 -0
  191. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ckb.py +0 -0
  192. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dav.py +0 -0
  193. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dje.py +0 -0
  194. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dua.py +0 -0
  195. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/dyo.py +0 -0
  196. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ebu.py +0 -0
  197. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/eo.py +0 -0
  198. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ewo.py +0 -0
  199. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ff.py +0 -0
  200. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gsw.py +0 -0
  201. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/guz.py +0 -0
  202. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/gv.py +0 -0
  203. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ha.py +0 -0
  204. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/haw.py +0 -0
  205. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ig.py +0 -0
  206. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ii.py +0 -0
  207. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/jmc.py +0 -0
  208. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kab.py +0 -0
  209. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kam.py +0 -0
  210. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kde.py +0 -0
  211. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/khq.py +0 -0
  212. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ki.py +0 -0
  213. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kln.py +0 -0
  214. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kok.py +0 -0
  215. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ks.py +0 -0
  216. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksb.py +0 -0
  217. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ksf.py +0 -0
  218. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/kw.py +0 -0
  219. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lag.py +0 -0
  220. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lg.py +0 -0
  221. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ln.py +0 -0
  222. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lrc.py +0 -0
  223. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/lu.py +0 -0
  224. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luo.py +0 -0
  225. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/luy.py +0 -0
  226. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mas.py +0 -0
  227. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mer.py +0 -0
  228. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mfe.py +0 -0
  229. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mg.py +0 -0
  230. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgh.py +0 -0
  231. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mgo.py +0 -0
  232. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/mua.py +0 -0
  233. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/naq.py +0 -0
  234. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nd.py +0 -0
  235. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nmg.py +0 -0
  236. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nnh.py +0 -0
  237. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nus.py +0 -0
  238. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/nyn.py +0 -0
  239. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/om.py +0 -0
  240. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/or.py +0 -0
  241. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/pa-Arab.py +0 -0
  242. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ps.py +0 -0
  243. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/qu.py +0 -0
  244. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rm.py +0 -0
  245. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rn.py +0 -0
  246. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rof.py +0 -0
  247. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rw.py +0 -0
  248. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/rwk.py +0 -0
  249. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/saq.py +0 -0
  250. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sbp.py +0 -0
  251. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/seh.py +0 -0
  252. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ses.py +0 -0
  253. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sg.py +0 -0
  254. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Latn.py +0 -0
  255. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi-Tfng.py +0 -0
  256. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/shi.py +0 -0
  257. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/smn.py +0 -0
  258. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/sn.py +0 -0
  259. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/so.py +0 -0
  260. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/teo.py +0 -0
  261. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/ti.py +0 -0
  262. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tl.py +0 -0
  263. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/twq.py +0 -0
  264. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/tzm.py +0 -0
  265. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/uz-Arab.py +0 -0
  266. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/vun.py +0 -0
  267. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/xog.py +0 -0
  268. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yav.py +0 -0
  269. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/yo.py +0 -0
  270. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/data/date_translation_data/zgh.py +0 -0
  271. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/date_parser.py +0 -0
  272. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/__init__.py +0 -0
  273. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/languages/validation.py +0 -0
  274. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/__init__.py +0 -0
  275. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/detection.py +0 -0
  276. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/search/text_detection.py +0 -0
  277. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/timezones.py +0 -0
  278. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/__init__.py +0 -0
  279. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/strptime.py +0 -0
  280. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser/utils/time_spans.py +0 -0
  281. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/dependency_links.txt +0 -0
  282. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/entry_points.txt +0 -0
  283. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/not-zip-safe +0 -0
  284. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser.egg-info/top_level.txt +0 -0
  285. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/__init__.py +0 -0
  286. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/exceptions.py +0 -0
  287. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/fasttext_manager.py +0 -0
  288. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_cli/utils.py +0 -0
  289. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_data/__init__.py +0 -0
  290. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/__init__.py +0 -0
  291. {dateparser-1.3.0 → dateparser-1.4.1}/dateparser_scripts/update_supported_languages_and_locales.py +0 -0
  292. {dateparser-1.3.0 → dateparser-1.4.1}/docs/Makefile +0 -0
  293. {dateparser-1.3.0 → dateparser-1.4.1}/docs/authors.rst +0 -0
  294. {dateparser-1.3.0 → dateparser-1.4.1}/docs/conf.py +0 -0
  295. {dateparser-1.3.0 → dateparser-1.4.1}/docs/contributing.rst +0 -0
  296. {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.calendars.rst +0 -0
  297. {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.languages.rst +0 -0
  298. {dateparser-1.3.0 → dateparser-1.4.1}/docs/dateparser.rst +0 -0
  299. {dateparser-1.3.0 → dateparser-1.4.1}/docs/history.rst +0 -0
  300. {dateparser-1.3.0 → dateparser-1.4.1}/docs/make.bat +0 -0
  301. {dateparser-1.3.0 → dateparser-1.4.1}/docs/modules.rst +0 -0
  302. {dateparser-1.3.0 → dateparser-1.4.1}/docs/template.rst +0 -0
  303. {dateparser-1.3.0 → dateparser-1.4.1}/docs/usage.rst +0 -0
  304. {dateparser-1.3.0 → dateparser-1.4.1}/setup.cfg +0 -0
  305. {dateparser-1.3.0 → dateparser-1.4.1}/tests/__init__.py +0 -0
  306. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_data.py +0 -0
  307. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_date_data.py +0 -0
  308. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_dateparser_data_integrity.py +0 -0
  309. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_hijri.py +0 -0
  310. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_jalali.py +0 -0
  311. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_parser.py +0 -0
  312. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_pickle.py +0 -0
  313. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_timezone_parser.py +0 -0
  314. {dateparser-1.3.0 → dateparser-1.4.1}/tests/test_utils.py +0 -0
  315. {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
- $ python setup.py develop
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
 
@@ -3,7 +3,6 @@ include CONTRIBUTING.rst
3
3
  include HISTORY.rst
4
4
  include LICENSE
5
5
  include README.rst
6
- include dateparser/data/dateparser_tz_cache.pkl
7
6
  include dateparser_data/settings.py
8
7
  include requirements.txt
9
8
 
@@ -1,16 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dateparser
3
- Version: 1.3.0
3
+ Version: 1.4.1
4
4
  Summary: Date parsing library designed to parse dates from HTML pages
5
- Home-page: https://github.com/scrapinghub/dateparser
6
- Author: Scrapinghub
7
- Author-email: opensource@zyte.com
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
- * Generic parsing of dates in over 200 language locales plus numerous formats in a language agnostic fashion.
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
- Dependencies
281
- ============
44
+ 1.4.1 (2026-06-15)
45
+ ------------------
282
46
 
283
- `dateparser` relies on following libraries in some ways:
47
+ Breaking changes:
284
48
 
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.
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
- .. _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
54
+ Security fixes:
296
55
 
297
- Supported languages and locales
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
- Supported Calendars
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
- Apart from the Georgian calendar, `dateparser` supports the `Persian Jalali calendar` and the `Hijri/Islami calendar`
64
+ Fixes:
306
65
 
307
- To be able to use them you need to install the `calendar` extra by typing:
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
- pip install dateparser[calendars]
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
- * Example using the `Persian Jalali calendar`. For more information, refer to `Persian Jalali Calendar <https://en.wikipedia.org/wiki/Iranian_calendars#Zoroastrian_calendar>`_.
91
+ 1.4.0 (2026-03-26)
92
+ ------------------
313
93
 
314
- >>> from dateparser.calendars.jalali import JalaliCalendar
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
- * Example using the `Hijri/Islamic Calendar`. For more information, refer to `Hijri Calendar <https://en.wikipedia.org/wiki/Islamic_calendar>`_.
101
+ New features:
320
102
 
321
- >>> from dateparser.calendars.hijri import HijriCalendar
322
- >>> HijriCalendar('17-01-1437 هـ 08:30 مساءً').get_date()
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
- .. note:: `HijriCalendar` only works with Python ≥ 3.7.
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
- .. :changelog:
113
+ Improvements:
329
114
 
330
- History
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
  ------------------