From 5f75cf834725ac26b289cc5f157af0cb71cd5f0e Mon Sep 17 00:00:00 2001 From: Scott Date: Thu, 6 Jan 2022 12:13:34 -0800 Subject: A bunch of changes... --- dateparse/dateparse_utils.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'dateparse/dateparse_utils.py') diff --git a/dateparse/dateparse_utils.py b/dateparse/dateparse_utils.py index 026a513..21fdb83 100755 --- a/dateparse/dateparse_utils.py +++ b/dateparse/dateparse_utils.py @@ -1,5 +1,10 @@ #!/usr/bin/env python3 +""" +Parse dates in a variety of formats. + +""" + import datetime import functools import holidays # type: ignore @@ -249,6 +254,7 @@ class DateParser(dateparse_utilsListener): self.datetime: Optional[datetime.datetime] = None self.context: Dict[str, Any] = {} self.timedelta = datetime.timedelta(seconds=0) + self.saw_overt_year = False @staticmethod def _normalize_special_day_name(name: str) -> str: @@ -300,8 +306,10 @@ class DateParser(dateparse_utilsListener): next_last = self.context.get('special_next_last', '') if next_last == 'next': year += 1 + self.saw_overt_year = True elif next_last == 'last': year -= 1 + self.saw_overt_year = True # Holiday names if name == 'easte': @@ -360,6 +368,9 @@ class DateParser(dateparse_utilsListener): raise ParseException('Missing day') if 'year' not in self.context: self.context['year'] = self.today.year + self.saw_overt_year = False + else: + self.saw_overt_year = True # Handling "ides" and "nones" requires both the day and month. if ( @@ -610,11 +621,13 @@ class DateParser(dateparse_utilsListener): self.context['day'] = self.now_datetime.day self.context['month'] = self.now_datetime.month self.context['year'] = self.now_datetime.year + self.saw_overt_year = True elif txt[:4] == 'last': self.context['delta_int'] = -1 self.context['day'] = self.now_datetime.day self.context['month'] = self.now_datetime.month self.context['year'] = self.now_datetime.year + self.saw_overt_year = True else: raise ParseException(f'Bad next/last: {ctx.getText()}') @@ -843,6 +856,7 @@ class DateParser(dateparse_utilsListener): except Exception: raise ParseException(f'Bad year expression: {ctx.getText()}') else: + self.saw_overt_year = True self.context['year'] = year def exitSpecialDateMaybeYearExpr( -- cgit v1.3