mirror of
https://github.com/python/cpython
synced 2024-10-14 08:51:20 +00:00
bpo-42967: Fix urllib.parse docs and make logic clearer (GH-24536)
This commit is contained in:
parent
4bb2a1ebc5
commit
a2f0654b0a
|
@ -190,7 +190,8 @@ or on combining URL components into a URL string.
|
|||
read. If set, then throws a :exc:`ValueError` if there are more than
|
||||
*max_num_fields* fields read.
|
||||
|
||||
The optional argument *separator* is the symbol to use for separating the query arguments. It defaults to `&`.
|
||||
The optional argument *separator* is the symbol to use for separating the
|
||||
query arguments. It defaults to ``&``.
|
||||
|
||||
Use the :func:`urllib.parse.urlencode` function (with the ``doseq``
|
||||
parameter set to ``True``) to convert such dictionaries into query
|
||||
|
@ -204,8 +205,10 @@ or on combining URL components into a URL string.
|
|||
Added *max_num_fields* parameter.
|
||||
|
||||
.. versionchanged:: 3.10
|
||||
Added *separator* parameter with the default value of `&`. Python versions earlier than Python 3.10 allowed using both ";" and "&" as
|
||||
query parameter separator. This has been changed to allow only a single separator key, with "&" as the default separator.
|
||||
Added *separator* parameter with the default value of ``&``. Python
|
||||
versions earlier than Python 3.10 allowed using both ``;`` and ``&`` as
|
||||
query parameter separator. This has been changed to allow only a single
|
||||
separator key, with ``&`` as the default separator.
|
||||
|
||||
|
||||
.. function:: parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&')
|
||||
|
@ -232,7 +235,8 @@ or on combining URL components into a URL string.
|
|||
read. If set, then throws a :exc:`ValueError` if there are more than
|
||||
*max_num_fields* fields read.
|
||||
|
||||
The optional argument *separator* is the symbol to use for separating the query arguments. It defaults to `&`.
|
||||
The optional argument *separator* is the symbol to use for separating the
|
||||
query arguments. It defaults to ``&``.
|
||||
|
||||
Use the :func:`urllib.parse.urlencode` function to convert such lists of pairs into
|
||||
query strings.
|
||||
|
@ -244,8 +248,10 @@ or on combining URL components into a URL string.
|
|||
Added *max_num_fields* parameter.
|
||||
|
||||
.. versionchanged:: 3.10
|
||||
Added *separator* parameter with the default value of `&`. Python versions earlier than Python 3.10 allowed using both ";" and "&" as
|
||||
query parameter separator. This has been changed to allow only a single separator key, with "&" as the default separator.
|
||||
Added *separator* parameter with the default value of ``&``. Python
|
||||
versions earlier than Python 3.10 allowed using both ``;`` and ``&`` as
|
||||
query parameter separator. This has been changed to allow only a single
|
||||
separator key, with ``&`` as the default separator.
|
||||
|
||||
|
||||
.. function:: urlunparse(parts)
|
||||
|
|
|
@ -2447,11 +2447,11 @@ details, see the documentation for ``loop.create_datagram_endpoint()``.
|
|||
Notable changes in Python 3.6.13
|
||||
================================
|
||||
|
||||
Earlier Python versions allowed using both ";" and "&" as
|
||||
Earlier Python versions allowed using both ``;`` and ``&`` as
|
||||
query parameter separators in :func:`urllib.parse.parse_qs` and
|
||||
:func:`urllib.parse.parse_qsl`. Due to security concerns, and to conform with
|
||||
newer W3C recommendations, this has been changed to allow only a single
|
||||
separator key, with "&" as the default. This change also affects
|
||||
separator key, with ``&`` as the default. This change also affects
|
||||
:func:`cgi.parse` and :func:`cgi.parse_multipart` as they use the affected
|
||||
functions internally. For more details, please see their respective
|
||||
documentation.
|
||||
|
|
|
@ -2238,11 +2238,11 @@ details, see the documentation for ``loop.create_datagram_endpoint()``.
|
|||
Notable changes in Python 3.8.8
|
||||
===============================
|
||||
|
||||
Earlier Python versions allowed using both ";" and "&" as
|
||||
Earlier Python versions allowed using both ``;`` and ``&`` as
|
||||
query parameter separators in :func:`urllib.parse.parse_qs` and
|
||||
:func:`urllib.parse.parse_qsl`. Due to security concerns, and to conform with
|
||||
newer W3C recommendations, this has been changed to allow only a single
|
||||
separator key, with "&" as the default. This change also affects
|
||||
separator key, with ``&`` as the default. This change also affects
|
||||
:func:`cgi.parse` and :func:`cgi.parse_multipart` as they use the affected
|
||||
functions internally. For more details, please see their respective
|
||||
documentation.
|
||||
|
|
|
@ -1520,11 +1520,11 @@ become a :exc:`TypeError` in Python 3.10.
|
|||
urllib.parse
|
||||
------------
|
||||
|
||||
Earlier Python versions allowed using both ";" and "&" as
|
||||
Earlier Python versions allowed using both ``;`` and ``&`` as
|
||||
query parameter separators in :func:`urllib.parse.parse_qs` and
|
||||
:func:`urllib.parse.parse_qsl`. Due to security concerns, and to conform with
|
||||
newer W3C recommendations, this has been changed to allow only a single
|
||||
separator key, with "&" as the default. This change also affects
|
||||
separator key, with ``&`` as the default. This change also affects
|
||||
:func:`cgi.parse` and :func:`cgi.parse_multipart` as they use the affected
|
||||
functions internally. For more details, please see their respective
|
||||
documentation.
|
||||
|
|
|
@ -734,8 +734,7 @@ def parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
|
|||
"""
|
||||
qs, _coerce_result = _coerce_args(qs)
|
||||
|
||||
if not separator or (not isinstance(separator, str)
|
||||
and not isinstance(separator, bytes)):
|
||||
if not separator or (not isinstance(separator, (str, bytes))):
|
||||
raise ValueError("Separator must be of type string or bytes.")
|
||||
|
||||
# If max_num_fields is defined then check that the number of fields
|
||||
|
|
Loading…
Reference in a new issue