[Python-checkins] r87996 - in python/branches/py3k: Doc/library/urllib.parse.rst Lib/urllib/parse.py Misc/NEWS

victor.stinner python-checkins at python.org
Fri Jan 14 13:52:13 CET 2011


Author: victor.stinner
Date: Fri Jan 14 13:52:12 2011
New Revision: 87996
Log:
Add encoding and errors arguments to urllib.parse_qs() and urllib.parse_qsl()
Modified:
 python/branches/py3k/Doc/library/urllib.parse.rst
 python/branches/py3k/Lib/urllib/parse.py
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Doc/library/urllib.parse.rst
==============================================================================
--- python/branches/py3k/Doc/library/urllib.parse.rst	(original)
+++ python/branches/py3k/Doc/library/urllib.parse.rst	Fri Jan 14 13:52:12 2011
@@ -116,7 +116,7 @@
 Added IPv6 URL parsing capabilities.
 
 
-.. function:: parse_qs(qs, keep_blank_values=False, strict_parsing=False)
+.. function:: parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
 
 Parse a query string given as a string argument (data of type
 :mimetype:`application/x-www-form-urlencoded`). Data are returned as a
@@ -133,11 +133,15 @@
 parsing errors. If false (the default), errors are silently ignored. If true,
 errors raise a :exc:`ValueError` exception.
 
+ The optional *encoding* and *errors* parameters specify how to decode
+ percent-encoded sequences into Unicode characters, as accepted by the
+ :meth:`bytes.decode` method.
+
 Use the :func:`urllib.parse.urlencode` function to convert such
 dictionaries into query strings.
 
 
-.. function:: parse_qsl(qs, keep_blank_values=False, strict_parsing=False)
+.. function:: parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
 
 Parse a query string given as a string argument (data of type
 :mimetype:`application/x-www-form-urlencoded`). Data are returned as a list of
@@ -153,6 +157,10 @@
 parsing errors. If false (the default), errors are silently ignored. If true,
 errors raise a :exc:`ValueError` exception.
 
+ The optional *encoding* and *errors* parameters specify how to decode
+ percent-encoded sequences into Unicode characters, as accepted by the
+ :meth:`bytes.decode` method.
+
 Use the :func:`urllib.parse.urlencode` function to convert such lists of pairs into
 query strings.
 
Modified: python/branches/py3k/Lib/urllib/parse.py
==============================================================================
--- python/branches/py3k/Lib/urllib/parse.py	(original)
+++ python/branches/py3k/Lib/urllib/parse.py	Fri Jan 14 13:52:12 2011
@@ -523,7 +523,8 @@
 string += pct_sequence.decode(encoding, errors)
 return string
 
-def parse_qs(qs, keep_blank_values=False, strict_parsing=False):
+def parse_qs(qs, keep_blank_values=False, strict_parsing=False,
+ encoding='utf-8', errors='replace'):
 """Parse a query given as a string argument.
 
 Arguments:
@@ -540,16 +541,22 @@
 strict_parsing: flag indicating what to do with parsing errors.
 If false (the default), errors are silently ignored.
 If true, errors raise a ValueError exception.
+
+ encoding and errors: specify how to decode percent-encoded sequences
+ into Unicode characters, as accepted by the bytes.decode() method.
 """
 dict = {}
- for name, value in parse_qsl(qs, keep_blank_values, strict_parsing):
+ pairs = parse_qsl(qs, keep_blank_values, strict_parsing,
+ encoding=encoding, errors=errors)
+ for name, value in pairs:
 if name in dict:
 dict[name].append(value)
 else:
 dict[name] = [value]
 return dict
 
-def parse_qsl(qs, keep_blank_values=False, strict_parsing=False):
+def parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
+ encoding='utf-8', errors='replace'):
 """Parse a query given as a string argument.
 
 Arguments:
@@ -566,6 +573,9 @@
 false (the default), errors are silently ignored. If true,
 errors raise a ValueError exception.
 
+ encoding and errors: specify how to decode percent-encoded sequences
+ into Unicode characters, as accepted by the bytes.decode() method.
+
 Returns a list, as G-d intended.
 """
 qs, _coerce_result = _coerce_args(qs)
@@ -584,8 +594,12 @@
 else:
 continue
 if len(nv[1]) or keep_blank_values:
- name = _coerce_result(unquote(nv[0].replace('+', ' ')))
- value = _coerce_result(unquote(nv[1].replace('+', ' ')))
+ name = nv[0].replace('+', ' ')
+ name = unquote(name, encoding=encoding, errors=errors)
+ name = _coerce_result(name)
+ value = nv[1].replace('+', ' ')
+ value = unquote(value, encoding=encoding, errors=errors)
+ value = _coerce_result(value)
 r.append((name, value))
 return r
 
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Jan 14 13:52:12 2011
@@ -43,6 +43,8 @@
 Library
 -------
 
+- Add encoding and errors arguments to urllib.parse_qs() and urllib.parse_qsl()
+
 - Issue #10899: No function type annotations in the standard library.
 Removed function type annotations from _pyio.py.
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /