Source: yarl
Version: 1.8.2-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20230726 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> cd docs && \
> PYTHONPATH=/<<PKGBUILDDIR>> http_proxy='http://127.0.0.1:9/' 
> https_proxy='https://127.0.0.1:9/' \
> python3 -m sphinx -N -E -T -b html . /<<PKGBUILDDIR>>/.pybuild/docs/html/
> Running Sphinx v5.3.0
> making output directory... done
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 2 source files that are out of date
> updating environment: [new config] 2 added, 0 changed, 0 removed
> reading sources... [ 50%] api
> reading sources... [100%] index
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 50%] api
> writing output... [100%] index
> 
> /<<PKGBUILDDIR>>/docs/api.rst:1: WARNING: py:class reference target not 
> found: multidict.MultiDictProxy
> /<<PKGBUILDDIR>>/docs/api.rst:5: WARNING: py:class reference target not 
> found: collections.abc.Mapping
> /<<PKGBUILDDIR>>/docs/api.rst:5: WARNING: py:class reference target not 
> found: multidict.MultiDict
> /<<PKGBUILDDIR>>/docs/api.rst:10: WARNING: py:class reference target not 
> found: collections.abc.Mapping
> /<<PKGBUILDDIR>>/docs/api.rst:10: WARNING: py:class reference target not 
> found: multidict.MultiDict
> /<<PKGBUILDDIR>>/docs/api.rst:1: WARNING: py:func reference target not found: 
> functools.lru_cache
> /<<PKGBUILDDIR>>/docs/api.rst:943: WARNING: py:mod reference target not 
> found: urllib.parse
> /<<PKGBUILDDIR>>/docs/api.rst:946: WARNING: py:mod reference target not 
> found: pathlib
> /<<PKGBUILDDIR>>/docs/index.rst:118: WARNING: py:mod reference target not 
> found: multidict
> generating indices... genindex py-modindex done
> highlighting module code... [100%] yarl._url
> 
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 9 warnings.
> 
> The HTML pages are in ../.pybuild/docs/html.
> rm -rf /<<PKGBUILDDIR>>/.pybuild/docs/html/.doctrees
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_build -O--buildsystem=pybuild -Npython-yarl-doc
> I: pybuild pybuild:307: cython3 yarl/_quoting_c.pyx
> I: pybuild base:240: /usr/bin/python3 setup.py build 
> /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: 
> _DeprecatedConfig: Deprecated config in `setup.cfg`
> !!
> 
>         
> ********************************************************************************
>         The license_file parameter is deprecated, use license_files instead.
> 
>         By 2023-Oct-30, you need to update your project and remove deprecated 
> calls
>         or your builds will no longer be supported.
> 
>         See 
> https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for 
> details.
>         
> ********************************************************************************
> 
> !!
>   parsed = self.parsers.get(option_name, lambda x: x)(value)
> **********************
> * Accelerated build *
> **********************
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/_quoting.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/_quoting_py.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/_url.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> running egg_info
> writing yarl.egg-info/PKG-INFO
> writing dependency_links to yarl.egg-info/dependency_links.txt
> writing requirements to yarl.egg-info/requires.txt
> writing top-level names to yarl.egg-info/top_level.txt
> reading manifest file 'yarl.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '*.cache' found anywhere in 
> distribution
> warning: no previously-included files found matching 'yarl/*.html'
> warning: no previously-included files found matching 'yarl/*.so'
> warning: no previously-included files found matching 'yarl/*.pyd'
> no previously-included directories found matching 'docs/_build'
> adding license file 'LICENSE'
> writing manifest file 'yarl.egg-info/SOURCES.txt'
> copying yarl/__init__.pyi -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/_quoting_c.pyi -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/_quoting_c.pyx -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> copying yarl/py.typed -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl
> running build_ext
> building 'yarl._quoting_c' extension
> creating build
> creating build/temp.linux-x86_64-cpython-311
> creating build/temp.linux-x86_64-cpython-311/yarl
> x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g 
> -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g 
> -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
> -I/usr/include/python3.11 -c yarl/_quoting_c.c -o 
> build/temp.linux-x86_64-cpython-311/yarl/_quoting_c.o
> x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -g -fwrapv -O2 
> -Wl,-z,relro -Wl,-z,now -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
> -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time 
> -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-cpython-311/yarl/_quoting_c.o 
> -L/usr/lib/x86_64-linux-gnu -o 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build/yarl/_quoting_c.cpython-311-x86_64-linux-gnu.so
>    dh_auto_test -O--buildsystem=pybuild -Npython-yarl-doc
> I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build; 
> python3.11 -m pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.4, pytest-7.4.0, pluggy-1.2.0 -- 
> /usr/bin/python3.11
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0
> collecting ... collected 1047 items
> 
> tests/test_cache.py::test_cache_clear PASSED                             [  
> 0%]
> tests/test_cache.py::test_cache_info PASSED                              [  
> 0%]
> tests/test_cache.py::test_cache_configure_default PASSED                 [  
> 0%]
> tests/test_cache.py::test_cache_configure_None PASSED                    [  
> 0%]
> tests/test_cache.py::test_cache_configure_explicit PASSED                [  
> 0%]
> tests/test_cached_property.py::test_reify PASSED                         [  
> 0%]
> tests/test_cached_property.py::test_reify_class PASSED                   [  
> 0%]
> tests/test_cached_property.py::test_reify_assignment PASSED              [  
> 0%]
> tests/test_normalize_path.py::test__normalize_path[-] PASSED             [  
> 0%]
> tests/test_normalize_path.py::test__normalize_path[/-/] PASSED           [  
> 0%]
> tests/test_normalize_path.py::test__normalize_path[/-/] PASSED           [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[/-/] PASSED           [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[path/to-path/to] PASSED [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[./path/to-path/to] PASSED 
> [  1%]
> tests/test_normalize_path.py::test__normalize_path[path/to-path/to] PASSED [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[path/to-path/to] PASSED [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[path/to/.-path/to/] PASSED 
> [  1%]
> tests/test_normalize_path.py::test__normalize_path[path/to/.-path/to/] PASSED 
> [  1%]
> tests/test_normalize_path.py::test__normalize_path[../path/to-path/to] PASSED 
> [  1%]
> tests/test_normalize_path.py::test__normalize_path[path/../to-to] PASSED [  
> 1%]
> tests/test_normalize_path.py::test__normalize_path[path/../../to-to] PASSED [ 
>  2%]
> tests/test_normalize_path.py::test__normalize_path[\u03bc\u03bf\u03bd\u03bf\u03c0\u03ac\u03c4\u03b9/../../\u03bd\u03b1/\u1d1c\u0274\u026a/\u1d04\u1d0f\u1d05\u1d07-\u03bd\u03b1/\u1d1c\u0274\u026a/\u1d04\u1d0f\u1d05\u1d07]
>  PASSED [  2%]
> tests/test_normalize_path.py::test__normalize_path[\u03bc\u03bf\u03bd\u03bf\u03c0\u03ac\u03c4\u03b9/../../\u03bd\u03b1/\U0001d566\U0001d55f\U0001d55a/\U0001d554\U0001d560\U0001d555\U0001d556/.-\u03bd\u03b1/\U0001d566\U0001d55f\U0001d55a/\U0001d554\U0001d560\U0001d555\U0001d556/]
>  PASSED [  2%]
> tests/test_pickle.py::test_pickle PASSED                                 [  
> 2%]
> tests/test_pickle.py::test_default_style_state PASSED                    [  
> 2%]
> tests/test_quoting.py::test_quote_not_allowed_non_strict[py_quoter] PASSED [  
> 2%]
> tests/test_quoting.py::test_quote_not_allowed_non_strict[c_quoter] PASSED [  
> 2%]
> tests/test_quoting.py::test_quote_unfinished_tail_percent_non_strict[py_quoter]
>  PASSED [  2%]
> tests/test_quoting.py::test_quote_unfinished_tail_percent_non_strict[c_quoter]
>  PASSED [  2%]
> tests/test_quoting.py::test_quote_unfinished_tail_digit_non_strict[py_quoter] 
> PASSED [  2%]
> tests/test_quoting.py::test_quote_unfinished_tail_digit_non_strict[c_quoter] 
> PASSED [  2%]
> tests/test_quoting.py::test_quote_unfinished_tail_safe_non_strict[py_quoter] 
> PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_safe_non_strict[c_quoter] 
> PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_unsafe_non_strict[py_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_unsafe_non_strict[c_quoter] 
> PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii_non_strict[py_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii_non_strict[c_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii2_non_strict[py_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii2_non_strict[c_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii3_non_strict[py_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_unfinished_tail_non_ascii3_non_strict[c_quoter]
>  PASSED [  3%]
> tests/test_quoting.py::test_quote_from_bytes[py_quoter] PASSED           [  
> 4%]
> tests/test_quoting.py::test_quote_from_bytes[c_quoter] PASSED            [  
> 4%]
> tests/test_quoting.py::test_quote_ignore_broken_unicode[py_quoter] PASSED [  
> 4%]
> tests/test_quoting.py::test_quote_ignore_broken_unicode[c_quoter] PASSED [  
> 4%]
> tests/test_quoting.py::test_unquote_to_bytes[py_unquoter] PASSED         [  
> 4%]
> tests/test_quoting.py::test_unquote_to_bytes[c_unquoter] PASSED          [  
> 4%]
> tests/test_quoting.py::test_never_quote[py_quoter] PASSED                [  
> 4%]
> tests/test_quoting.py::test_never_quote[c_quoter] PASSED                 [  
> 4%]
> tests/test_quoting.py::test_safe[py_quoter] PASSED                       [  
> 4%]
> tests/test_quoting.py::test_safe[c_quoter] PASSED                        [  
> 4%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x00] PASSED       [  
> 4%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x01] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x02] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x03] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x04] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x05] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x06] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x07] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x08] PASSED       [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\t] PASSED         [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\n] PASSED         [  
> 5%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x0b] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x0c] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\r] PASSED         [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x0e] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x0f] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x10] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x11] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x12] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x13] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x14] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x15] PASSED       [  
> 6%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x16] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x17] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x18] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x19] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1a] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1b] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1c] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1d] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1e] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x1f] PASSED       [  
> 7%]
> tests/test_quoting.py::test_default_quoting[py_quoter-<] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter->] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-#] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-"] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-{] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-}] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-|] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\\] PASSED         [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-^] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-[] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-]] PASSED          [  
> 8%]
> tests/test_quoting.py::test_default_quoting[py_quoter-`] PASSED          [  
> 9%]
> tests/test_quoting.py::test_default_quoting[py_quoter-\x7f] PASSED       [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x00] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x01] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x02] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x03] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x04] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x05] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x06] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x07] PASSED        [  
> 9%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x08] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\t] PASSED          [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\n] PASSED          [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x0b] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x0c] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\r] PASSED          [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x0e] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x0f] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x10] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x11] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x12] PASSED        [ 
> 10%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x13] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x14] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x15] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x16] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x17] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x18] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x19] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1a] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1b] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1c] PASSED        [ 
> 11%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1d] PASSED        [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1e] PASSED        [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x1f] PASSED        [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-<] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter->] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-#] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-"] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-{] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-}] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-|] PASSED           [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\\] PASSED          [ 
> 12%]
> tests/test_quoting.py::test_default_quoting[c_quoter-^] PASSED           [ 
> 13%]
> tests/test_quoting.py::test_default_quoting[c_quoter-[] PASSED           [ 
> 13%]
> tests/test_quoting.py::test_default_quoting[c_quoter-]] PASSED           [ 
> 13%]
> tests/test_quoting.py::test_default_quoting[c_quoter-`] PASSED           [ 
> 13%]
> tests/test_quoting.py::test_default_quoting[c_quoter-\x7f] PASSED        [ 
> 13%]
> tests/test_quoting.py::test_default_quoting_percent[py_quoter] PASSED    [ 
> 13%]
> tests/test_quoting.py::test_default_quoting_percent[c_quoter] PASSED     [ 
> 13%]
> tests/test_quoting.py::test_default_quoting_partial[py_quoter] PASSED    [ 
> 13%]
> tests/test_quoting.py::test_default_quoting_partial[c_quoter] PASSED     [ 
> 13%]
> tests/test_quoting.py::test_quoting_space[py_quoter] PASSED              [ 
> 13%]
> tests/test_quoting.py::test_quoting_space[c_quoter] PASSED               [ 
> 14%]
> tests/test_quoting.py::test_quoting_plus[py_quoter] PASSED               [ 
> 14%]
> tests/test_quoting.py::test_quoting_plus[c_quoter] PASSED                [ 
> 14%]
> tests/test_quoting.py::test_quote_with_unicode[py_quoter] PASSED         [ 
> 14%]
> tests/test_quoting.py::test_quote_with_unicode[c_quoter] PASSED          [ 
> 14%]
> tests/test_quoting.py::test_quote_plus_with_unicode[py_quoter] PASSED    [ 
> 14%]
> tests/test_quoting.py::test_quote_plus_with_unicode[c_quoter] PASSED     [ 
> 14%]
> tests/test_quoting.py::test_unquoting[py_unquoter-0] PASSED              [ 
> 14%]
> tests/test_quoting.py::test_unquoting[py_unquoter-1] PASSED              [ 
> 14%]
> tests/test_quoting.py::test_unquoting[py_unquoter-2] PASSED              [ 
> 14%]
> tests/test_quoting.py::test_unquoting[py_unquoter-3] PASSED              [ 
> 14%]
> tests/test_quoting.py::test_unquoting[py_unquoter-4] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-5] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-6] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-7] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-8] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-9] PASSED              [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-10] PASSED             [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-11] PASSED             [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-12] PASSED             [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-13] PASSED             [ 
> 15%]
> tests/test_quoting.py::test_unquoting[py_unquoter-14] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-15] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-16] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-17] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-18] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-19] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-20] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-21] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-22] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-23] PASSED             [ 
> 16%]
> tests/test_quoting.py::test_unquoting[py_unquoter-24] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-25] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-26] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-27] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-28] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-29] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-30] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-31] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-32] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-33] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-34] PASSED             [ 
> 17%]
> tests/test_quoting.py::test_unquoting[py_unquoter-35] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-36] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-37] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-38] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-39] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-40] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-41] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-42] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-43] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-44] PASSED             [ 
> 18%]
> tests/test_quoting.py::test_unquoting[py_unquoter-45] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-46] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-47] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-48] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-49] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-50] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-51] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-52] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-53] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-54] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-55] PASSED             [ 
> 19%]
> tests/test_quoting.py::test_unquoting[py_unquoter-56] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-57] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-58] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-59] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-60] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-61] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-62] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-63] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-64] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-65] PASSED             [ 
> 20%]
> tests/test_quoting.py::test_unquoting[py_unquoter-66] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-67] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-68] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-69] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-70] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-71] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-72] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-73] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-74] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-75] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-76] PASSED             [ 
> 21%]
> tests/test_quoting.py::test_unquoting[py_unquoter-77] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-78] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-79] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-80] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-81] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-82] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-83] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-84] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-85] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-86] PASSED             [ 
> 22%]
> tests/test_quoting.py::test_unquoting[py_unquoter-87] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-88] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-89] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-90] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-91] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-92] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-93] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-94] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-95] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-96] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-97] PASSED             [ 
> 23%]
> tests/test_quoting.py::test_unquoting[py_unquoter-98] PASSED             [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-99] PASSED             [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-100] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-101] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-102] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-103] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-104] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-105] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-106] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-107] PASSED            [ 
> 24%]
> tests/test_quoting.py::test_unquoting[py_unquoter-108] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-109] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-110] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-111] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-112] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-113] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-114] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-115] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-116] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-117] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-118] PASSED            [ 
> 25%]
> tests/test_quoting.py::test_unquoting[py_unquoter-119] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-120] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-121] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-122] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-123] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-124] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-125] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-126] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[py_unquoter-127] PASSED            [ 
> 26%]
> tests/test_quoting.py::test_unquoting[c_unquoter-0] PASSED               [ 
> 26%]
> tests/test_quoting.py::test_unquoting[c_unquoter-1] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-2] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-3] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-4] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-5] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-6] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-7] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-8] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-9] PASSED               [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-10] PASSED              [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-11] PASSED              [ 
> 27%]
> tests/test_quoting.py::test_unquoting[c_unquoter-12] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-13] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-14] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-15] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-16] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-17] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-18] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-19] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-20] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-21] PASSED              [ 
> 28%]
> tests/test_quoting.py::test_unquoting[c_unquoter-22] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-23] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-24] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-25] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-26] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-27] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-28] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-29] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-30] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-31] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-32] PASSED              [ 
> 29%]
> tests/test_quoting.py::test_unquoting[c_unquoter-33] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-34] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-35] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-36] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-37] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-38] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-39] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-40] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-41] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-42] PASSED              [ 
> 30%]
> tests/test_quoting.py::test_unquoting[c_unquoter-43] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-44] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-45] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-46] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-47] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-48] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-49] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-50] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-51] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-52] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-53] PASSED              [ 
> 31%]
> tests/test_quoting.py::test_unquoting[c_unquoter-54] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-55] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-56] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-57] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-58] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-59] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-60] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-61] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-62] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-63] PASSED              [ 
> 32%]
> tests/test_quoting.py::test_unquoting[c_unquoter-64] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-65] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-66] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-67] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-68] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-69] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-70] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-71] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-72] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-73] PASSED              [ 
> 33%]
> tests/test_quoting.py::test_unquoting[c_unquoter-74] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-75] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-76] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-77] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-78] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-79] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-80] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-81] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-82] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-83] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-84] PASSED              [ 
> 34%]
> tests/test_quoting.py::test_unquoting[c_unquoter-85] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-86] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-87] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-88] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-89] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-90] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-91] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-92] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-93] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-94] PASSED              [ 
> 35%]
> tests/test_quoting.py::test_unquoting[c_unquoter-95] PASSED              [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-96] PASSED              [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-97] PASSED              [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-98] PASSED              [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-99] PASSED              [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-100] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-101] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-102] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-103] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-104] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-105] PASSED             [ 
> 36%]
> tests/test_quoting.py::test_unquoting[c_unquoter-106] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-107] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-108] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-109] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-110] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-111] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-112] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-113] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-114] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-115] PASSED             [ 
> 37%]
> tests/test_quoting.py::test_unquoting[c_unquoter-116] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-117] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-118] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-119] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-120] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-121] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-122] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-123] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-124] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-125] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-126] PASSED             [ 
> 38%]
> tests/test_quoting.py::test_unquoting[c_unquoter-127] PASSED             [ 
> 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%-%] 
> PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%2-%2] 
> PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%x-%x] 
> PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%\u20ac-%\u20ac]
>  PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%2x-%2x]
>  PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%2 -%2 
> ] PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-% 2-% 
> 2] PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%xa-%xa]
>  PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%%-%%] 
> PASSED [ 39%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%%3f-%?]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%2%-%2%]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%2%3f-%2?]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%x%3f-%x?]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[py_unquoter-%\u20ac%3f-%\u20ac?]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%-%] 
> PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%2-%2] 
> PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%x-%x] 
> PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%\u20ac-%\u20ac]
>  PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%2x-%2x] 
> PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%2 -%2 ] 
> PASSED [ 40%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-% 2-% 2] 
> PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%xa-%xa] 
> PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%%-%%] 
> PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%%3f-%?] 
> PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%2%-%2%] 
> PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%2%3f-%2?]
>  PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%x%3f-%x?]
>  PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_bad_percent_escapes[c_unquoter-%\u20ac%3f-%\u20ac?]
>  PASSED [ 41%]
> tests/test_quoting.py::test_unquoting_invalid_utf8_sequence[py_unquoter] 
> XFAIL [ 41%]
> tests/test_quoting.py::test_unquoting_invalid_utf8_sequence[c_unquoter] XFAIL 
> [ 41%]
> tests/test_quoting.py::test_unquoting_mixed_case_percent_escapes[py_unquoter] 
> PASSED [ 42%]
> tests/test_quoting.py::test_unquoting_mixed_case_percent_escapes[c_unquoter] 
> PASSED [ 42%]
> tests/test_quoting.py::test_unquoting_parts[py_unquoter] PASSED          [ 
> 42%]
> tests/test_quoting.py::test_unquoting_parts[c_unquoter] PASSED           [ 
> 42%]
> tests/test_quoting.py::test_quote_None[py_quoter] PASSED                 [ 
> 42%]
> tests/test_quoting.py::test_quote_None[c_quoter] PASSED                  [ 
> 42%]
> tests/test_quoting.py::test_unquote_None[py_unquoter] PASSED             [ 
> 42%]
> tests/test_quoting.py::test_unquote_None[c_unquoter] PASSED              [ 
> 42%]
> tests/test_quoting.py::test_quote_empty_string[py_quoter] PASSED         [ 
> 42%]
> tests/test_quoting.py::test_quote_empty_string[c_quoter] PASSED          [ 
> 42%]
> tests/test_quoting.py::test_unquote_empty_string[py_unquoter] PASSED     [ 
> 42%]
> tests/test_quoting.py::test_unquote_empty_string[c_unquoter] PASSED      [ 
> 43%]
> tests/test_quoting.py::test_quote_bad_types[py_quoter] PASSED            [ 
> 43%]
> tests/test_quoting.py::test_quote_bad_types[c_quoter] PASSED             [ 
> 43%]
> tests/test_quoting.py::test_unquote_bad_types[py_unquoter] PASSED        [ 
> 43%]
> tests/test_quoting.py::test_unquote_bad_types[c_unquoter] PASSED         [ 
> 43%]
> tests/test_quoting.py::test_quote_lowercase[py_quoter] PASSED            [ 
> 43%]
> tests/test_quoting.py::test_quote_lowercase[c_quoter] PASSED             [ 
> 43%]
> tests/test_quoting.py::test_quote_unquoted[py_quoter] PASSED             [ 
> 43%]
> tests/test_quoting.py::test_quote_unquoted[c_quoter] PASSED              [ 
> 43%]
> tests/test_quoting.py::test_quote_space[py_quoter] PASSED                [ 
> 43%]
> tests/test_quoting.py::test_quote_space[c_quoter] PASSED                 [ 
> 44%]
> tests/test_quoting.py::test_quote_percent_last_character[py_quoter] PASSED [ 
> 44%]
> tests/test_quoting.py::test_quote_percent_last_character[c_quoter] PASSED [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe[py_unquoter] PASSED           [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe[c_unquoter] PASSED            [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe2[py_unquoter] PASSED          [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe2[c_unquoter] PASSED           [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe3[py_unquoter] PASSED          [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe3[c_unquoter] PASSED           [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe4[py_unquoter] PASSED          [ 
> 44%]
> tests/test_quoting.py::test_unquote_unsafe4[c_unquoter] PASSED           [ 
> 44%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82-%e2%82] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82ac-%e2%82ac] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82%f8-%e2%82%f8] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82%2b-%e2%82+] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82%e2%82%ac-%e2%82\u20ac]
>  PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[py_unquoter-%e2%82%e2%82-%e2%82%e2%82]
>  PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82-%e2%82] PASSED 
> [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82ac-%e2%82ac] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82%f8-%e2%82%f8] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82%2b-%e2%82+] 
> PASSED [ 45%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82%e2%82%ac-%e2%82\u20ac]
>  PASSED [ 46%]
> tests/test_quoting.py::test_unquote_non_utf8[c_unquoter-%e2%82%e2%82-%e2%82%e2%82]
>  PASSED [ 46%]
> tests/test_quoting.py::test_unquote_unsafe_non_utf8[py_unquoter] PASSED  [ 
> 46%]
> tests/test_quoting.py::test_unquote_unsafe_non_utf8[c_unquoter] PASSED   [ 
> 46%]
> tests/test_quoting.py::test_unquote_plus_non_utf8[py_unquoter] PASSED    [ 
> 46%]
> tests/test_quoting.py::test_unquote_plus_non_utf8[c_unquoter] PASSED     [ 
> 46%]
> tests/test_quoting.py::test_quote_non_ascii[py_quoter] PASSED            [ 
> 46%]
> tests/test_quoting.py::test_quote_non_ascii[c_quoter] PASSED             [ 
> 46%]
> tests/test_quoting.py::test_quote_non_ascii2[py_quoter] PASSED           [ 
> 46%]
> tests/test_quoting.py::test_quote_non_ascii2[c_quoter] PASSED            [ 
> 46%]
> tests/test_quoting.py::test_quote_percent_percent_encoded[py_quoter] PASSED [ 
> 46%]
> tests/test_quoting.py::test_quote_percent_percent_encoded[c_quoter] PASSED [ 
> 47%]
> tests/test_quoting.py::test_quote_percent_digit_percent_encoded[py_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_digit_percent_encoded[c_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_safe_percent_encoded[py_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_safe_percent_encoded[c_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_unsafe_percent_encoded[py_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_unsafe_percent_encoded[c_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_non_ascii_percent_encoded[py_quoter]
>  PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_non_ascii_percent_encoded[c_quoter] 
> PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_non_ascii2_percent_encoded[py_quoter]
>  PASSED [ 47%]
> tests/test_quoting.py::test_quote_percent_non_ascii2_percent_encoded[c_quoter]
>  PASSED [ 48%]
> tests/test_quoting.py::test_quote_percent_non_ascii3_percent_encoded[py_quoter]
>  PASSED [ 48%]
> tests/test_quoting.py::test_quote_percent_non_ascii3_percent_encoded[c_quoter]
>  PASSED [ 48%]
> tests/test_quoting.py::test_quote_str_like[py_quoter] PASSED             [ 
> 48%]
> tests/test_quoting.py::test_quote_str_like[c_quoter] PASSED              [ 
> 48%]
> tests/test_quoting.py::test_unquote_str_like[py_unquoter] PASSED         [ 
> 48%]
> tests/test_quoting.py::test_unquote_str_like[c_unquoter] PASSED          [ 
> 48%]
> tests/test_quoting.py::test_quote_sub_delims[py_quoter] PASSED           [ 
> 48%]
> tests/test_quoting.py::test_quote_sub_delims[c_quoter] PASSED            [ 
> 48%]
> tests/test_quoting.py::test_requote_sub_delims[py_quoter] PASSED         [ 
> 48%]
> tests/test_quoting.py::test_requote_sub_delims[c_quoter] PASSED          [ 
> 48%]
> tests/test_quoting.py::test_unquoting_plus[py_unquoter] PASSED           [ 
> 49%]
> tests/test_quoting.py::test_unquoting_plus[c_unquoter] PASSED            [ 
> 49%]
> tests/test_quoting.py::test_unquote_plus_to_space[py_unquoter] PASSED    [ 
> 49%]
> tests/test_quoting.py::test_unquote_plus_to_space[c_unquoter] PASSED     [ 
> 49%]
> tests/test_quoting.py::test_unquote_plus_to_space_unsafe[py_unquoter] PASSED 
> [ 49%]
> tests/test_quoting.py::test_unquote_plus_to_space_unsafe[c_unquoter] PASSED [ 
> 49%]
> tests/test_quoting.py::test_quote_qs_with_colon[py_quoter] PASSED        [ 
> 49%]
> tests/test_quoting.py::test_quote_qs_with_colon[c_quoter] PASSED         [ 
> 49%]
> tests/test_quoting.py::test_quote_protected[py_quoter] PASSED            [ 
> 49%]
> tests/test_quoting.py::test_quote_protected[c_quoter] PASSED             [ 
> 49%]
> tests/test_quoting.py::test_quote_fastpath_safe[py_quoter] PASSED        [ 
> 50%]
> tests/test_quoting.py::test_quote_fastpath_safe[c_quoter] PASSED         [ 
> 50%]
> tests/test_quoting.py::test_quote_fastpath_pct[py_quoter] PASSED         [ 
> 50%]
> tests/test_quoting.py::test_quote_fastpath_pct[c_quoter] PASSED          [ 
> 50%]
> tests/test_quoting.py::test_quote_very_large_string[py_quoter] PASSED    [ 
> 50%]
> tests/test_quoting.py::test_quote_very_large_string[c_quoter] PASSED     [ 
> 50%]
> tests/test_quoting.py::test_space[py_quoter] PASSED                      [ 
> 50%]
> tests/test_quoting.py::test_space[c_quoter] PASSED                       [ 
> 50%]
> tests/test_quoting.py::test_quoter_path_with_plus[py_quoter] PASSED      [ 
> 50%]
> tests/test_quoting.py::test_quoter_path_with_plus[c_quoter] PASSED       [ 
> 50%]
> tests/test_quoting.py::test_unquoter_path_with_plus[py_unquoter] PASSED  [ 
> 51%]
> tests/test_quoting.py::test_unquoter_path_with_plus[c_unquoter] PASSED   [ 
> 51%]
> tests/test_update_query.py::test_with_query PASSED                       [ 
> 51%]
> tests/test_update_query.py::test_update_query PASSED                     [ 
> 51%]
> tests/test_update_query.py::test_update_query_with_args_and_kwargs PASSED [ 
> 51%]
> tests/test_update_query.py::test_update_query_with_multiple_args PASSED  [ 
> 51%]
> tests/test_update_query.py::test_with_query_list_of_pairs PASSED         [ 
> 51%]
> tests/test_update_query.py::test_with_query_list_non_pairs PASSED        [ 
> 51%]
> tests/test_update_query.py::test_with_query_kwargs PASSED                [ 
> 51%]
> tests/test_update_query.py::test_with_query_kwargs_and_args_are_mutually_exclusive
>  PASSED [ 51%]
> tests/test_update_query.py::test_with_query_only_single_arg_is_supported 
> PASSED [ 51%]
> tests/test_update_query.py::test_with_query_empty_dict PASSED            [ 
> 52%]
> tests/test_update_query.py::test_with_query_empty_str PASSED             [ 
> 52%]
> tests/test_update_query.py::test_with_query_empty_value PASSED           [ 
> 52%]
> tests/test_update_query.py::test_with_query_str PASSED                   [ 
> 52%]
> tests/test_update_query.py::test_with_query_str_non_ascii_and_spaces PASSED [ 
> 52%]
> tests/test_update_query.py::test_with_query_int PASSED                   [ 
> 52%]
> tests/test_update_query.py::test_with_query_kwargs_int PASSED            [ 
> 52%]
> tests/test_update_query.py::test_with_query_list_int PASSED              [ 
> 52%]
> tests/test_update_query.py::test_with_query_sequence[empty list] PASSED  [ 
> 52%]
> tests/test_update_query.py::test_with_query_sequence[empty tuple] PASSED [ 
> 52%]
> tests/test_update_query.py::test_with_query_sequence[single list] PASSED [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[single tuple] PASSED [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[list] PASSED        [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[tuple] PASSED       [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[key with braces] PASSED 
> [ 53%]
> tests/test_update_query.py::test_with_query_sequence[quote key] PASSED   [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[mixed types] PASSED [ 
> 53%]
> tests/test_update_query.py::test_with_query_sequence[quote key and value] 
> PASSED [ 53%]
> tests/test_update_query.py::test_with_query_sequence[single then list] PASSED 
> [ 53%]
> tests/test_update_query.py::test_with_query_sequence[list then single] PASSED 
> [ 53%]
> tests/test_update_query.py::test_with_query_sequence[ampersand then int] 
> PASSED [ 53%]
> tests/test_update_query.py::test_with_query_sequence[int then ampersand] 
> PASSED [ 54%]
> tests/test_update_query.py::test_with_query_sequence_invalid_use[nested] 
> PASSED [ 54%]
> tests/test_update_query.py::test_with_query_sequence_invalid_use[tuple list] 
> PASSED [ 54%]
> tests/test_update_query.py::test_with_query_valid_type[str] PASSED       [ 
> 54%]
> tests/test_update_query.py::test_with_query_valid_type[custom str] PASSED [ 
> 54%]
> tests/test_update_query.py::test_with_query_valid_type[int] PASSED       [ 
> 54%]
> tests/test_update_query.py::test_with_query_valid_type[custom int] PASSED [ 
> 54%]
> tests/test_update_query.py::test_with_query_valid_type[float] PASSED     [ 
> 54%]
> tests/test_update_query.py::test_with_query_valid_type[custom float] PASSED [ 
> 54%]
> tests/test_update_query.py::test_with_query_invalid_type[bool] PASSED    [ 
> 54%]
> tests/test_update_query.py::test_with_query_invalid_type[none] PASSED    [ 
> 55%]
> tests/test_update_query.py::test_with_query_invalid_type[non-finite float] 
> PASSED [ 55%]
> tests/test_update_query.py::test_with_query_invalid_type[NaN float] PASSED [ 
> 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[str] PASSED  [ 
> 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[custom str] 
> PASSED [ 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[int] PASSED  [ 
> 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[custom int] 
> PASSED [ 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[float] PASSED [ 
> 55%]
> tests/test_update_query.py::test_with_query_list_valid_type[custom float] 
> PASSED [ 55%]
> tests/test_update_query.py::test_with_query_list_invalid_type[bool] PASSED [ 
> 55%]
> tests/test_update_query.py::test_with_query_list_invalid_type[none] PASSED [ 
> 55%]
> tests/test_update_query.py::test_with_int_enum PASSED                    [ 
> 56%]
> tests/test_update_query.py::test_with_float_enum PASSED                  [ 
> 56%]
> tests/test_update_query.py::test_with_query_multidict PASSED             [ 
> 56%]
> tests/test_update_query.py::test_with_multidict_with_spaces_and_non_ascii 
> PASSED [ 56%]
> tests/test_update_query.py::test_with_query_multidict_with_unsafe PASSED [ 
> 56%]
> tests/test_update_query.py::test_with_query_None PASSED                  [ 
> 56%]
> tests/test_update_query.py::test_with_query_bad_type PASSED              [ 
> 56%]
> tests/test_update_query.py::test_with_query_bytes PASSED                 [ 
> 56%]
> tests/test_update_query.py::test_with_query_bytearray PASSED             [ 
> 56%]
> tests/test_update_query.py::test_with_query_memoryview PASSED            [ 
> 56%]
> tests/test_update_query.py::test_with_query_params[tuple list semicolon] 
> PASSED [ 57%]
> tests/test_update_query.py::test_with_query_params[mapping semicolon] PASSED 
> [ 57%]
> tests/test_update_query.py::test_with_query_params[tuple list ampersand] 
> PASSED [ 57%]
> tests/test_update_query.py::test_with_query_params[mapping ampersand] PASSED 
> [ 57%]
> tests/test_update_query.py::test_with_query_params[tuple list quote key] 
> PASSED [ 57%]
> tests/test_update_query.py::test_with_query_params[mapping quote key] PASSED 
> [ 57%]
> tests/test_update_query.py::test_with_query_params[quote one key braces] 
> PASSED [ 57%]
> tests/test_update_query.py::test_with_query_params[quote many key braces] 
> PASSED [ 57%]
> tests/test_update_query.py::test_with_query_only PASSED                  [ 
> 57%]
> tests/test_update_query.py::test_with_query_complex_url PASSED           [ 
> 57%]
> tests/test_update_query.py::test_update_query_multiple_keys PASSED       [ 
> 57%]
> tests/test_update_query.py::test_update_query_with_mod_operator PASSED   [ 
> 58%]
> tests/test_url.py::test_inheritance PASSED                               [ 
> 58%]
> tests/test_url.py::test_str_subclass PASSED                              [ 
> 58%]
> tests/test_url.py::test_is PASSED                                        [ 
> 58%]
> tests/test_url.py::test_bool PASSED                                      [ 
> 58%]
> tests/test_url.py::test_absolute_url_without_host PASSED                 [ 
> 58%]
> tests/test_url.py::test_url_is_not_str PASSED                            [ 
> 58%]
> tests/test_url.py::test_str PASSED                                       [ 
> 58%]
> tests/test_url.py::test_repr PASSED                                      [ 
> 58%]
> tests/test_url.py::test_origin PASSED                                    [ 
> 58%]
> tests/test_url.py::test_origin_nonascii PASSED                           [ 
> 59%]
> tests/test_url.py::test_origin_ipv6 PASSED                               [ 
> 59%]
> tests/test_url.py::test_origin_not_absolute_url PASSED                   [ 
> 59%]
> tests/test_url.py::test_origin_no_scheme PASSED                          [ 
> 59%]
> tests/test_url.py::test_drop_dots PASSED                                 [ 
> 59%]
> tests/test_url.py::test_abs_cmp PASSED                                   [ 
> 59%]
> tests/test_url.py::test_abs_hash PASSED                                  [ 
> 59%]
> tests/test_url.py::test_scheme PASSED                                    [ 
> 59%]
> tests/test_url.py::test_raw_user PASSED                                  [ 
> 59%]
> tests/test_url.py::test_raw_user_non_ascii PASSED                        [ 
> 59%]
> tests/test_url.py::test_no_user PASSED                                   [ 
> 59%]
> tests/test_url.py::test_user_non_ascii PASSED                            [ 
> 60%]
> tests/test_url.py::test_raw_password PASSED                              [ 
> 60%]
> tests/test_url.py::test_raw_password_non_ascii PASSED                    [ 
> 60%]
> tests/test_url.py::test_password_non_ascii PASSED                        [ 
> 60%]
> tests/test_url.py::test_password_without_user PASSED                     [ 
> 60%]
> tests/test_url.py::test_user_empty_password PASSED                       [ 
> 60%]
> tests/test_url.py::test_raw_host PASSED                                  [ 
> 60%]
> tests/test_url.py::test_raw_host_non_ascii PASSED                        [ 
> 60%]
> tests/test_url.py::test_host_non_ascii PASSED                            [ 
> 60%]
> tests/test_url.py::test_localhost PASSED                                 [ 
> 60%]
> tests/test_url.py::test_host_with_underscore PASSED                      [ 
> 61%]
> tests/test_url.py::test_raw_host_when_port_is_specified PASSED           [ 
> 61%]
> tests/test_url.py::test_raw_host_from_str_with_ipv4 PASSED               [ 
> 61%]
> tests/test_url.py::test_raw_host_from_str_with_ipv6 PASSED               [ 
> 61%]
> tests/test_url.py::test_authority_full PASSED                            [ 
> 61%]
> tests/test_url.py::test_authority_short PASSED                           [ 
> 61%]
> tests/test_url.py::test_authority_full_nonasci PASSED                    [ 
> 61%]
> tests/test_url.py::test_lowercase PASSED                                 [ 
> 61%]
> tests/test_url.py::test_lowercase_nonascii PASSED                        [ 
> 61%]
> tests/test_url.py::test_compressed_ipv6 PASSED                           [ 
> 61%]
> tests/test_url.py::test_ipv6_zone FAILED                                 [ 
> 61%]
> tests/test_url.py::test_ipv4_zone PASSED                                 [ 
> 62%]
> tests/test_url.py::test_port_for_explicit_port PASSED                    [ 
> 62%]
> tests/test_url.py::test_port_for_implicit_port PASSED                    [ 
> 62%]
> tests/test_url.py::test_port_for_relative_url PASSED                     [ 
> 62%]
> tests/test_url.py::test_port_for_unknown_scheme PASSED                   [ 
> 62%]
> tests/test_url.py::test_explicit_port_for_explicit_port PASSED           [ 
> 62%]
> tests/test_url.py::test_explicit_port_for_implicit_port PASSED           [ 
> 62%]
> tests/test_url.py::test_explicit_port_for_relative_url PASSED            [ 
> 62%]
> tests/test_url.py::test_explicit_port_for_unknown_scheme PASSED          [ 
> 62%]
> tests/test_url.py::test_raw_path_string_empty PASSED                     [ 
> 62%]
> tests/test_url.py::test_raw_path PASSED                                  [ 
> 63%]
> tests/test_url.py::test_raw_path_non_ascii PASSED                        [ 
> 63%]
> tests/test_url.py::test_path_non_ascii PASSED                            [ 
> 63%]
> tests/test_url.py::test_path_with_spaces PASSED                          [ 
> 63%]
> tests/test_url.py::test_raw_path_for_empty_url PASSED                    [ 
> 63%]
> tests/test_url.py::test_raw_path_for_colon_and_at PASSED                 [ 
> 63%]
> tests/test_url.py::test_raw_query_string PASSED                          [ 
> 63%]
> tests/test_url.py::test_raw_query_string_non_ascii PASSED                [ 
> 63%]
> tests/test_url.py::test_query_string_non_ascii PASSED                    [ 
> 63%]
> tests/test_url.py::test_path_qs PASSED                                   [ 
> 63%]
> tests/test_url.py::test_raw_path_qs PASSED                               [ 
> 63%]
> tests/test_url.py::test_query_string_spaces PASSED                       [ 
> 64%]
> tests/test_url.py::test_raw_fragment_empty PASSED                        [ 
> 64%]
> tests/test_url.py::test_raw_fragment PASSED                              [ 
> 64%]
> tests/test_url.py::test_raw_fragment_non_ascii PASSED                    [ 
> 64%]
> tests/test_url.py::test_raw_fragment_safe PASSED                         [ 
> 64%]
> tests/test_url.py::test_fragment_non_ascii PASSED                        [ 
> 64%]
> tests/test_url.py::test_raw_parts_empty PASSED                           [ 
> 64%]
> tests/test_url.py::test_raw_parts PASSED                                 [ 
> 64%]
> tests/test_url.py::test_raw_parts_without_path PASSED                    [ 
> 64%]
> tests/test_url.py::test_raw_path_parts_with_2F_in_path PASSED            [ 
> 64%]
> tests/test_url.py::test_raw_path_parts_with_2f_in_path PASSED            [ 
> 65%]
> tests/test_url.py::test_raw_parts_for_relative_path PASSED               [ 
> 65%]
> tests/test_url.py::test_raw_parts_for_relative_path_starting_from_slash 
> PASSED [ 65%]
> tests/test_url.py::test_raw_parts_for_relative_double_path PASSED        [ 
> 65%]
> tests/test_url.py::test_parts_for_empty_url PASSED                       [ 
> 65%]
> tests/test_url.py::test_raw_parts_non_ascii PASSED                       [ 
> 65%]
> tests/test_url.py::test_parts_non_ascii PASSED                           [ 
> 65%]
> tests/test_url.py::test_name_for_empty_url PASSED                        [ 
> 65%]
> tests/test_url.py::test_raw_name PASSED                                  [ 
> 65%]
> tests/test_url.py::test_raw_name_root PASSED                             [ 
> 65%]
> tests/test_url.py::test_raw_name_root2 PASSED                            [ 
> 65%]
> tests/test_url.py::test_raw_name_root3 PASSED                            [ 
> 66%]
> tests/test_url.py::test_relative_raw_name PASSED                         [ 
> 66%]
> tests/test_url.py::test_relative_raw_name_starting_from_slash PASSED     [ 
> 66%]
> tests/test_url.py::test_relative_raw_name_slash PASSED                   [ 
> 66%]
> tests/test_url.py::test_name_non_ascii PASSED                            [ 
> 66%]
> tests/test_url.py::test_suffix_for_empty_url PASSED                      [ 
> 66%]
> tests/test_url.py::test_raw_suffix PASSED                                [ 
> 66%]
> tests/test_url.py::test_raw_suffix_root PASSED                           [ 
> 66%]
> tests/test_url.py::test_raw_suffix_root2 PASSED                          [ 
> 66%]
> tests/test_url.py::test_raw_suffix_root3 PASSED                          [ 
> 66%]
> tests/test_url.py::test_relative_raw_suffix PASSED                       [ 
> 67%]
> tests/test_url.py::test_relative_raw_suffix_starting_from_slash PASSED   [ 
> 67%]
> tests/test_url.py::test_relative_raw_suffix_dot PASSED                   [ 
> 67%]
> tests/test_url.py::test_suffix_non_ascii PASSED                          [ 
> 67%]
> tests/test_url.py::test_suffix_with_empty_name PASSED                    [ 
> 67%]
> tests/test_url.py::test_suffix_multi_dot PASSED                          [ 
> 67%]
> tests/test_url.py::test_suffix_with_dot_name PASSED                      [ 
> 67%]
> tests/test_url.py::test_suffixes_for_empty_url PASSED                    [ 
> 67%]
> tests/test_url.py::test_raw_suffixes PASSED                              [ 
> 67%]
> tests/test_url.py::test_raw_suffixes_root PASSED                         [ 
> 67%]
> tests/test_url.py::test_raw_suffixes_root2 PASSED                        [ 
> 68%]
> tests/test_url.py::test_raw_suffixes_root3 PASSED                        [ 
> 68%]
> tests/test_url.py::test_relative_raw_suffixes PASSED                     [ 
> 68%]
> tests/test_url.py::test_relative_raw_suffixes_starting_from_slash PASSED [ 
> 68%]
> tests/test_url.py::test_relative_raw_suffixes_dot PASSED                 [ 
> 68%]
> tests/test_url.py::test_suffixes_non_ascii PASSED                        [ 
> 68%]
> tests/test_url.py::test_suffixes_with_empty_name PASSED                  [ 
> 68%]
> tests/test_url.py::test_suffixes_multi_dot PASSED                        [ 
> 68%]
> tests/test_url.py::test_suffixes_with_dot_name PASSED                    [ 
> 68%]
> tests/test_url.py::test_plus_in_path PASSED                              [ 
> 68%]
> tests/test_url.py::test_nonascii_in_qs PASSED                            [ 
> 68%]
> tests/test_url.py::test_percent_encoded_in_qs PASSED                     [ 
> 69%]
> tests/test_url.py::test_parent_raw_path PASSED                           [ 
> 69%]
> tests/test_url.py::test_parent_raw_parts PASSED                          [ 
> 69%]
> tests/test_url.py::test_double_parent_raw_path PASSED                    [ 
> 69%]
> tests/test_url.py::test_empty_parent_raw_path PASSED                     [ 
> 69%]
> tests/test_url.py::test_empty_parent_raw_path2 PASSED                    [ 
> 69%]
> tests/test_url.py::test_clear_fragment_on_getting_parent PASSED          [ 
> 69%]
> tests/test_url.py::test_clear_fragment_on_getting_parent_toplevel PASSED [ 
> 69%]
> tests/test_url.py::test_clear_query_on_getting_parent PASSED             [ 
> 69%]
> tests/test_url.py::test_clear_query_on_getting_parent_toplevel PASSED    [ 
> 69%]
> tests/test_url.py::test_div_root PASSED                                  [ 
> 70%]
> tests/test_url.py::test_div_root_with_slash PASSED                       [ 
> 70%]
> tests/test_url.py::test_div PASSED                                       [ 
> 70%]
> tests/test_url.py::test_div_with_slash PASSED                            [ 
> 70%]
> tests/test_url.py::test_div_path_starting_from_slash_is_forbidden PASSED [ 
> 70%]
> tests/test_url.py::test_div_cleanup_query_and_fragment PASSED            [ 
> 70%]
> tests/test_url.py::test_div_for_empty_url PASSED                         [ 
> 70%]
> tests/test_url.py::test_div_for_relative_url PASSED                      [ 
> 70%]
> tests/test_url.py::test_div_for_relative_url_started_with_slash PASSED   [ 
> 70%]
> tests/test_url.py::test_div_non_ascii PASSED                             [ 
> 70%]
> tests/test_url.py::test_div_percent_encoded PASSED                       [ 
> 70%]
> tests/test_url.py::test_div_with_colon_and_at PASSED                     [ 
> 71%]
> tests/test_url.py::test_div_with_dots PASSED                             [ 
> 71%]
> tests/test_url.py::test_with_path PASSED                                 [ 
> 71%]
> tests/test_url.py::test_with_path_nonascii PASSED                        [ 
> 71%]
> tests/test_url.py::test_with_path_percent_encoded PASSED                 [ 
> 71%]
> tests/test_url.py::test_with_path_encoded PASSED                         [ 
> 71%]
> tests/test_url.py::test_with_path_encoded_nonascii PASSED                [ 
> 71%]
> tests/test_url.py::test_with_path_encoded_percent_encoded PASSED         [ 
> 71%]
> tests/test_url.py::test_with_path_dots PASSED                            [ 
> 71%]
> tests/test_url.py::test_with_path_relative PASSED                        [ 
> 71%]
> tests/test_url.py::test_with_path_query PASSED                           [ 
> 72%]
> tests/test_url.py::test_with_path_fragment PASSED                        [ 
> 72%]
> tests/test_url.py::test_with_path_empty PASSED                           [ 
> 72%]
> tests/test_url.py::test_with_path_leading_slash PASSED                   [ 
> 72%]
> tests/test_url.py::test_with_fragment PASSED                             [ 
> 72%]
> tests/test_url.py::test_with_fragment_safe PASSED                        [ 
> 72%]
> tests/test_url.py::test_with_fragment_non_ascii PASSED                   [ 
> 72%]
> tests/test_url.py::test_with_fragment_percent_encoded PASSED             [ 
> 72%]
> tests/test_url.py::test_with_fragment_None PASSED                        [ 
> 72%]
> tests/test_url.py::test_with_fragment_None_matching PASSED               [ 
> 72%]
> tests/test_url.py::test_with_fragment_matching PASSED                    [ 
> 72%]
> tests/test_url.py::test_with_fragment_bad_type PASSED                    [ 
> 73%]
> tests/test_url.py::test_with_name PASSED                                 [ 
> 73%]
> tests/test_url.py::test_with_name_for_naked_path PASSED                  [ 
> 73%]
> tests/test_url.py::test_with_name_for_relative_path PASSED               [ 
> 73%]
> tests/test_url.py::test_with_name_for_relative_path2 PASSED              [ 
> 73%]
> tests/test_url.py::test_with_name_for_relative_path_starting_from_slash 
> PASSED [ 73%]
> tests/test_url.py::test_with_name_for_relative_path_starting_from_slash2 
> PASSED [ 73%]
> tests/test_url.py::test_with_name_empty PASSED                           [ 
> 73%]
> tests/test_url.py::test_with_name_non_ascii PASSED                       [ 
> 73%]
> tests/test_url.py::test_with_name_percent_encoded PASSED                 [ 
> 73%]
> tests/test_url.py::test_with_name_with_slash PASSED                      [ 
> 74%]
> tests/test_url.py::test_with_name_non_str PASSED                         [ 
> 74%]
> tests/test_url.py::test_with_name_within_colon_and_at PASSED             [ 
> 74%]
> tests/test_url.py::test_with_name_dot PASSED                             [ 
> 74%]
> tests/test_url.py::test_with_name_double_dot PASSED                      [ 
> 74%]
> tests/test_url.py::test_with_suffix PASSED                               [ 
> 74%]
> tests/test_url.py::test_with_suffix_for_naked_path PASSED                [ 
> 74%]
> tests/test_url.py::test_with_suffix_for_relative_path PASSED             [ 
> 74%]
> tests/test_url.py::test_with_suffix_for_relative_path2 PASSED            [ 
> 74%]
> tests/test_url.py::test_with_suffix_for_relative_path_starting_from_slash 
> PASSED [ 74%]
> tests/test_url.py::test_with_suffix_for_relative_path_starting_from_slash2 
> PASSED [ 74%]
> tests/test_url.py::test_with_suffix_empty PASSED                         [ 
> 75%]
> tests/test_url.py::test_with_suffix_non_ascii PASSED                     [ 
> 75%]
> tests/test_url.py::test_with_suffix_percent_encoded PASSED               [ 
> 75%]
> tests/test_url.py::test_with_suffix_without_dot PASSED                   [ 
> 75%]
> tests/test_url.py::test_with_suffix_non_str PASSED                       [ 
> 75%]
> tests/test_url.py::test_with_suffix_dot PASSED                           [ 
> 75%]
> tests/test_url.py::test_with_suffix_with_slash PASSED                    [ 
> 75%]
> tests/test_url.py::test_with_suffix_with_slash2 PASSED                   [ 
> 75%]
> tests/test_url.py::test_with_suffix_replace PASSED                       [ 
> 75%]
> tests/test_url.py::test_is_absolute_for_relative_url PASSED              [ 
> 75%]
> tests/test_url.py::test_is_absolute_for_absolute_url PASSED              [ 
> 76%]
> tests/test_url.py::test_is_non_absolute_for_empty_url PASSED             [ 
> 76%]
> tests/test_url.py::test_is_non_absolute_for_empty_url2 PASSED            [ 
> 76%]
> tests/test_url.py::test_is_absolute_path_starting_from_double_slash PASSED [ 
> 76%]
> tests/test_url.py::test_is_default_port_for_relative_url PASSED          [ 
> 76%]
> tests/test_url.py::test_is_default_port_for_absolute_url_without_port PASSED 
> [ 76%]
> tests/test_url.py::test_is_default_port_for_absolute_url_with_default_port 
> PASSED [ 76%]
> tests/test_url.py::test_is_default_port_for_absolute_url_with_nondefault_port 
> PASSED [ 76%]
> tests/test_url.py::test_is_default_port_for_unknown_scheme PASSED        [ 
> 76%]
> tests/test_url.py::test_no_scheme PASSED                                 [ 
> 76%]
> tests/test_url.py::test_no_scheme2 PASSED                                [ 
> 76%]
> tests/test_url.py::test_from_non_allowed PASSED                          [ 
> 77%]
> tests/test_url.py::test_from_idna PASSED                                 [ 
> 77%]
> tests/test_url.py::test_to_idna PASSED                                   [ 
> 77%]
> tests/test_url.py::test_from_ascii_login PASSED                          [ 
> 77%]
> tests/test_url.py::test_from_non_ascii_login PASSED                      [ 
> 77%]
> tests/test_url.py::test_from_ascii_login_and_password PASSED             [ 
> 77%]
> tests/test_url.py::test_from_non_ascii_login_and_password PASSED         [ 
> 77%]
> tests/test_url.py::test_from_ascii_path PASSED                           [ 
> 77%]
> tests/test_url.py::test_from_ascii_path_lower_case PASSED                [ 
> 77%]
> tests/test_url.py::test_from_non_ascii_path PASSED                       [ 
> 77%]
> tests/test_url.py::test_bytes PASSED                                     [ 
> 78%]
> tests/test_url.py::test_from_ascii_query_parts PASSED                    [ 
> 78%]
> tests/test_url.py::test_from_non_ascii_query_parts PASSED                [ 
> 78%]
> tests/test_url.py::test_from_non_ascii_query_parts2 PASSED               [ 
> 78%]
> tests/test_url.py::test_from_ascii_fragment PASSED                       [ 
> 78%]
> tests/test_url.py::test_from_bytes_with_non_ascii_fragment PASSED        [ 
> 78%]
> tests/test_url.py::test_to_str PASSED                                    [ 
> 78%]
> tests/test_url.py::test_to_str_long PASSED                               [ 
> 78%]
> tests/test_url.py::test_decoding_with_2F_in_path PASSED                  [ 
> 78%]
> tests/test_url.py::test_decoding_with_26_and_3D_in_query PASSED          [ 
> 78%]
> tests/test_url.py::test_fragment_only_url PASSED                         [ 
> 78%]
> tests/test_url.py::test_url_from_url PASSED                              [ 
> 79%]
> tests/test_url.py::test_lowercase_scheme PASSED                          [ 
> 79%]
> tests/test_url.py::test_str_for_empty_url PASSED                         [ 
> 79%]
> tests/test_url.py::test_parent_for_empty_url PASSED                      [ 
> 79%]
> tests/test_url.py::test_empty_value_for_query PASSED                     [ 
> 79%]
> tests/test_url.py::test_none_value_for_query PASSED                      [ 
> 79%]
> tests/test_url.py::test_decode_pct_in_path PASSED                        [ 
> 79%]
> tests/test_url.py::test_decode_pct_in_path_lower_case PASSED             [ 
> 79%]
> tests/test_url.py::test_join PASSED                                      [ 
> 79%]
> tests/test_url.py::test_join_absolute PASSED                             [ 
> 79%]
> tests/test_url.py::test_join_non_url PASSED                              [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g:h-g:h] PASSED        [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g-http:/a/b/c/g] PASSED [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[./g-http:/a/b/c/g] PASSED [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g/-http:/a/b/c/g/] PASSED [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[/g-http:/a/g] PASSED   [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[/g-http:/g] PASSED     [ 
> 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[?y-http:/a/b/c/d;p?y] 
> PASSED [ 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g?y-http:/a/b/c/g?y] PASSED 
> [ 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[#s-http:/a/b/c/d;p?q#s] 
> PASSED [ 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g#s-http:/a/b/c/g#s] PASSED 
> [ 80%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g?y#s-http:/a/b/c/g?y#s] 
> PASSED [ 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[;x-http:/a/b/c/;x] PASSED [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g;x-http:/a/b/c/g;x] PASSED 
> [ 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[g;x?y#s-http:/a/b/c/g;x?y#s]
>  PASSED [ 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[-http:/a/b/c/d;p?q] PASSED 
> [ 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[.-http:/a/b/c/] PASSED [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[./-http:/a/b/c/] PASSED [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[..-http:/a/b/] PASSED  [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[../-http:/a/b/] PASSED [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[../g-http:/a/b/g] PASSED [ 
> 81%]
> tests/test_url.py::test_join_from_rfc_3986_normal[../..-http:/a/] PASSED [ 
> 82%]
> tests/test_url.py::test_join_from_rfc_3986_normal[../../-http:/a/] PASSED [ 
> 82%]
> tests/test_url.py::test_join_from_rfc_3986_normal[../../g-http:/a/g] PASSED [ 
> 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[../../../g-http:/a/g] 
> PASSED [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[../../../../g-http:/a/g] 
> PASSED [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[/g-http:/a/g] PASSED [ 
> 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[/../g-http:/a/g] PASSED [ 
> 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g.-http:/a/b/c/g.] PASSED 
> [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[.g-http:/a/b/c/.g] PASSED 
> [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g..-http:/a/b/c/g..] 
> PASSED [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[..g-http:/a/b/c/..g] 
> PASSED [ 82%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[./../g-http:/a/b/g] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[./g/.-http:/a/b/c/g/] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g/h-http:/a/b/c/g/h] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g/../h-http:/a/b/c/h] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g;x=1/y-http:/a/b/c/g;x=1/y]
>  PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g;x=1/../y-http:/a/b/c/y] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g?y/x-http:/a/b/c/g?y/x] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g?y/../x-http:/a/b/c/g?y/../x]
>  PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g#s/x-http:/a/b/c/g#s/x] 
> PASSED [ 83%]
> tests/test_url.py::test_join_from_rfc_3986_abnormal[g#s/../x-http:/a/b/c/g#s/../x]
>  PASSED [ 83%]
> tests/test_url.py::test_split_result_non_decoded PASSED                  [ 
> 84%]
> tests/test_url.py::test_human_repr PASSED                                [ 
> 84%]
> tests/test_url.py::test_human_repr_defaults PASSED                       [ 
> 84%]
> tests/test_url.py::test_human_repr_default_port PASSED                   [ 
> 84%]
> tests/test_url.py::test_human_repr_ipv6 PASSED                           [ 
> 84%]
> tests/test_url.py::test_human_repr_delimiters FAILED                     [ 
> 84%]
> tests/test_url.py::test_human_repr_non_printable PASSED                  [ 
> 84%]
> tests/test_url.py::test_relative PASSED                                  [ 
> 84%]
> tests/test_url.py::test_relative_is_relative PASSED                      [ 
> 84%]
> tests/test_url.py::test_relative_abs_parts_are_removed PASSED            [ 
> 84%]
> tests/test_url.py::test_relative_fails_on_rel_url PASSED                 [ 
> 85%]
> tests/test_url.py::test_slash_and_question_in_query PASSED               [ 
> 85%]
> tests/test_url.py::test_slash_and_question_in_fragment PASSED            [ 
> 85%]
> tests/test_url.py::test_requoting PASSED                                 [ 
> 85%]
> tests/test_url_build.py::test_build_without_arguments PASSED             [ 
> 85%]
> tests/test_url_build.py::test_build_simple PASSED                        [ 
> 85%]
> tests/test_url_build.py::test_build_with_scheme PASSED                   [ 
> 85%]
> tests/test_url_build.py::test_build_with_host PASSED                     [ 
> 85%]
> tests/test_url_build.py::test_build_with_scheme_and_host PASSED          [ 
> 85%]
> tests/test_url_build.py::test_build_with_port PASSED                     [ 
> 85%]
> tests/test_url_build.py::test_build_with_user PASSED                     [ 
> 85%]
> tests/test_url_build.py::test_build_with_user_password PASSED            [ 
> 86%]
> tests/test_url_build.py::test_build_with_query_and_query_string PASSED   [ 
> 86%]
> tests/test_url_build.py::test_build_with_all PASSED                      [ 
> 86%]
> tests/test_url_build.py::test_build_with_authority_and_host PASSED       [ 
> 86%]
> tests/test_url_build.py::test_build_with_authority PASSED                [ 
> 86%]
> tests/test_url_build.py::test_build_with_authority_without_encoding PASSED [ 
> 86%]
> tests/test_url_build.py::test_query_str PASSED                           [ 
> 86%]
> tests/test_url_build.py::test_query_dict PASSED                          [ 
> 86%]
> tests/test_url_build.py::test_build_path_quoting PASSED                  [ 
> 86%]
> tests/test_url_build.py::test_build_query_quoting PASSED                 [ 
> 86%]
> tests/test_url_build.py::test_build_query_only PASSED                    [ 
> 87%]
> tests/test_url_build.py::test_build_drop_dots PASSED                     [ 
> 87%]
> tests/test_url_build.py::test_build_encode PASSED                        [ 
> 87%]
> tests/test_url_build.py::test_build_already_encoded PASSED               [ 
> 87%]
> tests/test_url_build.py::test_build_percent_encoded PASSED               [ 
> 87%]
> tests/test_url_build.py::test_build_with_authority_percent_encoded PASSED [ 
> 87%]
> tests/test_url_build.py::test_build_with_authority_percent_encoded_already_encoded
>  PASSED [ 87%]
> tests/test_url_build.py::test_build_with_authority_with_path_with_leading_slash
>  PASSED [ 87%]
> tests/test_url_build.py::test_build_with_authority_with_empty_path PASSED [ 
> 87%]
> tests/test_url_build.py::test_build_with_authority_with_path_without_leading_slash
>  PASSED [ 87%]
> tests/test_url_build.py::test_build_with_none_path PASSED                [ 
> 87%]
> tests/test_url_build.py::test_build_with_none_query_string PASSED        [ 
> 88%]
> tests/test_url_build.py::test_build_with_none_fragment PASSED            [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_ne_str PASSED                       [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_eq PASSED                           [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_hash PASSED                         [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_hash_double_call PASSED             [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_le_less PASSED                      [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_le_eq PASSED                        [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_le_not_implemented PASSED           [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_lt PASSED                           [ 
> 88%]
> tests/test_url_cmp_and_hash.py::test_lt_not_implemented PASSED           [ 
> 89%]
> tests/test_url_cmp_and_hash.py::test_ge_more PASSED                      [ 
> 89%]
> tests/test_url_cmp_and_hash.py::test_ge_eq PASSED                        [ 
> 89%]
> tests/test_url_cmp_and_hash.py::test_ge_not_implemented PASSED           [ 
> 89%]
> tests/test_url_cmp_and_hash.py::test_gt PASSED                           [ 
> 89%]
> tests/test_url_cmp_and_hash.py::test_gt_not_implemented PASSED           [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_scheme_path PASSED           [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_scheme_path_other PASSED     [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_complex_scheme PASSED        [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_scheme_only PASSED           [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_no_scheme1 PASSED            [ 
> 89%]
> tests/test_url_parsing.py::TestScheme::test_no_scheme2 PASSED            [ 
> 90%]
> tests/test_url_parsing.py::TestScheme::test_not_a_scheme1 PASSED         [ 
> 90%]
> tests/test_url_parsing.py::TestScheme::test_not_a_scheme2 PASSED         [ 
> 90%]
> tests/test_url_parsing.py::TestScheme::test_scheme_rel_path1 PASSED      [ 
> 90%]
> tests/test_url_parsing.py::TestScheme::test_scheme_rel_path2 PASSED      [ 
> 90%]
> tests/test_url_parsing.py::TestScheme::test_scheme_weird PASSED          [ 
> 90%]
> tests/test_url_parsing.py::TestHost::test_canonical PASSED               [ 
> 90%]
> tests/test_url_parsing.py::TestHost::test_absolute_no_scheme PASSED      [ 
> 90%]
> tests/test_url_parsing.py::TestHost::test_absolute_no_scheme_complex_host 
> PASSED [ 90%]
> tests/test_url_parsing.py::TestHost::test_absolute_no_scheme_simple_host 
> PASSED [ 90%]
> tests/test_url_parsing.py::TestHost::test_weird_host PASSED              [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_scheme_no_host PASSED          [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_scheme_no_host2 PASSED         [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_no_scheme_no_host PASSED       [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_ipv4 PASSED                    [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_masked_ipv4 FAILED             [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_ipv6 PASSED                    [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_strange_ip FAILED              [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_strange_ip_2 PASSED            [ 
> 91%]
> tests/test_url_parsing.py::TestHost::test_strange_ip_3 PASSED            [ 
> 91%]
> tests/test_url_parsing.py::TestPort::test_canonical PASSED               [ 
> 91%]
> tests/test_url_parsing.py::TestPort::test_no_path PASSED                 [ 
> 92%]
> tests/test_url_parsing.py::TestPort::test_no_host PASSED                 [ 
> 92%]
> tests/test_url_parsing.py::TestPort::test_double_port PASSED             [ 
> 92%]
> tests/test_url_parsing.py::TestPort::test_bad_port PASSED                [ 
> 92%]
> tests/test_url_parsing.py::TestPort::test_another_bad_port PASSED        [ 
> 92%]
> tests/test_url_parsing.py::TestPort::test_bad_port_again PASSED          [ 
> 92%]
> tests/test_url_parsing.py::TestUserInfo::test_canonical PASSED           [ 
> 92%]
> tests/test_url_parsing.py::TestUserInfo::test_user_pass PASSED           [ 
> 92%]
> tests/test_url_parsing.py::TestUserInfo::test_complex_userinfo PASSED    [ 
> 92%]
> tests/test_url_parsing.py::TestUserInfo::test_no_user PASSED             [ 
> 92%]
> tests/test_url_parsing.py::TestUserInfo::test_weird_user PASSED          [ 
> 93%]
> tests/test_url_parsing.py::TestUserInfo::test_weird_user2 PASSED         [ 
> 93%]
> tests/test_url_parsing.py::TestUserInfo::test_weird_user3 FAILED         [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_simple PASSED          [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_scheme_query PASSED    [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_abs_url_query PASSED   [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_abs_url_path_query PASSED [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_double_question_mark PASSED 
> [ 93%]
> tests/test_url_parsing.py::TestQuery_String::test_complex_query PASSED   [ 
> 93%]
> tests/test_url_parsing.py::TestQuery_String::test_query_in_fragment PASSED [ 
> 93%]
> tests/test_url_parsing.py::TestFragment::test_simple PASSED              [ 
> 93%]
> tests/test_url_parsing.py::TestFragment::test_scheme_frag PASSED         [ 
> 94%]
> tests/test_url_parsing.py::TestFragment::test_host_frag PASSED           [ 
> 94%]
> tests/test_url_parsing.py::TestFragment::test_scheme_path_frag PASSED    [ 
> 94%]
> tests/test_url_parsing.py::TestFragment::test_scheme_query_frag PASSED   [ 
> 94%]
> tests/test_url_parsing.py::TestFragment::test_host_frag_query PASSED     [ 
> 94%]
> tests/test_url_parsing.py::TestFragment::test_complex_frag PASSED        [ 
> 94%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_all_empty PASSED    [ 
> 94%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_path_only PASSED    [ 
> 94%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_user PASSED   [ 
> 94%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_port PASSED   [ 
> 94%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_port_and_path 
> PASSED [ 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_path_only PASSED [ 
> 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_relative_path_only 
> PASSED [ 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_path PASSED         [ 
> 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_query_with_path 
> PASSED [ 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_query PASSED  [ 
> 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_query_with_frag 
> PASSED [ 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_path_empty_frag PASSED [ 
> 95%]
> tests/test_url_parsing.py::TestStripEmptyParts::test_empty_path PASSED   [ 
> 95%]
> tests/test_url_query.py::test_query_spaces PASSED                        [ 
> 95%]
> tests/test_url_query.py::test_query_empty PASSED                         [ 
> 95%]
> tests/test_url_query.py::test_query PASSED                               [ 
> 96%]
> tests/test_url_query.py::test_query_repeated_args PASSED                 [ 
> 96%]
> tests/test_url_query.py::test_query_empty_arg PASSED                     [ 
> 96%]
> tests/test_url_query.py::test_query_dont_unqoute_twice PASSED            [ 
> 96%]
> tests/test_url_query.py::test_query_nonascii PASSED                      [ 
> 96%]
> tests/test_url_query.py::test_ampersand_as_separator PASSED              [ 
> 96%]
> tests/test_url_query.py::test_ampersand_as_value PASSED                  [ 
> 96%]
> tests/test_url_update_netloc.py::test_with_scheme PASSED                 [ 
> 96%]
> tests/test_url_update_netloc.py::test_with_scheme_uppercased PASSED      [ 
> 96%]
> tests/test_url_update_netloc.py::test_with_scheme_for_relative_url PASSED [ 
> 96%]
> tests/test_url_update_netloc.py::test_with_scheme_invalid_type PASSED    [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user PASSED                   [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_non_ascii PASSED         [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_percent_encoded PASSED   [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_for_relative_url PASSED  [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_invalid_type PASSED      [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_None PASSED              [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_ipv6 PASSED              [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_user_None_when_password_present 
> PASSED [ 97%]
> tests/test_url_update_netloc.py::test_with_password PASSED               [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_password_ipv6 PASSED          [ 
> 97%]
> tests/test_url_update_netloc.py::test_with_password_non_ascii PASSED     [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_password_percent_encoded PASSED [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_password_non_ascii_with_colon 
> PASSED [ 98%]
> tests/test_url_update_netloc.py::test_with_password_for_relative_url PASSED [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_password_None PASSED          [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_password_invalid_type PASSED  [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_password_and_empty_user PASSED [ 
> 98%]
> tests/test_url_update_netloc.py::test_from_str_with_host_ipv4 PASSED     [ 
> 98%]
> tests/test_url_update_netloc.py::test_from_str_with_host_ipv6 PASSED     [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_host PASSED                   [ 
> 98%]
> tests/test_url_update_netloc.py::test_with_host_empty PASSED             [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_host_non_ascii PASSED         [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_host_percent_encoded PASSED   [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_host_for_relative_url PASSED  [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_host_invalid_type PASSED      [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_port PASSED                   [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_port_ipv6 PASSED              [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_port_keeps_query_and_fragment 
> PASSED [ 99%]
> tests/test_url_update_netloc.py::test_with_port_percent_encoded PASSED   [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_port_for_relative_url PASSED  [ 
> 99%]
> tests/test_url_update_netloc.py::test_with_port_invalid_type PASSED      
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ________________________________ test_ipv6_zone 
> ________________________________
> 
>     def test_ipv6_zone():
> >       url = URL("http://[fe80::822a:a8ff:fe49:470c%тест%42]:123";)
> 
> tests/test_url.py:239: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> yarl/_url.py:147: in __new__
>     val = urlsplit(val)
> /usr/lib/python3.11/urllib/parse.py:500: in urlsplit
>     _check_bracketed_host(bracketed_host)
> /usr/lib/python3.11/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.11/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:1515: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> yarl/_url.py:147: in __new__
>     val = urlsplit(val)
> /usr/lib/python3.11/urllib/parse.py:500: in urlsplit
>     _check_bracketed_host(bracketed_host)
> /usr/lib/python3.11/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.11/ipaddress.py:54: ValueError
> __________________________ TestHost.test_masked_ipv4 
> ___________________________
> 
> self = <test_url_parsing.TestHost object at 0x7f3007ff45d0>
> 
>     def test_masked_ipv4(self):
> >       u = URL("//[127.0.0.1]/")
> 
> tests/test_url_parsing.py:182: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> yarl/_url.py:147: in __new__
>     val = urlsplit(val)
> /usr/lib/python3.11/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.11/urllib/parse.py:448: ValueError
> ___________________________ TestHost.test_strange_ip 
> ___________________________
> 
> self = <test_url_parsing.TestHost object at 0x7f3007ff7310>
> 
>     def test_strange_ip(self):
> >       u = URL("//[-1]/")
> 
> tests/test_url_parsing.py:198: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> yarl/_url.py:147: in __new__
>     val = urlsplit(val)
> /usr/lib/python3.11/urllib/parse.py:500: in urlsplit
>     _check_bracketed_host(bracketed_host)
> /usr/lib/python3.11/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.11/ipaddress.py:54: ValueError
> ________________________ TestUserInfo.test_weird_user3 
> _________________________
> 
> self = <test_url_parsing.TestUserInfo object at 0x7f30078be710>
> 
>     def test_weird_user3(self):
> >       u = URL("//[some]@host")
> 
> tests/test_url_parsing.py:323: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> yarl/_url.py:147: in __new__
>     val = urlsplit(val)
> /usr/lib/python3.11/urllib/parse.py:500: in urlsplit
>     _check_bracketed_host(bracketed_host)
> /usr/lib/python3.11/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.11/ipaddress.py:54: ValueError
> 
> ---------- coverage: platform linux, python 3.11.4-final-0 -----------
> Name                  Stmts   Miss  Cover
> -----------------------------------------
> yarl/__init__.py          3      0   100%
> yarl/_quoting.py         10      2    80%
> yarl/_quoting_py.py     155      0   100%
> yarl/_url.py            582      2    99%
> -----------------------------------------
> TOTAL                   750      4    99%
> 
> =========================== short test summary info 
> ============================
> FAILED tests/test_url.py::test_ipv6_zone - ValueError: 
> 'fe80::822a:a8ff:fe49:...
> FAILED tests/test_url.py::test_human_repr_delimiters - ValueError: '\\' does 
> ...
> FAILED tests/test_url_parsing.py::TestHost::test_masked_ipv4 - ValueError: 
> An...
> FAILED tests/test_url_parsing.py::TestHost::test_strange_ip - ValueError: 
> '-1...
> FAILED tests/test_url_parsing.py::TestUserInfo::test_weird_user3 - 
> ValueError...
> ================== 5 failed, 1040 passed, 2 xfailed in 5.51s 
> ===================
> E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_yarl/build; python3.11 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 
> returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/07/26/yarl_1.8.2-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230726;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230726&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

Reply via email to