##// END OF EJS Templates
util: refactor util.parsedate to raises ValueError...
Boris Feld -
r32407:a7dce526 default
parent child Browse files
Show More
@@ -1924,6 +1924,9 b' def parsedate(date, formats=None, bias=N'
1924 The date may be a "unixtime offset" string or in one of the specified
1924 The date may be a "unixtime offset" string or in one of the specified
1925 formats. If the date already is a (unixtime, offset) tuple, it is returned.
1925 formats. If the date already is a (unixtime, offset) tuple, it is returned.
1926
1926
1927 This function calls rawparsedate and convert ValueError to Abort for
1928 functions that needs higher level exception.
1929
1927 >>> parsedate(' today ') == parsedate(\
1930 >>> parsedate(' today ') == parsedate(\
1928 datetime.date.today().strftime('%b %d'))
1931 datetime.date.today().strftime('%b %d'))
1929 True
1932 True
@@ -1938,6 +1941,20 b' def parsedate(date, formats=None, bias=N'
1938 >>> tz == strtz
1941 >>> tz == strtz
1939 True
1942 True
1940 """
1943 """
1944 try:
1945 return rawparsedate(date, formats=formats, bias=bias)
1946 except ValueError as exception:
1947 raise Abort(str(exception))
1948
1949 def rawparsedate(date, formats=None, bias=None):
1950 """parse a localized date/time and return a (unixtime, offset) tuple.
1951
1952 The date may be a "unixtime offset" string or in one of the specified
1953 formats. If the date already is a (unixtime, offset) tuple, it is returned.
1954
1955 See docstring of parsedate for example.
1956 Raise ValueError for invalid date value.
1957 """
1941 if bias is None:
1958 if bias is None:
1942 bias = {}
1959 bias = {}
1943 if not date:
1960 if not date:
@@ -1984,15 +2001,15 b' def parsedate(date, formats=None, bias=N'
1984 else:
2001 else:
1985 break
2002 break
1986 else:
2003 else:
1987 raise Abort(_('invalid date: %r') % date)
2004 raise ValueError(_('invalid date: %r') % date)
1988 # validate explicit (probably user-specified) date and
2005 # validate explicit (probably user-specified) date and
1989 # time zone offset. values must fit in signed 32 bits for
2006 # time zone offset. values must fit in signed 32 bits for
1990 # current 32-bit linux runtimes. timezones go from UTC-12
2007 # current 32-bit linux runtimes. timezones go from UTC-12
1991 # to UTC+14
2008 # to UTC+14
1992 if when < -0x80000000 or when > 0x7fffffff:
2009 if when < -0x80000000 or when > 0x7fffffff:
1993 raise Abort(_('date exceeds 32 bits: %d') % when)
2010 raise ValueError(_('date exceeds 32 bits: %d') % when)
1994 if offset < -50400 or offset > 43200:
2011 if offset < -50400 or offset > 43200:
1995 raise Abort(_('impossible time zone offset: %d') % offset)
2012 raise ValueError(_('impossible time zone offset: %d') % offset)
1996 return when, offset
2013 return when, offset
1997
2014
1998 def matchdate(date):
2015 def matchdate(date):
General Comments 0
You need to be logged in to leave comments. Login now