FAILED tests/test_url.py::test_ipv6_zone - ValueError: 'fe80::822a:a8ff:fe49:470c%тест%42' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url.py::test_human_repr_delimiters - ValueError: '\\' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url_parsing.py::TestHost::test_masked_ipv4 - ValueError: An IPv4 address cannot be in brackets
FAILED tests/test_url_parsing.py::TestHost::test_strange_ip - ValueError: '-1' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url_parsing.py::TestUserInfo::test_weird_user3 - ValueError: 'some' does not appear to be an IPv4 or IPv6 address
Passing tests ;-).
============================================================== FAILURES ===============================================================
___________________________________________________________ test_ipv6_zone ____________________________________________________________
def test_ipv6_zone():
> url = URL("http://[fe80::822a:a8ff:fe49:470c%тест%42]:123")
tests/test_url.py:239:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__
val = urlsplit(val)
/usr/lib/python3.12/urllib/parse.py:500: in urlsplit
_check_bracketed_host(bracketed_host)
/usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
address = 'fe80::822a:a8ff:fe49:470c%тест%42'
def ip_address(address):
"""Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP address. Either IPv4 or
IPv6 addresses may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Address or IPv6Address object.
Raises:
ValueError: if the *address* passed isn't either a v4 or a v6
address
"""
try:
return IPv4Address(address)
except (AddressValueError, NetmaskValueError):
pass
try:
return IPv6Address(address)
except (AddressValueError, NetmaskValueError):
pass
> raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
E ValueError: 'fe80::822a:a8ff:fe49:470c%тест%42' does not appear to be an IPv4 or IPv6 address
/usr/lib/python3.12/ipaddress.py:54: ValueError
_____________________________________________________ test_human_repr_delimiters ______________________________________________________
def test_human_repr_delimiters():
url = URL.build(
scheme="http",
user=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
password=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
host="хост.домен",
port=8080,
path="/ !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
query={
" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~": " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
},
fragment=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
)
s = url.human_repr()
> assert URL(s) == url
tests/test_url.py:1630:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__
val = urlsplit(val)
/usr/lib/python3.12/urllib/parse.py:500: in urlsplit
_check_bracketed_host(bracketed_host)
/usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
address = '\\'
def ip_address(address):
"""Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP address. Either IPv4 or
IPv6 addresses may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Address or IPv6Address object.
Raises:
ValueError: if the *address* passed isn't either a v4 or a v6
address
"""
try:
return IPv4Address(address)
except (AddressValueError, NetmaskValueError):
pass
try:
return IPv6Address(address)
except (AddressValueError, NetmaskValueError):
pass
> raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
E ValueError: '\\' does not appear to be an IPv4 or IPv6 address
/usr/lib/python3.12/ipaddress.py:54: ValueError
______________________________________________________ TestHost.test_masked_ipv4 ______________________________________________________
self = <test_url_parsing.TestHost object at 0x7f36ce6d2510>
def test_masked_ipv4(self):
> u = URL("//[127.0.0.1]/")
tests/test_url_parsing.py:182:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__
val = urlsplit(val)
/usr/lib/python3.12/urllib/parse.py:500: in urlsplit
_check_bracketed_host(bracketed_host)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hostname = '127.0.0.1'
def _check_bracketed_host(hostname):
if hostname.startswith('v'):
if not re.match(r"\Av[a-fA-F0-9]+\..+\Z", hostname):
raise ValueError(f"IPvFuture address is invalid")
else:
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4
if isinstance(ip, ipaddress.IPv4Address):
> raise ValueError(f"An IPv4 address cannot be in brackets")
E ValueError: An IPv4 address cannot be in brackets
/usr/lib/python3.12/urllib/parse.py:448: ValueError
______________________________________________________ TestHost.test_strange_ip _______________________________________________________
self = <test_url_parsing.TestHost object at 0x7f36ce6d2750>
def test_strange_ip(self):
> u = URL("//[-1]/")
tests/test_url_parsing.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__
val = urlsplit(val)
/usr/lib/python3.12/urllib/parse.py:500: in urlsplit
_check_bracketed_host(bracketed_host)
/usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
address = '-1'
def ip_address(address):
"""Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP address. Either IPv4 or
IPv6 addresses may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Address or IPv6Address object.
Raises:
ValueError: if the *address* passed isn't either a v4 or a v6
address
"""
try:
return IPv4Address(address)
except (AddressValueError, NetmaskValueError):
pass
try:
return IPv6Address(address)
except (AddressValueError, NetmaskValueError):
pass
> raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
E ValueError: '-1' does not appear to be an IPv4 or IPv6 address
/usr/lib/python3.12/ipaddress.py:54: ValueError
____________________________________________________ TestUserInfo.test_weird_user3 ____________________________________________________
self = <test_url_parsing.TestUserInfo object at 0x7f36ce6d31d0>
def test_weird_user3(self):
> u = URL("//[some]@host")
tests/test_url_parsing.py:323:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__
val = urlsplit(val)
/usr/lib/python3.12/urllib/parse.py:500: in urlsplit
_check_bracketed_host(bracketed_host)
/usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host
ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
address = 'some'
def ip_address(address):
"""Take an IP string/int and return an object of the correct type.
Args:
address: A string or integer, the IP address. Either IPv4 or
IPv6 addresses may be supplied; integers less than 2**32 will
be considered to be IPv4 by default.
Returns:
An IPv4Address or IPv6Address object.
Raises:
ValueError: if the *address* passed isn't either a v4 or a v6
address
"""
try:
return IPv4Address(address)
except (AddressValueError, NetmaskValueError):
pass
try:
return IPv6Address(address)
except (AddressValueError, NetmaskValueError):
pass
> raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address')
E ValueError: 'some' does not appear to be an IPv4 or IPv6 address
/usr/lib/python3.12/ipaddress.py:54: ValueError
----------- coverage: platform linux, python 3.12.0-beta-1 -----------
Name Stmts Miss Branch BrPart Cover
------------------------------------------------------------------------------------------
.venv/lib/python3.12/site-packages/yarl/__init__.py 3 0 0 0 100%
.venv/lib/python3.12/site-packages/yarl/_quoting.py 10 2 4 1 79%
.venv/lib/python3.12/site-packages/yarl/_quoting_py.py 155 0 68 0 100%
.venv/lib/python3.12/site-packages/yarl/_url.py 604 2 364 0 99%
------------------------------------------------------------------------------------------
TOTAL 772 4 436 1 99%
======================================================= short test summary info =======================================================
FAILED tests/test_url.py::test_ipv6_zone - ValueError: 'fe80::822a:a8ff:fe49:470c%тест%42' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url.py::test_human_repr_delimiters - ValueError: '\\' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url_parsing.py::TestHost::test_masked_ipv4 - ValueError: An IPv4 address cannot be in brackets
FAILED tests/test_url_parsing.py::TestHost::test_strange_ip - ValueError: '-1' does not appear to be an IPv4 or IPv6 address
FAILED tests/test_url_parsing.py::TestUserInfo::test_weird_user3 - ValueError: 'some' does not appear to be an IPv4 or IPv6 address
============================================== 5 failed, 1095 passed, 2 xfailed in 5.28s ==============================================
$ python --version
Python 3.12.0b1
$ python -m pip show multidict
Name: multidict
Version: 6.0.4
Summary: multidict implementation
Home-page: https://github.com/aio-libs/multidict
Author: Andrew Svetlov
Author-email: andrew.svetlov@gmail.com
License: Apache 2
Location: /tmp/yarl/.venv/lib/python3.12/site-packages
Requires:
Required-by: yarl
$ python -m pip show yarl
Name: yarl
Version: 1.9.2
Summary: Yet another URL library
Home-page: https://github.com/aio-libs/yarl/
Author: Andrew Svetlov
Author-email: andrew.svetlov@gmail.com
License: Apache-2.0
Location: /tmp/yarl/.venv/lib/python3.12/site-packages
Requires: idna, multidict
Required-by:
Describe the bug
When running the test suite under Python 3.12, a few tests fail:
(full traceback below)
To Reproduce
Run
python3.12 -m pytest;-).Expected behavior
Passing tests ;-).
Logs/tracebacks
============================================================== FAILURES =============================================================== ___________________________________________________________ test_ipv6_zone ____________________________________________________________ def test_ipv6_zone(): > url = URL("http://[fe80::822a:a8ff:fe49:470c%тест%42]:123") tests/test_url.py:239: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__ val = urlsplit(val) /usr/lib/python3.12/urllib/parse.py:500: in urlsplit _check_bracketed_host(bracketed_host) /usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = 'fe80::822a:a8ff:fe49:470c%тест%42' def ip_address(address): """Take an IP string/int and return an object of the correct type. Args: address: A string or integer, the IP address. Either IPv4 or IPv6 addresses may be supplied; integers less than 2**32 will be considered to be IPv4 by default. Returns: An IPv4Address or IPv6Address object. Raises: ValueError: if the *address* passed isn't either a v4 or a v6 address """ try: return IPv4Address(address) except (AddressValueError, NetmaskValueError): pass try: return IPv6Address(address) except (AddressValueError, NetmaskValueError): pass > raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address') E ValueError: 'fe80::822a:a8ff:fe49:470c%тест%42' does not appear to be an IPv4 or IPv6 address /usr/lib/python3.12/ipaddress.py:54: ValueError _____________________________________________________ test_human_repr_delimiters ______________________________________________________ def test_human_repr_delimiters(): url = URL.build( scheme="http", user=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", password=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", host="хост.домен", port=8080, path="/ !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", query={ " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~": " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" }, fragment=" !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", ) s = url.human_repr() > assert URL(s) == url tests/test_url.py:1630: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__ val = urlsplit(val) /usr/lib/python3.12/urllib/parse.py:500: in urlsplit _check_bracketed_host(bracketed_host) /usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = '\\' def ip_address(address): """Take an IP string/int and return an object of the correct type. Args: address: A string or integer, the IP address. Either IPv4 or IPv6 addresses may be supplied; integers less than 2**32 will be considered to be IPv4 by default. Returns: An IPv4Address or IPv6Address object. Raises: ValueError: if the *address* passed isn't either a v4 or a v6 address """ try: return IPv4Address(address) except (AddressValueError, NetmaskValueError): pass try: return IPv6Address(address) except (AddressValueError, NetmaskValueError): pass > raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address') E ValueError: '\\' does not appear to be an IPv4 or IPv6 address /usr/lib/python3.12/ipaddress.py:54: ValueError ______________________________________________________ TestHost.test_masked_ipv4 ______________________________________________________ self = <test_url_parsing.TestHost object at 0x7f36ce6d2510> def test_masked_ipv4(self): > u = URL("//[127.0.0.1]/") tests/test_url_parsing.py:182: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__ val = urlsplit(val) /usr/lib/python3.12/urllib/parse.py:500: in urlsplit _check_bracketed_host(bracketed_host) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hostname = '127.0.0.1' def _check_bracketed_host(hostname): if hostname.startswith('v'): if not re.match(r"\Av[a-fA-F0-9]+\..+\Z", hostname): raise ValueError(f"IPvFuture address is invalid") else: ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 if isinstance(ip, ipaddress.IPv4Address): > raise ValueError(f"An IPv4 address cannot be in brackets") E ValueError: An IPv4 address cannot be in brackets /usr/lib/python3.12/urllib/parse.py:448: ValueError ______________________________________________________ TestHost.test_strange_ip _______________________________________________________ self = <test_url_parsing.TestHost object at 0x7f36ce6d2750> def test_strange_ip(self): > u = URL("//[-1]/") tests/test_url_parsing.py:198: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__ val = urlsplit(val) /usr/lib/python3.12/urllib/parse.py:500: in urlsplit _check_bracketed_host(bracketed_host) /usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = '-1' def ip_address(address): """Take an IP string/int and return an object of the correct type. Args: address: A string or integer, the IP address. Either IPv4 or IPv6 addresses may be supplied; integers less than 2**32 will be considered to be IPv4 by default. Returns: An IPv4Address or IPv6Address object. Raises: ValueError: if the *address* passed isn't either a v4 or a v6 address """ try: return IPv4Address(address) except (AddressValueError, NetmaskValueError): pass try: return IPv6Address(address) except (AddressValueError, NetmaskValueError): pass > raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address') E ValueError: '-1' does not appear to be an IPv4 or IPv6 address /usr/lib/python3.12/ipaddress.py:54: ValueError ____________________________________________________ TestUserInfo.test_weird_user3 ____________________________________________________ self = <test_url_parsing.TestUserInfo object at 0x7f36ce6d31d0> def test_weird_user3(self): > u = URL("//[some]@host") tests/test_url_parsing.py:323: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.12/site-packages/yarl/_url.py:172: in __new__ val = urlsplit(val) /usr/lib/python3.12/urllib/parse.py:500: in urlsplit _check_bracketed_host(bracketed_host) /usr/lib/python3.12/urllib/parse.py:446: in _check_bracketed_host ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = 'some' def ip_address(address): """Take an IP string/int and return an object of the correct type. Args: address: A string or integer, the IP address. Either IPv4 or IPv6 addresses may be supplied; integers less than 2**32 will be considered to be IPv4 by default. Returns: An IPv4Address or IPv6Address object. Raises: ValueError: if the *address* passed isn't either a v4 or a v6 address """ try: return IPv4Address(address) except (AddressValueError, NetmaskValueError): pass try: return IPv6Address(address) except (AddressValueError, NetmaskValueError): pass > raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 address') E ValueError: 'some' does not appear to be an IPv4 or IPv6 address /usr/lib/python3.12/ipaddress.py:54: ValueError ----------- coverage: platform linux, python 3.12.0-beta-1 ----------- Name Stmts Miss Branch BrPart Cover ------------------------------------------------------------------------------------------ .venv/lib/python3.12/site-packages/yarl/__init__.py 3 0 0 0 100% .venv/lib/python3.12/site-packages/yarl/_quoting.py 10 2 4 1 79% .venv/lib/python3.12/site-packages/yarl/_quoting_py.py 155 0 68 0 100% .venv/lib/python3.12/site-packages/yarl/_url.py 604 2 364 0 99% ------------------------------------------------------------------------------------------ TOTAL 772 4 436 1 99% ======================================================= short test summary info ======================================================= FAILED tests/test_url.py::test_ipv6_zone - ValueError: 'fe80::822a:a8ff:fe49:470c%тест%42' does not appear to be an IPv4 or IPv6 address FAILED tests/test_url.py::test_human_repr_delimiters - ValueError: '\\' does not appear to be an IPv4 or IPv6 address FAILED tests/test_url_parsing.py::TestHost::test_masked_ipv4 - ValueError: An IPv4 address cannot be in brackets FAILED tests/test_url_parsing.py::TestHost::test_strange_ip - ValueError: '-1' does not appear to be an IPv4 or IPv6 address FAILED tests/test_url_parsing.py::TestUserInfo::test_weird_user3 - ValueError: 'some' does not appear to be an IPv4 or IPv6 address ============================================== 5 failed, 1095 passed, 2 xfailed in 5.28s ==============================================Python Version
multidict Version
yarl Version
OS
Gentoo Linux amd64
Additional context
Confirmed on 723a5ba.
Code of Conduct