Refs #27753 -- Removed django.utils.http urllib aliases per deprecation timeline.
This commit is contained in:
parent
b7dd89ed53
commit
88ed1c8d08
|
@ -7,14 +7,12 @@ import warnings
|
||||||
from binascii import Error as BinasciiError
|
from binascii import Error as BinasciiError
|
||||||
from email.utils import formatdate
|
from email.utils import formatdate
|
||||||
from urllib.parse import (
|
from urllib.parse import (
|
||||||
ParseResult, SplitResult, _coerce_args, _splitnetloc, _splitparams, quote,
|
ParseResult, SplitResult, _coerce_args, _splitnetloc, _splitparams,
|
||||||
quote_plus, scheme_chars, unquote, unquote_plus,
|
scheme_chars, unquote, urlencode as original_urlencode, uses_params,
|
||||||
urlencode as original_urlencode, uses_params,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
from django.utils.deprecation import RemovedInDjango40Warning
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
from django.utils.functional import keep_lazy_text
|
|
||||||
from django.utils.regex_helper import _lazy_re_compile
|
from django.utils.regex_helper import _lazy_re_compile
|
||||||
|
|
||||||
# based on RFC 7232, Appendix C
|
# based on RFC 7232, Appendix C
|
||||||
|
@ -42,62 +40,6 @@ RFC3986_GENDELIMS = ":/?#[]@"
|
||||||
RFC3986_SUBDELIMS = "!$&'()*+,;="
|
RFC3986_SUBDELIMS = "!$&'()*+,;="
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
|
||||||
def urlquote(url, safe='/'):
|
|
||||||
"""
|
|
||||||
A legacy compatibility wrapper to Python's urllib.parse.quote() function.
|
|
||||||
(was used for unicode handling on Python 2)
|
|
||||||
"""
|
|
||||||
warnings.warn(
|
|
||||||
'django.utils.http.urlquote() is deprecated in favor of '
|
|
||||||
'urllib.parse.quote().',
|
|
||||||
RemovedInDjango40Warning, stacklevel=2,
|
|
||||||
)
|
|
||||||
return quote(url, safe)
|
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
|
||||||
def urlquote_plus(url, safe=''):
|
|
||||||
"""
|
|
||||||
A legacy compatibility wrapper to Python's urllib.parse.quote_plus()
|
|
||||||
function. (was used for unicode handling on Python 2)
|
|
||||||
"""
|
|
||||||
warnings.warn(
|
|
||||||
'django.utils.http.urlquote_plus() is deprecated in favor of '
|
|
||||||
'urllib.parse.quote_plus(),',
|
|
||||||
RemovedInDjango40Warning, stacklevel=2,
|
|
||||||
)
|
|
||||||
return quote_plus(url, safe)
|
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
|
||||||
def urlunquote(quoted_url):
|
|
||||||
"""
|
|
||||||
A legacy compatibility wrapper to Python's urllib.parse.unquote() function.
|
|
||||||
(was used for unicode handling on Python 2)
|
|
||||||
"""
|
|
||||||
warnings.warn(
|
|
||||||
'django.utils.http.urlunquote() is deprecated in favor of '
|
|
||||||
'urllib.parse.unquote().',
|
|
||||||
RemovedInDjango40Warning, stacklevel=2,
|
|
||||||
)
|
|
||||||
return unquote(quoted_url)
|
|
||||||
|
|
||||||
|
|
||||||
@keep_lazy_text
|
|
||||||
def urlunquote_plus(quoted_url):
|
|
||||||
"""
|
|
||||||
A legacy compatibility wrapper to Python's urllib.parse.unquote_plus()
|
|
||||||
function. (was used for unicode handling on Python 2)
|
|
||||||
"""
|
|
||||||
warnings.warn(
|
|
||||||
'django.utils.http.urlunquote_plus() is deprecated in favor of '
|
|
||||||
'urllib.parse.unquote_plus().',
|
|
||||||
RemovedInDjango40Warning, stacklevel=2,
|
|
||||||
)
|
|
||||||
return unquote_plus(quoted_url)
|
|
||||||
|
|
||||||
|
|
||||||
def urlencode(query, doseq=False):
|
def urlencode(query, doseq=False):
|
||||||
"""
|
"""
|
||||||
A version of Python's urllib.parse.urlencode() function that can operate on
|
A version of Python's urllib.parse.urlencode() function that can operate on
|
||||||
|
|
|
@ -246,7 +246,8 @@ in Django 4.0.
|
||||||
See :ref:`deprecated-features-3.0` for details on these changes, including how
|
See :ref:`deprecated-features-3.0` for details on these changes, including how
|
||||||
to remove usage of these features.
|
to remove usage of these features.
|
||||||
|
|
||||||
* ...
|
* ``django.utils.http.urlquote()``, ``urlquote_plus()``, ``urlunquote()``, and
|
||||||
|
``urlunquote_plus()`` are removed.
|
||||||
|
|
||||||
See :ref:`deprecated-features-3.1` for details on these changes, including how
|
See :ref:`deprecated-features-3.1` for details on these changes, including how
|
||||||
to remove usage of these features.
|
to remove usage of these features.
|
||||||
|
|
|
@ -3,15 +3,14 @@ import unittest
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
from django.test import SimpleTestCase, ignore_warnings
|
from django.test import SimpleTestCase
|
||||||
from django.utils.datastructures import MultiValueDict
|
from django.utils.datastructures import MultiValueDict
|
||||||
from django.utils.deprecation import RemovedInDjango40Warning
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||||||
from django.utils.http import (
|
from django.utils.http import (
|
||||||
base36_to_int, escape_leading_slashes, http_date, int_to_base36,
|
base36_to_int, escape_leading_slashes, http_date, int_to_base36,
|
||||||
is_safe_url, is_same_domain, parse_etags, parse_http_date, parse_qsl,
|
is_safe_url, is_same_domain, parse_etags, parse_http_date, parse_qsl,
|
||||||
quote_etag, url_has_allowed_host_and_scheme, urlencode, urlquote,
|
quote_etag, url_has_allowed_host_and_scheme, urlencode,
|
||||||
urlquote_plus, urlsafe_base64_decode, urlsafe_base64_encode, urlunquote,
|
urlsafe_base64_decode, urlsafe_base64_encode,
|
||||||
urlunquote_plus,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -252,25 +251,6 @@ class URLSafeBase64Tests(unittest.TestCase):
|
||||||
self.assertEqual(bytestring, decoded)
|
self.assertEqual(bytestring, decoded)
|
||||||
|
|
||||||
|
|
||||||
@ignore_warnings(category=RemovedInDjango40Warning)
|
|
||||||
class URLQuoteTests(unittest.TestCase):
|
|
||||||
def test_quote(self):
|
|
||||||
self.assertEqual(urlquote('Paris & Orl\xe9ans'), 'Paris%20%26%20Orl%C3%A9ans')
|
|
||||||
self.assertEqual(urlquote('Paris & Orl\xe9ans', safe="&"), 'Paris%20&%20Orl%C3%A9ans')
|
|
||||||
|
|
||||||
def test_unquote(self):
|
|
||||||
self.assertEqual(urlunquote('Paris%20%26%20Orl%C3%A9ans'), 'Paris & Orl\xe9ans')
|
|
||||||
self.assertEqual(urlunquote('Paris%20&%20Orl%C3%A9ans'), 'Paris & Orl\xe9ans')
|
|
||||||
|
|
||||||
def test_quote_plus(self):
|
|
||||||
self.assertEqual(urlquote_plus('Paris & Orl\xe9ans'), 'Paris+%26+Orl%C3%A9ans')
|
|
||||||
self.assertEqual(urlquote_plus('Paris & Orl\xe9ans', safe="&"), 'Paris+&+Orl%C3%A9ans')
|
|
||||||
|
|
||||||
def test_unquote_plus(self):
|
|
||||||
self.assertEqual(urlunquote_plus('Paris+%26+Orl%C3%A9ans'), 'Paris & Orl\xe9ans')
|
|
||||||
self.assertEqual(urlunquote_plus('Paris+&+Orl%C3%A9ans'), 'Paris & Orl\xe9ans')
|
|
||||||
|
|
||||||
|
|
||||||
class IsSameDomainTests(unittest.TestCase):
|
class IsSameDomainTests(unittest.TestCase):
|
||||||
def test_good(self):
|
def test_good(self):
|
||||||
for pair in (
|
for pair in (
|
||||||
|
|
Loading…
Reference in New Issue