dateparser 1.2.1__tar.gz → 1.2.2__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 (305) hide show
  1. {dateparser-1.2.1 → dateparser-1.2.2}/CONTRIBUTING.rst +13 -0
  2. {dateparser-1.2.1 → dateparser-1.2.2}/HISTORY.rst +13 -0
  3. {dateparser-1.2.1 → dateparser-1.2.2}/MANIFEST.in +1 -0
  4. {dateparser-1.2.1 → dateparser-1.2.2}/PKG-INFO +17 -3
  5. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/__init__.py +1 -1
  6. dateparser-1.2.2/dateparser/data/dateparser_tz_cache.pkl +0 -0
  7. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/parser.py +6 -2
  8. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/search/__init__.py +2 -0
  9. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/search/search.py +7 -0
  10. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/timezone_parser.py +47 -4
  11. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/PKG-INFO +17 -3
  12. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/SOURCES.txt +1 -0
  13. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/requires.txt +1 -1
  14. {dateparser-1.2.1 → dateparser-1.2.2}/pyproject.toml +1 -1
  15. {dateparser-1.2.1 → dateparser-1.2.2}/setup.py +1 -1
  16. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_date_parser.py +20 -1
  17. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_search.py +14 -1
  18. {dateparser-1.2.1 → dateparser-1.2.2}/AUTHORS.rst +0 -0
  19. {dateparser-1.2.1 → dateparser-1.2.2}/LICENSE +0 -0
  20. {dateparser-1.2.1 → dateparser-1.2.2}/README.rst +0 -0
  21. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/calendars/__init__.py +0 -0
  22. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/calendars/hijri.py +0 -0
  23. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/calendars/hijri_parser.py +0 -0
  24. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/calendars/jalali.py +0 -0
  25. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/calendars/jalali_parser.py +0 -0
  26. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/conf.py +0 -0
  27. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/custom_language_detection/__init__.py +0 -0
  28. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/custom_language_detection/fasttext.py +0 -0
  29. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/custom_language_detection/langdetect.py +0 -0
  30. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/custom_language_detection/language_mapping.py +0 -0
  31. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/__init__.py +0 -0
  32. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/__init__.py +0 -0
  33. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/af.py +0 -0
  34. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/agq.py +0 -0
  35. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ak.py +0 -0
  36. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/am.py +0 -0
  37. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ar.py +0 -0
  38. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/as.py +0 -0
  39. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/asa.py +0 -0
  40. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ast.py +0 -0
  41. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/az-Cyrl.py +0 -0
  42. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/az-Latn.py +0 -0
  43. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/az.py +0 -0
  44. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bas.py +0 -0
  45. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/be.py +0 -0
  46. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bem.py +0 -0
  47. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bez.py +0 -0
  48. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bg.py +0 -0
  49. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bm.py +0 -0
  50. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bn.py +0 -0
  51. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bo.py +0 -0
  52. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/br.py +0 -0
  53. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/brx.py +0 -0
  54. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bs-Cyrl.py +0 -0
  55. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bs-Latn.py +0 -0
  56. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/bs.py +0 -0
  57. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ca.py +0 -0
  58. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ce.py +0 -0
  59. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/cgg.py +0 -0
  60. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/chr.py +0 -0
  61. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ckb.py +0 -0
  62. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/cs.py +0 -0
  63. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/cy.py +0 -0
  64. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/da.py +0 -0
  65. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dav.py +0 -0
  66. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/de.py +0 -0
  67. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dje.py +0 -0
  68. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dsb.py +0 -0
  69. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dua.py +0 -0
  70. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dyo.py +0 -0
  71. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/dz.py +0 -0
  72. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ebu.py +0 -0
  73. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ee.py +0 -0
  74. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/el.py +0 -0
  75. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/en.py +0 -0
  76. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/eo.py +0 -0
  77. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/es.py +0 -0
  78. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/et.py +0 -0
  79. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/eu.py +0 -0
  80. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ewo.py +0 -0
  81. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fa.py +0 -0
  82. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ff.py +0 -0
  83. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fi.py +0 -0
  84. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fil.py +0 -0
  85. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fo.py +0 -0
  86. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fr.py +0 -0
  87. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fur.py +0 -0
  88. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/fy.py +0 -0
  89. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ga.py +0 -0
  90. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/gd.py +0 -0
  91. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/gl.py +0 -0
  92. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/gsw.py +0 -0
  93. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/gu.py +0 -0
  94. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/guz.py +0 -0
  95. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/gv.py +0 -0
  96. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ha.py +0 -0
  97. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/haw.py +0 -0
  98. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/he.py +0 -0
  99. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/hi.py +0 -0
  100. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/hr.py +0 -0
  101. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/hsb.py +0 -0
  102. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/hu.py +0 -0
  103. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/hy.py +0 -0
  104. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/id.py +0 -0
  105. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ig.py +0 -0
  106. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ii.py +0 -0
  107. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/is.py +0 -0
  108. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/it.py +0 -0
  109. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ja.py +0 -0
  110. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/jgo.py +0 -0
  111. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/jmc.py +0 -0
  112. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ka.py +0 -0
  113. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kab.py +0 -0
  114. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kam.py +0 -0
  115. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kde.py +0 -0
  116. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kea.py +0 -0
  117. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/khq.py +0 -0
  118. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ki.py +0 -0
  119. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kk.py +0 -0
  120. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kl.py +0 -0
  121. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kln.py +0 -0
  122. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/km.py +0 -0
  123. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kn.py +0 -0
  124. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ko.py +0 -0
  125. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kok.py +0 -0
  126. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ks.py +0 -0
  127. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ksb.py +0 -0
  128. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ksf.py +0 -0
  129. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ksh.py +0 -0
  130. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/kw.py +0 -0
  131. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ky.py +0 -0
  132. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lag.py +0 -0
  133. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lb.py +0 -0
  134. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lg.py +0 -0
  135. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lkt.py +0 -0
  136. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ln.py +0 -0
  137. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lo.py +0 -0
  138. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lrc.py +0 -0
  139. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lt.py +0 -0
  140. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lu.py +0 -0
  141. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/luo.py +0 -0
  142. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/luy.py +0 -0
  143. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/lv.py +0 -0
  144. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mas.py +0 -0
  145. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mer.py +0 -0
  146. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mfe.py +0 -0
  147. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mg.py +0 -0
  148. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mgh.py +0 -0
  149. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mgo.py +0 -0
  150. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mk.py +0 -0
  151. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ml.py +0 -0
  152. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mn.py +0 -0
  153. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mr.py +0 -0
  154. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ms.py +0 -0
  155. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mt.py +0 -0
  156. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mua.py +0 -0
  157. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/my.py +0 -0
  158. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/mzn.py +0 -0
  159. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/naq.py +0 -0
  160. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nb.py +0 -0
  161. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nd.py +0 -0
  162. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ne.py +0 -0
  163. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nl.py +0 -0
  164. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nmg.py +0 -0
  165. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nn.py +0 -0
  166. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nnh.py +0 -0
  167. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nus.py +0 -0
  168. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/nyn.py +0 -0
  169. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/om.py +0 -0
  170. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/or.py +0 -0
  171. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/os.py +0 -0
  172. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/pa-Arab.py +0 -0
  173. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/pa-Guru.py +0 -0
  174. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/pa.py +0 -0
  175. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/pl.py +0 -0
  176. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ps.py +0 -0
  177. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/pt.py +0 -0
  178. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/qu.py +0 -0
  179. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/rm.py +0 -0
  180. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/rn.py +0 -0
  181. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ro.py +0 -0
  182. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/rof.py +0 -0
  183. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ru.py +0 -0
  184. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/rw.py +0 -0
  185. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/rwk.py +0 -0
  186. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sah.py +0 -0
  187. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/saq.py +0 -0
  188. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sbp.py +0 -0
  189. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/se.py +0 -0
  190. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/seh.py +0 -0
  191. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ses.py +0 -0
  192. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sg.py +0 -0
  193. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/shi-Latn.py +0 -0
  194. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/shi-Tfng.py +0 -0
  195. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/shi.py +0 -0
  196. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/si.py +0 -0
  197. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sk.py +0 -0
  198. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sl.py +0 -0
  199. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/smn.py +0 -0
  200. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sn.py +0 -0
  201. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/so.py +0 -0
  202. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sq.py +0 -0
  203. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sr-Cyrl.py +0 -0
  204. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sr-Latn.py +0 -0
  205. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sr.py +0 -0
  206. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sv.py +0 -0
  207. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/sw.py +0 -0
  208. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ta.py +0 -0
  209. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/te.py +0 -0
  210. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/teo.py +0 -0
  211. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/th.py +0 -0
  212. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ti.py +0 -0
  213. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/tl.py +0 -0
  214. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/to.py +0 -0
  215. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/tr.py +0 -0
  216. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/twq.py +0 -0
  217. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/tzm.py +0 -0
  218. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ug.py +0 -0
  219. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/uk.py +0 -0
  220. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/ur.py +0 -0
  221. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/uz-Arab.py +0 -0
  222. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/uz-Cyrl.py +0 -0
  223. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/uz-Latn.py +0 -0
  224. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/uz.py +0 -0
  225. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/vi.py +0 -0
  226. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/vun.py +0 -0
  227. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/wae.py +0 -0
  228. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/xog.py +0 -0
  229. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/yav.py +0 -0
  230. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/yi.py +0 -0
  231. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/yo.py +0 -0
  232. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/yue.py +0 -0
  233. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/zgh.py +0 -0
  234. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/zh-Hans.py +0 -0
  235. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/zh-Hant.py +0 -0
  236. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/zh.py +0 -0
  237. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/date_translation_data/zu.py +0 -0
  238. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/data/languages_info.py +0 -0
  239. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/date.py +0 -0
  240. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/date_parser.py +0 -0
  241. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/freshness_date_parser.py +0 -0
  242. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/languages/__init__.py +0 -0
  243. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/languages/dictionary.py +0 -0
  244. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/languages/loader.py +0 -0
  245. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/languages/locale.py +0 -0
  246. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/languages/validation.py +0 -0
  247. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/search/detection.py +0 -0
  248. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/search/text_detection.py +0 -0
  249. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/timezones.py +0 -0
  250. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/utils/__init__.py +0 -0
  251. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser/utils/strptime.py +0 -0
  252. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/dependency_links.txt +0 -0
  253. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/entry_points.txt +0 -0
  254. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/not-zip-safe +0 -0
  255. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser.egg-info/top_level.txt +0 -0
  256. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_cli/__init__.py +0 -0
  257. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_cli/cli.py +0 -0
  258. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_cli/exceptions.py +0 -0
  259. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_cli/fasttext_manager.py +0 -0
  260. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_cli/utils.py +0 -0
  261. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_data/__init__.py +0 -0
  262. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_data/settings.py +0 -0
  263. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/__init__.py +0 -0
  264. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/get_cldr_data.py +0 -0
  265. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/order_languages.py +0 -0
  266. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/update_supported_languages_and_locales.py +0 -0
  267. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/utils.py +0 -0
  268. {dateparser-1.2.1 → dateparser-1.2.2}/dateparser_scripts/write_complete_data.py +0 -0
  269. {dateparser-1.2.1 → dateparser-1.2.2}/docs/Makefile +0 -0
  270. {dateparser-1.2.1 → dateparser-1.2.2}/docs/authors.rst +0 -0
  271. {dateparser-1.2.1 → dateparser-1.2.2}/docs/conf.py +0 -0
  272. {dateparser-1.2.1 → dateparser-1.2.2}/docs/contributing.rst +0 -0
  273. {dateparser-1.2.1 → dateparser-1.2.2}/docs/custom_language_detection.rst +0 -0
  274. {dateparser-1.2.1 → dateparser-1.2.2}/docs/dateparser.calendars.rst +0 -0
  275. {dateparser-1.2.1 → dateparser-1.2.2}/docs/dateparser.languages.rst +0 -0
  276. {dateparser-1.2.1 → dateparser-1.2.2}/docs/dateparser.rst +0 -0
  277. {dateparser-1.2.1 → dateparser-1.2.2}/docs/history.rst +0 -0
  278. {dateparser-1.2.1 → dateparser-1.2.2}/docs/index.rst +0 -0
  279. {dateparser-1.2.1 → dateparser-1.2.2}/docs/installation.rst +0 -0
  280. {dateparser-1.2.1 → dateparser-1.2.2}/docs/introduction.rst +0 -0
  281. {dateparser-1.2.1 → dateparser-1.2.2}/docs/make.bat +0 -0
  282. {dateparser-1.2.1 → dateparser-1.2.2}/docs/modules.rst +0 -0
  283. {dateparser-1.2.1 → dateparser-1.2.2}/docs/settings.rst +0 -0
  284. {dateparser-1.2.1 → dateparser-1.2.2}/docs/supported_locales.rst +0 -0
  285. {dateparser-1.2.1 → dateparser-1.2.2}/docs/template.rst +0 -0
  286. {dateparser-1.2.1 → dateparser-1.2.2}/docs/usage.rst +0 -0
  287. {dateparser-1.2.1 → dateparser-1.2.2}/setup.cfg +0 -0
  288. {dateparser-1.2.1 → dateparser-1.2.2}/tests/__init__.py +0 -0
  289. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_clean_api.py +0 -0
  290. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_data.py +0 -0
  291. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_date.py +0 -0
  292. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_date_data.py +0 -0
  293. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_dateparser_data_integrity.py +0 -0
  294. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_freshness_date_parser.py +0 -0
  295. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_hijri.py +0 -0
  296. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_jalali.py +0 -0
  297. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_language_detect.py +0 -0
  298. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_languages.py +0 -0
  299. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_loading.py +0 -0
  300. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_parser.py +0 -0
  301. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_pickle.py +0 -0
  302. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_settings.py +0 -0
  303. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_timezone_parser.py +0 -0
  304. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_utils.py +0 -0
  305. {dateparser-1.2.1 → dateparser-1.2.2}/tests/test_utils_strptime.py +0 -0
@@ -179,3 +179,16 @@ 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,19 @@
3
3
  History
4
4
  =======
5
5
 
6
+ 1.2.2 (2025-06-26)
7
+ ------------------
8
+
9
+ Fixes:
10
+
11
+ - Handle the Russian preposition “с” (#1261)
12
+ - Fix weekday search (#1274)
13
+
14
+ Improvements:
15
+
16
+ - Add Python 3.14 support (#1273)
17
+ - Cache timezone offsets to improve import time (#1250)
18
+
6
19
  1.2.1 (2025-02-05)
7
20
  ------------------
8
21
 
@@ -3,6 +3,7 @@ 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
6
7
  include dateparser_data/settings.py
7
8
  include requirements.txt
8
9
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dateparser
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Date parsing library designed to parse dates from HTML pages
5
5
  Home-page: https://github.com/scrapinghub/dateparser
6
6
  Author: Scrapinghub
@@ -24,7 +24,7 @@ License-File: LICENSE
24
24
  License-File: AUTHORS.rst
25
25
  Requires-Dist: python-dateutil>=2.7.0
26
26
  Requires-Dist: pytz>=2024.2
27
- Requires-Dist: regex!=2019.02.19,!=2021.8.27,>=2015.06.24
27
+ Requires-Dist: regex>=2024.9.11
28
28
  Requires-Dist: tzlocal>=0.2
29
29
  Provides-Extra: calendars
30
30
  Requires-Dist: convertdate>=2.2.1; extra == "calendars"
@@ -41,6 +41,7 @@ Dynamic: description
41
41
  Dynamic: home-page
42
42
  Dynamic: keywords
43
43
  Dynamic: license
44
+ Dynamic: license-file
44
45
  Dynamic: project-url
45
46
  Dynamic: provides-extra
46
47
  Dynamic: requires-dist
@@ -318,6 +319,19 @@ To be able to use them you need to install the `calendar` extra by typing:
318
319
  History
319
320
  =======
320
321
 
322
+ 1.2.2 (2025-06-26)
323
+ ------------------
324
+
325
+ Fixes:
326
+
327
+ - Handle the Russian preposition “с” (#1261)
328
+ - Fix weekday search (#1274)
329
+
330
+ Improvements:
331
+
332
+ - Add Python 3.14 support (#1273)
333
+ - Cache timezone offsets to improve import time (#1250)
334
+
321
335
  1.2.1 (2025-02-05)
322
336
  ------------------
323
337
 
@@ -1,4 +1,4 @@
1
- __version__ = "1.2.1"
1
+ __version__ = "1.2.2"
2
2
 
3
3
  from .conf import apply_settings
4
4
  from .date import DateDataParser
@@ -399,8 +399,8 @@ class _parser:
399
399
  return datetime(**params)
400
400
  except ValueError as e:
401
401
  error_text = e.__str__()
402
- error_msgs = ["day is out of range", "day must be in"]
403
- if error_msgs[0] in error_text or error_msgs[1] in error_text:
402
+ error_msgs = ["day is out of range", "day must be in", "must be in range"]
403
+ if any(msg in error_text for msg in error_msgs):
404
404
  if not (self._token_day or hasattr(self, "_token_weekday")):
405
405
  # if day is not available put last day of the month
406
406
  params["day"] = get_last_day_of_month(
@@ -512,6 +512,10 @@ class _parser:
512
512
 
513
513
  dateobj = dateobj + delta
514
514
 
515
+ # set the token_month here so that it is not subsequently
516
+ # altered by _correct_for_month
517
+ self._token_month = dateobj.month
518
+
515
519
  # NOTE: If this assert fires, self.now needs to be made offset-aware in a similar
516
520
  # way that dateobj is temporarily made offset-aware.
517
521
  assert not (self.now.tzinfo is None and dateobj.tzinfo is not None), (
@@ -57,6 +57,8 @@ def search_dates(
57
57
  ('on May 6th 2004', datetime.datetime(2004, 5, 6, 0, 0))]
58
58
 
59
59
  """
60
+ text = _search_with_detection.preprocess_text(text, languages)
61
+
60
62
  result = _search_with_detection.search_dates(
61
63
  text=text,
62
64
  languages=languages,
@@ -295,3 +295,10 @@ class DateSearchWithDetection:
295
295
  language_shortname, text, settings=settings
296
296
  ),
297
297
  }
298
+
299
+ def preprocess_text(self, text, languages):
300
+ """Preprocess text to handle language-specific quirks."""
301
+ if languages and "ru" in languages:
302
+ # Replace "с" (from) before numbers with a placeholder
303
+ text = re.sub(r"\bс\s+(?=\d)", "[FROM] ", text)
304
+ return text
@@ -1,4 +1,8 @@
1
+ import os
2
+ import pickle
3
+ import zlib
1
4
  from datetime import datetime, timedelta, timezone, tzinfo
5
+ from pathlib import Path
2
6
 
3
7
  import regex as re
4
8
 
@@ -84,8 +88,47 @@ def get_local_tz_offset():
84
88
  return offset
85
89
 
86
90
 
87
- _search_regex_parts = []
88
- _tz_offsets = list(build_tz_offsets(_search_regex_parts))
89
- _search_regex = re.compile("|".join(_search_regex_parts))
90
- _search_regex_ignorecase = re.compile("|".join(_search_regex_parts), re.IGNORECASE)
91
91
  local_tz_offset = get_local_tz_offset()
92
+
93
+ _tz_offsets = None
94
+ _search_regex = None
95
+ _search_regex_ignorecase = None
96
+
97
+
98
+ def _load_offsets(cache_path, current_hash):
99
+ global _tz_offsets, _search_regex, _search_regex_ignorecase
100
+
101
+ try:
102
+ with open(cache_path, mode="rb") as file:
103
+ (
104
+ serialized_hash,
105
+ _tz_offsets,
106
+ _search_regex,
107
+ _search_regex_ignorecase,
108
+ ) = pickle.load(file)
109
+ if current_hash is None or current_hash == serialized_hash:
110
+ return
111
+ except (FileNotFoundError, ValueError, TypeError):
112
+ pass
113
+
114
+ _search_regex_parts = []
115
+ _tz_offsets = list(build_tz_offsets(_search_regex_parts))
116
+ _search_regex = re.compile("|".join(_search_regex_parts))
117
+ _search_regex_ignorecase = re.compile("|".join(_search_regex_parts), re.IGNORECASE)
118
+
119
+ with open(cache_path, mode="wb") as file:
120
+ pickle.dump(
121
+ (current_hash, _tz_offsets, _search_regex, _search_regex_ignorecase),
122
+ file,
123
+ protocol=5,
124
+ )
125
+
126
+
127
+ CACHE_PATH = Path(__file__).parent.joinpath("data", "dateparser_tz_cache.pkl")
128
+
129
+ if "BUILD_TZ_CACHE" in os.environ:
130
+ current_hash = zlib.crc32(str(timezone_info_list).encode("utf-8"))
131
+ else:
132
+ current_hash = None
133
+
134
+ _load_offsets(CACHE_PATH, current_hash)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dateparser
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Date parsing library designed to parse dates from HTML pages
5
5
  Home-page: https://github.com/scrapinghub/dateparser
6
6
  Author: Scrapinghub
@@ -24,7 +24,7 @@ License-File: LICENSE
24
24
  License-File: AUTHORS.rst
25
25
  Requires-Dist: python-dateutil>=2.7.0
26
26
  Requires-Dist: pytz>=2024.2
27
- Requires-Dist: regex!=2019.02.19,!=2021.8.27,>=2015.06.24
27
+ Requires-Dist: regex>=2024.9.11
28
28
  Requires-Dist: tzlocal>=0.2
29
29
  Provides-Extra: calendars
30
30
  Requires-Dist: convertdate>=2.2.1; extra == "calendars"
@@ -41,6 +41,7 @@ Dynamic: description
41
41
  Dynamic: home-page
42
42
  Dynamic: keywords
43
43
  Dynamic: license
44
+ Dynamic: license-file
44
45
  Dynamic: project-url
45
46
  Dynamic: provides-extra
46
47
  Dynamic: requires-dist
@@ -318,6 +319,19 @@ To be able to use them you need to install the `calendar` extra by typing:
318
319
  History
319
320
  =======
320
321
 
322
+ 1.2.2 (2025-06-26)
323
+ ------------------
324
+
325
+ Fixes:
326
+
327
+ - Handle the Russian preposition “с” (#1261)
328
+ - Fix weekday search (#1274)
329
+
330
+ Improvements:
331
+
332
+ - Add Python 3.14 support (#1273)
333
+ - Cache timezone offsets to improve import time (#1250)
334
+
321
335
  1.2.1 (2025-02-05)
322
336
  ------------------
323
337
 
@@ -31,6 +31,7 @@ dateparser/custom_language_detection/fasttext.py
31
31
  dateparser/custom_language_detection/langdetect.py
32
32
  dateparser/custom_language_detection/language_mapping.py
33
33
  dateparser/data/__init__.py
34
+ dateparser/data/dateparser_tz_cache.pkl
34
35
  dateparser/data/languages_info.py
35
36
  dateparser/data/date_translation_data/__init__.py
36
37
  dateparser/data/date_translation_data/af.py
@@ -1,6 +1,6 @@
1
1
  python-dateutil>=2.7.0
2
2
  pytz>=2024.2
3
- regex!=2019.02.19,!=2021.8.27,>=2015.06.24
3
+ regex>=2024.9.11
4
4
  tzlocal>=0.2
5
5
 
6
6
  [calendars]
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "1.2.1"
2
+ current_version = "1.2.2"
3
3
  commit = true
4
4
  tag = true
5
5
 
@@ -31,7 +31,7 @@ setup(
31
31
  install_requires=[
32
32
  "python-dateutil>=2.7.0",
33
33
  "pytz>=2024.2",
34
- "regex>=2015.06.24,!=2019.02.19,!=2021.8.27",
34
+ "regex>=2024.9.11",
35
35
  "tzlocal>=0.2",
36
36
  ],
37
37
  entry_points={
@@ -628,6 +628,25 @@ class TestDateParser(BaseTestCase):
628
628
  self.then_date_was_parsed_by_date_parser()
629
629
  self.then_date_obj_exactly_is(expected)
630
630
 
631
+ @parameterized.expand(
632
+ [
633
+ param("Monday", datetime(2015, 3, 2)),
634
+ ]
635
+ )
636
+ def test_preferably_future_dates_relative_last_week_of_month(
637
+ self, date_string, expected
638
+ ):
639
+ self.given_local_tz_offset(0)
640
+ self.given_parser(
641
+ settings={
642
+ "PREFER_DATES_FROM": "future",
643
+ "RELATIVE_BASE": datetime(2015, 2, 24, 15, 30),
644
+ }
645
+ )
646
+ self.when_date_is_parsed(date_string)
647
+ self.then_date_was_parsed_by_date_parser()
648
+ self.then_date_obj_exactly_is(expected)
649
+
631
650
  @parameterized.expand(
632
651
  [
633
652
  param("10 December", datetime(2015, 12, 10)),
@@ -875,7 +894,7 @@ class TestDateParser(BaseTestCase):
875
894
  ):
876
895
  self.when_date_is_parsed_by_date_parser(date_string)
877
896
  self.then_error_was_raised(
878
- ValueError, ["day is out of range for month", message]
897
+ ValueError, ["day is out of range for month", "must be in range", message]
879
898
  )
880
899
 
881
900
  @parameterized.expand(
@@ -410,7 +410,7 @@ class TestTranslateSearch(BaseTestCase):
410
410
  "Die UdSSR blieb gemäß dem Neutralitätspakt "
411
411
  "vom 13. April 1941 gegenüber Japan vorerst neutral.",
412
412
  [
413
- ("Die", datetime.datetime(1999, 1, 28, 0, 0)),
413
+ ("Die", datetime.datetime(1999, 12, 28, 0, 0)),
414
414
  ("13. April 1941", datetime.datetime(1941, 4, 13, 0, 0)),
415
415
  ],
416
416
  settings={"RELATIVE_BASE": datetime.datetime(2000, 1, 1)},
@@ -1090,3 +1090,16 @@ class TestTranslateSearch(BaseTestCase):
1090
1090
  text=text, languages=languages, error_type=ValueError
1091
1091
  )
1092
1092
  self.check_error_message("Unknown language(s): 'unknown language code'")
1093
+
1094
+ def test_search_dates_with_prepositions(self):
1095
+ """Test `search_dates` for parsing Russian date ranges with prepositions and language detection."""
1096
+ result = search_dates(
1097
+ "Сервис будет недоступен с 12 января по 30 апреля.",
1098
+ add_detected_language=True,
1099
+ languages=["ru"],
1100
+ )
1101
+ expected = [
1102
+ ("12 января", datetime.datetime(2025, 1, 12, 0, 0), "ru"),
1103
+ ("30 апреля", datetime.datetime(2025, 4, 30, 0, 0), "ru"),
1104
+ ]
1105
+ assert result == expected
File without changes
File without changes
File without changes