MagicStack / MagicStack/asyncpg

Python 3.13.2: TestConnectParams.test_connect_params fails with ValueError: Invalid IPv6 URL

Ouverte
#1,236 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
8.1k
Forks
468
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Based on historical test-builds of the [`python-asyncpg` package in Fedora](https://src.fedoraproject.org/rpms/python-asyncpg), this appears to be a regression from Python 3.13.1 to 3.13.2.

```
$ python3.13 --version
Python 3.13.2
$ python3.13 -m venv _e
$ . _e/bin/activate
(_e) $ pip install -e .[gssauth,test]
(_e) $ pip install pytest
(_e) $ python -m pytest
[…]
========================================================================================== short test summary info ===========================================================================================
FAILED tests/test__sourcecode.py::TestCodeQuality::test_flake8 - AssertionError: flake8 validation failed:
FAILED tests/test_codecs.py::TestCodecs::test_custom_codec_binary - asyncpg.exceptions.FeatureNotSupportedError: extension "hstore" is not available
FAILED tests/test_codecs.py::TestCodecs::test_custom_codec_text - asyncpg.exceptions.FeatureNotSupportedError: extension "hstore" is not available
FAILED tests/test_codecs.py::TestCodecs::test_extra_codec_alias - asyncpg.exceptions.FeatureNotSupportedError: extension "hstore" is not available
FAILED tests/test_codecs.py::TestCodecs::test_unhandled_type_fallback - asyncpg.exceptions.FeatureNotSupportedError: extension "isn" is not available
FAILED tests/test_codecs.py::TestCodecs::test_unknown_type_text_fallback - asyncpg.exceptions.FeatureNotSupportedError: extension "citext" is not available
FAILED tests/test_connect.py::TestConnectParams::test_connect_params - ValueError: Invalid IPv6 URL
FAILED tests/test_connect.py::TestConnectionAttributes::test_prefer_standby_picks_master_when_standby_is_down - TimeoutError
FAILED tests/test_introspection.py::TestIntrospection::test_introspection_no_stmt_cache_01 - asyncpg.exceptions.FeatureNotSupportedError: extension "hstore" is not available
FAILED tests/test_introspection.py::TestIntrospection::test_introspection_no_stmt_cache_02 - asyncpg.exceptions.FeatureNotSupportedError: extension "hstore" is not available
===================================================================== 10 failed, 300 passed, 3 skipped, 3 warnings in 132.00s (0:02:12) ======================================================================
```

The subject of this report is:

```
FAILED tests/test_connect.py::TestConnectParams::test_connect_params - ValueError: Invalid IPv6 URL
```

The full output for that failure is:

```
___________________________________________________________________________________ TestConnectParams.test_connect_params ____________________________________________________________________________________
Traceback (most recent call last):
File "/usr/lib64/python3.13/unittest/case.py", line 58, in testPartExecutor
yield
File "/usr/lib64/python3.13/unittest/case.py", line 651, in run
self._callTestMethod(testMethod)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/usr/lib64/python3.13/unittest/case.py", line 606, in _callTestMethod
if method() is not None:
~~~~~~^^
File "/home/ben/src/forks/asyncpg/tests/test_connect.py", line 1237, in test_connect_params
self.run_testcase(testcase)
~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/home/ben/src/forks/asyncpg/tests/test_connect.py", line 1154, in run_testcase
addrs, params = connect_utils._parse_connect_dsn_and_args(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
dsn=dsn, host=host, port=port, user=user, password=password,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
target_session_attrs=target_session_attrs,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
krbsrvname=krbsrvname, gsslib=gsslib)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ben/src/forks/asyncpg/asyncpg/connect_utils.py", line 282, in _parse_connect_dsn_and_args
parsed = urllib.parse.urlparse(dsn)
File "/usr/lib64/python3.13/urllib/parse.py", line 395, in urlparse
splitresult = urlsplit(url, scheme, allow_fragments)
File "/usr/lib64/python3.13/urllib/parse.py", line 516, in urlsplit
_check_bracketed_netloc(netloc)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/usr/lib64/python3.13/urllib/parse.py", line 451, in _check_bracketed_netloc
raise ValueError("Invalid IPv6 URL")
ValueError: Invalid IPv6 URL
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par tests/test_connect.py::TestConnectParams::test_connect_params et reproduisez l’échec avec Python 3.13.2. Lisez asyncpg/connect_utils.py autour de _parse_connect_dsn_and_args et urllib.parse.urlparse ; c’est terminé lorsque le test ciblé ne lève plus ValueError: Invalid IPv6 URL.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
postgresql, python
Domaine
databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.