Mercurial > hg
diff mercurial/util.py @ 32407:a7dce526c462
util: refactor util.parsedate to raises ValueError
Split most of util.parsedate in util.rawparsedate and make it raises ValueError instead
of error.Abort.
The util.parsedate function is now just a shell function converting ValueError
to error.Abort for existing users.
I need to parse a date from config in a later patch and use util.rawparsedate
with ui.configwith which expect a convert that raises ValueError.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Fri, 19 May 2017 12:07:23 +0200 |
parents | df448de7cf3b |
children | bb18728ea617 |
line wrap: on
line diff
--- a/mercurial/util.py Mon May 22 11:08:18 2017 -0700 +++ b/mercurial/util.py Fri May 19 12:07:23 2017 +0200 @@ -1924,6 +1924,9 @@ The date may be a "unixtime offset" string or in one of the specified formats. If the date already is a (unixtime, offset) tuple, it is returned. + This function calls rawparsedate and convert ValueError to Abort for + functions that needs higher level exception. + >>> parsedate(' today ') == parsedate(\ datetime.date.today().strftime('%b %d')) True @@ -1938,6 +1941,20 @@ >>> tz == strtz True """ + try: + return rawparsedate(date, formats=formats, bias=bias) + except ValueError as exception: + raise Abort(str(exception)) + +def rawparsedate(date, formats=None, bias=None): + """parse a localized date/time and return a (unixtime, offset) tuple. + + The date may be a "unixtime offset" string or in one of the specified + formats. If the date already is a (unixtime, offset) tuple, it is returned. + + See docstring of parsedate for example. + Raise ValueError for invalid date value. + """ if bias is None: bias = {} if not date: @@ -1984,15 +2001,15 @@ else: break else: - raise Abort(_('invalid date: %r') % date) + raise ValueError(_('invalid date: %r') % date) # validate explicit (probably user-specified) date and # time zone offset. values must fit in signed 32 bits for # current 32-bit linux runtimes. timezones go from UTC-12 # to UTC+14 if when < -0x80000000 or when > 0x7fffffff: - raise Abort(_('date exceeds 32 bits: %d') % when) + raise ValueError(_('date exceeds 32 bits: %d') % when) if offset < -50400 or offset > 43200: - raise Abort(_('impossible time zone offset: %d') % offset) + raise ValueError(_('impossible time zone offset: %d') % offset) return when, offset def matchdate(date):