summaryrefslogtreecommitdiffstats
path: root/Lib/_strptime.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/_strptime.py')
-rw-r--r--Lib/_strptime.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index 08d7960..ce8525b 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -287,7 +287,20 @@ def strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
_regex_cache.clear()
format_regex = _regex_cache.get(format)
if not format_regex:
- format_regex = time_re.compile(format)
+ try:
+ format_regex = time_re.compile(format)
+ # KeyError raised when a bad format is found; can be specified as
+ # \\, in which case it was a stray % but with a space after it
+ except KeyError, err:
+ bad_directive = err.args[0]
+ if bad_directive == "\\":
+ bad_directive = "%"
+ del err
+ raise ValueError("'%s' is a bad directive in format '%s'" %
+ (bad_directive, format))
+ # IndexError only occurs when the format string is "%"
+ except IndexError:
+ raise ValueError("stray %% in format '%s'" % format)
_regex_cache[format] = format_regex
finally:
_cache_lock.release()