summaryrefslogtreecommitdiff
path: root/dateparse/dateparse_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'dateparse/dateparse_utils.py')
-rwxr-xr-xdateparse/dateparse_utils.py14
1 files changed, 14 insertions, 0 deletions
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(