summaryrefslogtreecommitdiffstats
path: root/Lib/http
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-08-01 18:56:30 (GMT)
committerGeorg Brandl <georg@python.org>2010-08-01 18:56:30 (GMT)
commitcea7e55998d9e3c24c74fa55e59b252ac592d95e (patch)
treeb4b6ea88f89ad3161fffa8aa98e4f9ece4f42936 /Lib/http
parentafef78f832d0f2eab287f4ce889baf4d68a4fc63 (diff)
downloadcpython-cea7e55998d9e3c24c74fa55e59b252ac592d95e.zip
cpython-cea7e55998d9e3c24c74fa55e59b252ac592d95e.tar.gz
cpython-cea7e55998d9e3c24c74fa55e59b252ac592d95e.tar.bz2
Merged revisions 83393,83396,83398,83404-83405,83408 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k ........ r83393 | georg.brandl | 2010-08-01 10:35:29 +0200 (So, 01 Aug 2010) | 1 line #1690103: fix initial namespace for code run with trace.main(). ........ r83396 | georg.brandl | 2010-08-01 10:52:32 +0200 (So, 01 Aug 2010) | 1 line #4810: document "--" option separator in timeit help. ........ r83398 | georg.brandl | 2010-08-01 11:06:34 +0200 (So, 01 Aug 2010) | 1 line #8826: the "expires" attribute value is a date string with spaces, but apparently not all user-agents put it in quotes. Handle that as a special case. ........ r83404 | georg.brandl | 2010-08-01 16:25:22 +0200 (So, 01 Aug 2010) | 1 line #6439: fix argument type for PySys_SetArgvEx() and Py_SetProgramName() in Demo/embed code. ........ r83405 | georg.brandl | 2010-08-01 16:38:17 +0200 (So, 01 Aug 2010) | 1 line #4943: do not try to include drive letters (and colons) when looking for a probably module name. ........ r83408 | georg.brandl | 2010-08-01 17:30:56 +0200 (So, 01 Aug 2010) | 1 line #5551: symbolic links never can be mount points. Fixes the fix for #1713. ........
Diffstat (limited to 'Lib/http')
-rw-r--r--Lib/http/cookies.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/Lib/http/cookies.py b/Lib/http/cookies.py
index 9cb80b9..e584396 100644
--- a/Lib/http/cookies.py
+++ b/Lib/http/cookies.py
@@ -439,19 +439,21 @@ class Morsel(dict):
#
_LegalCharsPatt = r"[\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]"
-_CookiePattern = re.compile(
- r"(?x)" # This is a Verbose pattern
- r"(?P<key>" # Start of group 'key'
- ""+ _LegalCharsPatt +"+?" # Any word of at least one letter, nongreedy
- r")" # End of group 'key'
- r"\s*=\s*" # Equal Sign
- r"(?P<val>" # Start of group 'val'
- r'"(?:[^\\"]|\\.)*"' # Any doublequoted string
- r"|" # or
- ""+ _LegalCharsPatt +"*" # Any word or empty string
- r")" # End of group 'val'
- r"\s*;?" # Probably ending in a semi-colon
- , re.ASCII) # May be removed if safe.
+_CookiePattern = re.compile(r"""
+ (?x) # This is a verbose pattern
+ (?P<key> # Start of group 'key'
+ """ + _LegalCharsPatt + r"""+? # Any word of at least one letter
+ ) # End of group 'key'
+ \s*=\s* # Equal Sign
+ (?P<val> # Start of group 'val'
+ "(?:[^\\"]|\\.)*" # Any doublequoted string
+ | # or
+ \w{3},\s[\w\d-]{9,11}\s[\d:]{8}\sGMT # Special case for "expires" attr
+ | # or
+ """ + _LegalCharsPatt + r"""* # Any word or empty string
+ ) # End of group 'val'
+ \s*;? # Probably ending in a semi-colon
+ """, re.ASCII) # May be removed if safe.
# At long last, here is the cookie class.