MagicStack / MagicStack/asyncpg

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

オープン
#1,236 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Python
スター
8.1k
フォーク
468
PR マージ指標
30日以内にマージされた PR はありません

説明

Based on historical test-builds of the python-asyncpg package in Fedora, 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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

tests/test_connect.py::TestConnectParams::test_connect_params から始め、Python 3.13.2 で失敗を再現します。asyncpg/connect_utils.py の _parse_connect_dsn_and_args と urllib.parse.urlparse の周辺を読みます。対象のテストで ValueError: Invalid IPv6 URL が発生しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
postgresql, python
領域
databases
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。