Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-dateparser for openSUSE:Factory checked in at 2023-03-29 23:26:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-dateparser (Old) and /work/SRC/openSUSE:Factory/.python-dateparser.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dateparser" Wed Mar 29 23:26:12 2023 rev:15 rq:1074513 version:1.1.8 Changes: -------- --- /work/SRC/openSUSE:Factory/python-dateparser/python-dateparser.changes 2023-02-17 16:43:46.518447117 +0100 +++ /work/SRC/openSUSE:Factory/.python-dateparser.new.31432/python-dateparser.changes 2023-03-29 23:26:20.051212269 +0200 @@ -1,0 +2,13 @@ +Sun Mar 26 20:00:19 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.1.8: + * Improved date parsing for Chinese + * Improved date parsing for Czech + * Reorder language by popularity + * Fix leak of memory in cache + * Add support for "\d units later" + * Move modification in CLDR data to yaml + * Add support to use timezone via settings to get + PREFER_DATES_FROM result + +------------------------------------------------------------------- Old: ---- dateparser-1.1.7.tar.gz New: ---- dateparser-1.1.8.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-dateparser.spec ++++++ --- /var/tmp/diff_new_pack.UWBnwX/_old 2023-03-29 23:26:20.603214863 +0200 +++ /var/tmp/diff_new_pack.UWBnwX/_new 2023-03-29 23:26:20.611214899 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-dateparser -Version: 1.1.7 +Version: 1.1.8 Release: 0 Summary: Date parsing library designed to parse dates from HTML pages License: BSD-3-Clause ++++++ dateparser-1.1.7.tar.gz -> dateparser-1.1.8.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/HISTORY.rst new/dateparser-1.1.8/HISTORY.rst --- old/dateparser-1.1.7/HISTORY.rst 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/HISTORY.rst 2023-03-23 15:01:48.000000000 +0100 @@ -3,6 +3,19 @@ History ======= +1.1.8 (2023-03-22) +------------------ + +Improvements: +- Improved date parsing for Chinese (#1148) +- Improved date parsing for Czech (#1151) +- Reorder language by popularity (#1152) +- Fix leak of memory in cache (#1140) +- Add support for "\d units later" (#1154) +- Move modification in CLDR data to yaml (#1153) +- Add support to use timezone via settings to get PREFER_DATES_FROM result (#1155) + + 1.1.7 (2023-02-02) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/PKG-INFO new/dateparser-1.1.8/PKG-INFO --- old/dateparser-1.1.7/PKG-INFO 2023-02-02 14:04:45.335078000 +0100 +++ new/dateparser-1.1.8/PKG-INFO 2023-03-23 15:02:02.828348600 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: dateparser -Version: 1.1.7 +Version: 1.1.8 Summary: Date parsing library designed to parse dates from HTML pages Home-page: https://github.com/scrapinghub/dateparser Author: Scrapinghub @@ -287,6 +287,19 @@ History ======= +1.1.8 (2023-03-22) +------------------ + +Improvements: +- Improved date parsing for Chinese (#1148) +- Improved date parsing for Czech (#1151) +- Reorder language by popularity (#1152) +- Fix leak of memory in cache (#1140) +- Add support for "\d units later" (#1154) +- Move modification in CLDR data to yaml (#1153) +- Add support to use timezone via settings to get PREFER_DATES_FROM result (#1155) + + 1.1.7 (2023-02-02) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/__init__.py new/dateparser-1.1.8/dateparser/__init__.py --- old/dateparser-1.1.7/dateparser/__init__.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/__init__.py 2023-03-23 15:01:48.000000000 +0100 @@ -1,4 +1,4 @@ -__version__ = '1.1.7' +__version__ = '1.1.8' from .date import DateDataParser from .conf import apply_settings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/conf.py new/dateparser-1.1.8/dateparser/conf.py --- old/dateparser-1.1.7/dateparser/conf.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/conf.py 2023-03-23 15:01:48.000000000 +0100 @@ -28,6 +28,7 @@ * `PARSERS` * `DEFAULT_LANGUAGES` * `LANGUAGE_DETECTION_CONFIDENCE_THRESHOLD` + * `CACHE_SIZE_LIMIT` """ _default = True @@ -226,6 +227,9 @@ 'type': float, 'extra_check': _check_between_0_and_1 }, + 'CACHE_SIZE_LIMIT': { + 'type': int, + }, } modified_settings = settings._mod_settings # check only modified settings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/date_translation_data/cs.py new/dateparser-1.1.8/dateparser/data/date_translation_data/cs.py --- old/dateparser-1.1.7/dateparser/data/date_translation_data/cs.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/date_translation_data/cs.py 2023-03-23 15:01:48.000000000 +0100 @@ -9,7 +9,8 @@ "february": [ "úno", "únor", - "února" + "února", + "únr" ], "march": [ "bÅe", @@ -36,7 +37,8 @@ "Äervence", "Äervenec", "Ävc", - "Ärc" + "Ärc", + "Ärv" ], "august": [ "srp", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/date_translation_data/de.py new/dateparser-1.1.8/dateparser/data/date_translation_data/de.py --- old/dateparser-1.1.7/dateparser/data/date_translation_data/de.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/date_translation_data/de.py 2023-03-23 15:01:48.000000000 +0100 @@ -37,8 +37,8 @@ ], "september": [ "sep", - "sept", - "september" + "september", + "Sept" ], "october": [ "okt", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/date_translation_data/en.py new/dateparser-1.1.8/dateparser/data/date_translation_data/en.py --- old/dateparser-1.1.7/dateparser/data/date_translation_data/en.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/date_translation_data/en.py 2023-03-23 15:01:48.000000000 +0100 @@ -809,6 +809,9 @@ "less than 1 minute ago": "45 second ago" }, { + "(\\d+[.,]?\\d*) (decade|year|month|week|day|hour|minute|second)s? later": "in \\1 \\2" + }, + { "one": "1" }, { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/date_translation_data/zh-Hans.py new/dateparser-1.1.8/dateparser/data/date_translation_data/zh-Hans.py --- old/dateparser-1.1.7/dateparser/data/date_translation_data/zh-Hans.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/date_translation_data/zh-Hans.py 2023-03-23 15:01:48.000000000 +0100 @@ -110,7 +110,9 @@ "ä»å¤©" ], "0 hour ago": [ - "è¿ä¸æ¶é´ / æ¤æ¶" + "è¿ä¸æ¶é´ / æ¤æ¶", + "è¿ä¸æ¶é´", + "æ¤æ¶" ], "0 minute ago": [ "æ¤å»" @@ -119,7 +121,8 @@ "æ¬æ" ], "0 second ago": [ - "ç°å¨" + "ç°å¨", + "åå" ], "0 week ago": [ "æ¬å¨" @@ -150,6 +153,12 @@ ], "in 1 year": [ "æå¹´" + ], + "2 day ago": [ + "å天" + ], + "in 2 days": [ + "å天" ] }, "relative-type-regex": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/date_translation_data/zh.py new/dateparser-1.1.8/dateparser/data/date_translation_data/zh.py --- old/dateparser-1.1.7/dateparser/data/date_translation_data/zh.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/date_translation_data/zh.py 2023-03-23 15:01:48.000000000 +0100 @@ -123,7 +123,9 @@ "ä»å¤©" ], "0 hour ago": [ - "è¿ä¸æ¶é´ / æ¤æ¶" + "è¿ä¸æ¶é´ / æ¤æ¶", + "è¿ä¸æ¶é´", + "æ¤æ¶" ], "0 minute ago": [ "æ¤å»" @@ -167,6 +169,9 @@ ], "2 day ago": [ "å天" + ], + "in 2 days": [ + "å天" ] }, "relative-type-regex": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/data/languages_info.py new/dateparser-1.1.8/dateparser/data/languages_info.py --- old/dateparser-1.1.7/dateparser/data/languages_info.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/data/languages_info.py 2023-03-23 15:01:48.000000000 +0100 @@ -2,43 +2,43 @@ "en", "ru", "es", - "de", "fr", + "de", "ja", "tr", + "pt", "fa", + "it", "zh", "zh-Hans", - "it", - "vi", - "pt", "nl", + "vi", "pl", "ar", "ko", + "cs", "id", "uk", - "cs", - "th", + "el", "he", + "th", "sv", - "el", "ro", - "da", "hu", + "da", "fi", - "sr", - "sr-Cyrl", "sk", "bg", + "sr", + "sr-Cyrl", "nb", "hr", "lt", "sl", - "hi", "ca", "et", "lv", + "hi", "bn", "ur", "sw", @@ -936,14 +936,6 @@ "es-UY", "es-VE" ], - "de": [ - "de-AT", - "de-BE", - "de-CH", - "de-IT", - "de-LI", - "de-LU" - ], "fr": [ "fr-BE", "fr-BF", @@ -991,25 +983,18 @@ "fr-WF", "fr-YT" ], + "de": [ + "de-AT", + "de-BE", + "de-CH", + "de-IT", + "de-LI", + "de-LU" + ], "ja": [], "tr": [ "tr-CY" ], - "fa": [ - "fa-AF" - ], - "zh": [], - "zh-Hans": [ - "zh-Hans-HK", - "zh-Hans-MO", - "zh-Hans-SG" - ], - "it": [ - "it-CH", - "it-SM", - "it-VA" - ], - "vi": [], "pt": [ "pt-AO", "pt-CH", @@ -1023,6 +1008,20 @@ "pt-ST", "pt-TL" ], + "fa": [ + "fa-AF" + ], + "it": [ + "it-CH", + "it-SM", + "it-VA" + ], + "zh": [], + "zh-Hans": [ + "zh-Hans-HK", + "zh-Hans-MO", + "zh-Hans-SG" + ], "nl": [ "nl-AW", "nl-BE", @@ -1031,6 +1030,7 @@ "nl-SR", "nl-SX" ], + "vi": [], "pl": [], "ar": [ "ar-AE", @@ -1064,34 +1064,34 @@ "ko": [ "ko-KP" ], + "cs": [], "id": [], "uk": [], - "cs": [], - "th": [], + "el": [ + "el-CY" + ], "he": [], + "th": [], "sv": [ "sv-AX", "sv-FI" ], - "el": [ - "el-CY" - ], "ro": [ "ro-MD" ], + "hu": [], "da": [ "da-GL" ], - "hu": [], "fi": [], + "sk": [], + "bg": [], "sr": [], "sr-Cyrl": [ "sr-Cyrl-BA", "sr-Cyrl-ME", "sr-Cyrl-XK" ], - "sk": [], - "bg": [], "nb": [ "nb-SJ" ], @@ -1100,7 +1100,6 @@ ], "lt": [], "sl": [], - "hi": [], "ca": [ "ca-AD", "ca-FR", @@ -1108,6 +1107,7 @@ ], "et": [], "lv": [], + "hi": [], "bn": [ "bn-IN" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/languages/dictionary.py new/dateparser-1.1.8/dateparser/languages/dictionary.py --- old/dateparser-1.1.7/dateparser/languages/dictionary.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/languages/dictionary.py 2023-03-23 15:01:48.000000000 +0100 @@ -143,6 +143,13 @@ return list(filter(bool, chain.from_iterable(tokens))) + def _add_to_cache(self, value, cache): + cache.setdefault( + self._settings.registry_key, {} + )[self.info['name']] = value + if self._settings.CACHE_SIZE_LIMIT and len(cache) > self._settings.CACHE_SIZE_LIMIT: + cache.pop(list(cache.keys())[0]) + def _split_by_known_words(self, string, keep_formatting): if not string: return string @@ -174,9 +181,10 @@ self._settings.registry_key not in self._sorted_words_cache or self.info['name'] not in self._sorted_words_cache[self._settings.registry_key] ): - self._sorted_words_cache.setdefault( - self._settings.registry_key, {})[self.info['name']] = \ - sorted([key for key in self], key=len, reverse=True) + self._add_to_cache( + cache=self._sorted_words_cache, + value=sorted([key for key in self], key=len, reverse=True), + ) return self._sorted_words_cache[self._settings.registry_key][self.info['name']] def _get_split_regex_cache(self): @@ -193,19 +201,21 @@ regex = r"^(.*?)({})(.*)$".format(known_words_group) else: regex = r"^(.*?(?:\A|\W|_|\d))({})((?:\Z|\W|_|\d).*)$".format(known_words_group) - self._split_regex_cache.setdefault( - self._settings.registry_key, {})[self.info['name']] = \ - re.compile(regex, re.UNICODE | re.IGNORECASE) + self._add_to_cache( + cache=self._split_regex_cache, + value=re.compile(regex, re.UNICODE | re.IGNORECASE), + ) def _get_sorted_relative_strings_from_cache(self): if ( self._settings.registry_key not in self._sorted_relative_strings_cache or self.info['name'] not in self._sorted_relative_strings_cache[self._settings.registry_key] ): - self._sorted_relative_strings_cache.setdefault( - self._settings.registry_key, {})[self.info['name']] = \ - sorted([PARENTHESES_PATTERN.sub('', key) for key in - self._relative_strings], key=len, reverse=True) + self._add_to_cache( + cache=self._sorted_relative_strings_cache, + value=sorted([PARENTHESES_PATTERN.sub('', key) for key in + self._relative_strings], key=len, reverse=True), + ) return self._sorted_relative_strings_cache[self._settings.registry_key][self.info['name']] def _get_split_relative_regex_cache(self): @@ -222,9 +232,10 @@ regex = "({})".format(known_relative_strings_group) else: regex = "(?<=(?:\\A|\\W|_))({})(?=(?:\\Z|\\W|_))".format(known_relative_strings_group) - self._split_relative_regex_cache.setdefault( - self._settings.registry_key, {})[self.info['name']] = \ - re.compile(regex, re.UNICODE | re.IGNORECASE) + self._add_to_cache( + cache=self._split_relative_regex_cache, + value=re.compile(regex, re.UNICODE | re.IGNORECASE), + ) def _get_match_relative_regex_cache(self): if ( @@ -237,9 +248,10 @@ def _construct_match_relative_regex(self): known_relative_strings_group = "|".join(self._get_sorted_relative_strings_from_cache()) regex = "^({})$".format(known_relative_strings_group) - self._match_relative_regex_cache.setdefault( - self._settings.registry_key, {})[self.info['name']] = \ - re.compile(regex, re.UNICODE | re.IGNORECASE) + self._add_to_cache( + cache=self._match_relative_regex_cache, + value=re.compile(regex, re.UNICODE | re.IGNORECASE), + ) class NormalizedDictionary(Dictionary): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser/parser.py new/dateparser-1.1.8/dateparser/parser.py --- old/dateparser-1.1.7/dateparser/parser.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser/parser.py 2023-03-23 15:01:48.000000000 +0100 @@ -1,15 +1,15 @@ import calendar import regex as re +import pytz from io import StringIO from collections import OrderedDict from datetime import datetime from datetime import timedelta -from pytz import utc from dateparser.utils import set_correct_day_from_settings, \ get_last_day_of_month, get_previous_leap_year, get_next_leap_year, \ - _get_missing_parts + _get_missing_parts, get_timezone_from_tz_string from dateparser.utils.strptime import strptime @@ -460,7 +460,7 @@ # Since date comparisons must be either offset-naive or offset-aware, normalize dateobj # to be offset-aware if one or the other is already offset-aware. if self.now.tzinfo is not None and dateobj.tzinfo is None: - dateobj = utc.localize(dateobj) + dateobj = pytz.utc.localize(dateobj) if self.month and not self.year: try: @@ -491,6 +491,11 @@ self._token_day, hasattr(self, '_token_weekday')]): # Convert dateobj to utc time to compare with self.now + try: + tz = tz or get_timezone_from_tz_string(self.settings.TIMEZONE) + except pytz.UnknownTimeZoneError: + tz = None + if tz: dateobj_time = (dateobj - tz.utcoffset(dateobj)).time() else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser.egg-info/PKG-INFO new/dateparser-1.1.8/dateparser.egg-info/PKG-INFO --- old/dateparser-1.1.7/dateparser.egg-info/PKG-INFO 2023-02-02 14:04:45.000000000 +0100 +++ new/dateparser-1.1.8/dateparser.egg-info/PKG-INFO 2023-03-23 15:02:02.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: dateparser -Version: 1.1.7 +Version: 1.1.8 Summary: Date parsing library designed to parse dates from HTML pages Home-page: https://github.com/scrapinghub/dateparser Author: Scrapinghub @@ -287,6 +287,19 @@ History ======= +1.1.8 (2023-03-22) +------------------ + +Improvements: +- Improved date parsing for Chinese (#1148) +- Improved date parsing for Czech (#1151) +- Reorder language by popularity (#1152) +- Fix leak of memory in cache (#1140) +- Add support for "\d units later" (#1154) +- Move modification in CLDR data to yaml (#1153) +- Add support to use timezone via settings to get PREFER_DATES_FROM result (#1155) + + 1.1.7 (2023-02-02) ------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/dateparser_data/settings.py new/dateparser-1.1.8/dateparser_data/settings.py --- old/dateparser-1.1.7/dateparser_data/settings.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/dateparser_data/settings.py 2023-03-23 15:01:48.000000000 +0100 @@ -33,4 +33,5 @@ # Other settings 'RETURN_TIME_AS_PERIOD': False, 'PARSERS': default_parsers, + 'CACHE_SIZE_LIMIT': 1000, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/docs/settings.rst new/dateparser-1.1.8/docs/settings.rst --- old/dateparser-1.1.7/docs/settings.rst 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/docs/settings.rst 2023-03-23 15:01:48.000000000 +0100 @@ -210,3 +210,6 @@ >>> from dateparser_data.settings import default_parsers >>> parsers = [parser for parser in default_parsers if parser != 'relative-time'] >>> parse('today', settings={'PARSERS': parsers}) + +``CACHE_SIZE_LIMIT``: limits the size of caches, that store data for already processed dates. +Default to ``1000``, but you can set ``0`` for turning off the limit. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/tests/test_date_parser.py new/dateparser-1.1.8/tests/test_date_parser.py --- old/dateparser-1.1.7/tests/test_date_parser.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/tests/test_date_parser.py 2023-03-23 15:01:48.000000000 +0100 @@ -340,6 +340,8 @@ param('pon 16. Äer 2014 10:07:43', datetime(2014, 6, 16, 10, 7, 43)), param('13 Srpen, 2014', datetime(2014, 8, 13)), param('Ätv 14. lis 2013 12:38:43', datetime(2013, 11, 14, 12, 38, 43)), + param('14Unr\'21', datetime(2021, 2, 14)), + param('02Bre\'21', datetime(2021, 3, 2)), # Thai dates param('à¸à¸±à¸à¸§à¸²à¸à¸¡ 11, 2014, 08:55:08 PM', datetime(2014, 12, 11, 20, 55, 8)), param('22 à¸à¸¤à¸©à¸ าà¸à¸¡ 2012, 22:12', datetime(2012, 5, 22, 22, 12)), @@ -867,27 +869,20 @@ self.then_date_obj_exactly_is(expected) @parameterized.expand([ - param('4pm EDT', datetime(2021, 10, 19, 20, 0)), - ]) - def test_date_skip_ahead(self, date_string, expected): - self.given_parser(settings={'PREFER_DATES_FROM': 'future', - 'TO_TIMEZONE': 'etc/utc', - 'RETURN_AS_TIMEZONE_AWARE': False, - 'RELATIVE_BASE': datetime(2021, 10, 19, 18, 0), - }) - self.when_date_is_parsed(date_string) - self.then_date_was_parsed_by_date_parser() - self.then_date_obj_exactly_is(expected) - - @parameterized.expand([ - param('11pm AEDT', datetime(2021, 10, 19, 12, 0)), - ]) - def test_date_step_back(self, date_string, expected): - self.given_parser(settings={'PREFER_DATES_FROM': 'past', - 'TO_TIMEZONE': 'etc/utc', - 'RETURN_AS_TIMEZONE_AWARE': False, - 'RELATIVE_BASE': datetime(2021, 10, 19, 18, 0), - }) + param('4pm EDT', datetime(2021, 10, 19, 20, 0), {'PREFER_DATES_FROM': 'future'}), + param('11pm AEDT', datetime(2021, 10, 19, 12, 0), {'PREFER_DATES_FROM': 'past'}), + param('4pm', datetime(2021, 10, 19, 20, 0), {'PREFER_DATES_FROM': 'future', 'TIMEZONE': 'EDT'}), + param('11pm', datetime(2021, 10, 19, 12, 0), {'PREFER_DATES_FROM': 'past', 'TIMEZONE': 'AEDT'}), + ]) + def test_prefer_dates_from_with_timezone(self, date_string, expected, test_settings): + self.given_parser( + settings={ + 'TO_TIMEZONE': 'etc/utc', + 'RETURN_AS_TIMEZONE_AWARE': False, + 'RELATIVE_BASE': datetime(2021, 10, 19, 18, 0), + **test_settings + } + ) self.when_date_is_parsed(date_string) self.then_date_was_parsed_by_date_parser() self.then_date_obj_exactly_is(expected) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/tests/test_freshness_date_parser.py new/dateparser-1.1.8/tests/test_freshness_date_parser.py --- old/dateparser-1.1.7/tests/test_freshness_date_parser.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/tests/test_freshness_date_parser.py 2023-03-23 15:01:48.000000000 +0100 @@ -1133,11 +1133,21 @@ in_future={'years': 1, 'months': 1, 'weeks': 1, 'days': 1, 'hours': 1, 'minutes': 1}, period='day'), param('just now', in_future={'seconds': 0}, period='day'), + param('1 decade later', in_future={'years': 10}, period='year'), + param('2 years later', in_future={'years': 2}, period='year'), + param('3 months later', in_future={'months': 3}, period='month'), + param('1 week later', in_future={'weeks': 1}, period='week'), + param('2 days later', in_future={'days': 2}, period='day'), + param('3 hours later', in_future={'hours': 3}, period='day'), + param('4 minutes later', in_future={'minutes': 4}, period='day'), + param('5 seconds later', in_future={'seconds': 5}, period='day'), # Fractional units param('in 2.5 hours', in_future={'hours': 2.5}, period='day'), param('in 10.75 minutes', in_future={'minutes': 10.75}, period='day'), param('in 1.5 days', in_future={'days': 1.5}, period='day'), param('in 0,5 hours', in_future={'hours': 0.5}, period='day'), + param('1.5 days later', in_future={'days': 1.5}, period='day'), + param('0,5 hours later', in_future={'hours': 0.5}, period='day'), # French dates param("Aujourd'hui", in_future={'days': 0}, period='day'), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dateparser-1.1.7/tests/test_loading.py new/dateparser-1.1.8/tests/test_loading.py --- old/dateparser-1.1.7/tests/test_loading.py 2023-02-02 14:04:30.000000000 +0100 +++ new/dateparser-1.1.8/tests/test_loading.py 2023-03-23 15:01:48.000000000 +0100 @@ -142,7 +142,7 @@ param(given_locales=['en-FJ', 'pt-CV', 'fr-RW'], expected_locales=['en-FJ', 'fr-RW', 'pt-CV']), param(given_locales=['pt-AO', 'hi', 'zh-Hans-SG', 'vi'], - expected_locales=['zh-Hans-SG', 'vi', 'pt-AO', 'hi']), + expected_locales=['pt-AO', 'zh-Hans-SG', 'vi', 'hi']), param(given_locales=['gsw-FR', 'es-BZ', 'ca-IT', 'qu-EC'], expected_locales=['es-BZ', 'ca-IT', 'qu-EC', 'gsw-FR']), ])