• Bug#1098598: python-dotenv: FTBFS: E AssertionError: assert 'Error open

    From Santiago Vila@21:1/5 to All on Sat Feb 22 00:40:20 2025
    Package: src:python-dotenv
    Version: 1.0.1-1
    Severity: serious
    Tags: ftbfs trixie sid

    Dear maintainer:

    During a rebuild of all packages in unstable, your package failed to build:

    --------------------------------------------------------------------------------
    [...]
    debian/rules clean
    dh clean --with python3 --buildsystem=pybuild
    debian/rules override_dh_auto_clean
    make[1]: Entering directory '/<<PKGBUILDDIR>>'
    dh_auto_clean
    pybuild --clean -i python{version} -p "3.12 3.13"
    I: pybuild base:311: python3.12 setup.py clean
    running clean
    removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build' (and everything under it)
    'build/bdist.linux-x86_64' does not exist -- can't clean it 'build/scripts-3.12' does not exist -- can't clean it
    I: pybuild base:311: python3.13 setup.py clean
    running clean
    removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build' (and everything under it)
    'build/bdist.linux-x86_64' does not exist -- can't clean it 'build/scripts-3.13' does not exist -- can't clean it
    rm -rf .pybuild/
    find . -name \*.pyc -exec rm {} \;
    rm debian/python-dotenv.1 .cache -rf
    make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    dh_autoreconf_clean -O--buildsystem=pybuild
    dh_clean -O--buildsystem=pybuild
    rm -f debian/debhelper-build-stamp
    rm -rf debian/.debhelper/
    rm -f -- debian/python3-dotenv.substvars debian/files
    rm -fr -- debian/python3-dotenv/ debian/tmp/
    find . \( \( \
    \( -path .\*/.git -o -path .\*/.svn -o -path .\*/.bzr -o -path .\*/.hg -o -path .\*/CVS -o -path .\*/.pc -o -path .\*/_darcs \) -prune -o -type f -a \
    \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \
    -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \
    -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \
    -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \
    \) -exec rm -f {} + \) -o \
    \( -type d -a \( -name autom4te.cache -o -name __pycache__ \) -prune -exec rm -rf {} + \) \)
    debian/rules binary
    dh binary --with python3 --buildsystem=pybuild
    dh_update_autotools_config -O--buildsystem=pybuild
    dh_autoreconf -O--buildsystem=pybuild
    dh_auto_configure -O--buildsystem=pybuild
    pybuild --configure -i python{version} -p "3.12 3.13"
    I: pybuild base:311: python3.12 setup.py config
    running config
    I: pybuild base:311: python3.13 setup.py config
    running config
    dh_auto_build -O--buildsystem=pybuild
    pybuild --build -i python{version} -p "3.12 3.13"
    I: pybuild base:311: /usr/bin/python3.12 setup.py build
    running build
    running build_py
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv copying src/dotenv/cli.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/main.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/variables.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/parser.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/ipython.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/__main__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    copying src/dotenv/py.typed -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/dotenv
    I: pybuild base:311: /usr/bin/python3 setup.py build
    running build
    running build_py
    creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv copying src/dotenv/cli.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/main.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/variables.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/parser.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/ipython.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/__main__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    copying src/dotenv/py.typed -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/dotenv
    dh_auto_test -O--buildsystem=pybuild
    pybuild --test --test-pytest -i python{version} -p "3.12 3.13"
    I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build; python3.12 -m pytest -k 'not test_get_default_path and not test_run and not test_run_with_none_value and not test_run_with_other_env'
    ============================= test session starts ==============================
    platform linux -- Python 3.12.9, pytest-8.3.4, pluggy-1.5.0
    rootdir: /<<PKGBUILDDIR>>
    configfile: setup.cfg
    plugins: typeguard-4.4.1
    collected 152 items / 9 deselected / 143 selected

    tests/test_cli.py ..........FF...FF........... [ 19%] tests/test_ipython.py ... [ 21%] tests/test_main.py ..................................................... [ 58%] ....... [ 63%] tests/test_parser.py ........................................... [ 93%] tests/test_utils.py . [ 94%] tests/test_variables.py ...... [ 98%] tests/test_zip_imports.py .. [100%]

    =================================== FAILURES ===================================
    _________________________ test_list_non_existent_file __________________________

    cli = <click.testing.CliRunner object at 0x7f93a999d8b0>

    def test_list_non_existent_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'list'])

    assert result.exit_code == 2, result.output
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/tests/test_cli.py:44: AssertionError
    _____________________________ test_list_not_a_file _____________________________

    cli = <click.testing.CliRunner object at 0x7f93a9979b80>

    def test_list_not_a_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', '.', 'list'])

    assert result.exit_code == 2, result.output
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/tests/test_cli.py:51: AssertionError
    __________________________ test_get_non_existent_file __________________________

    cli = <click.testing.CliRunner object at 0x7f93a999f3b0>

    def test_get_non_existent_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'get', 'a'])

    assert result.exit_code == 2
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/tests/test_cli.py:78: AssertionError
    _____________________________ test_get_not_a_file ______________________________

    cli = <click.testing.CliRunner object at 0x7f93a999e8d0>

    def test_get_not_a_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', '.', 'get', 'a'])

    assert result.exit_code == 2
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build/tests/test_cli.py:85: AssertionError
    =============================== warnings summary ===============================
    .pybuild/cpython3_3.12_python-dotenv/build/tests/test_main.py::test_load_dotenv_in_current_dir
    .pybuild/cpython3_3.12_python-dotenv/build/tests/test_zip_imports.py::test_load_dotenv_outside_zip_file_when_called_in_zipfile
    /usr/lib/python3/dist-packages/sh.py:1983: DeprecationWarning: This process (pid=3085) is multi-threaded, use of fork() may lead to deadlocks in the child.
    self.pid = os.fork()

    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================
    FAILED tests/test_cli.py::test_list_non_existent_file - AssertionError: asser...
    FAILED tests/test_cli.py::test_list_not_a_file - AssertionError: assert 'Erro...
    FAILED tests/test_cli.py::test_get_non_existent_file - AssertionError: assert...
    FAILED tests/test_cli.py::test_get_not_a_file - AssertionError: assert 'Error...
    =========== 4 failed, 139 passed, 9 deselected, 2 warnings in 0.49s ============
    E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_python-dotenv/build; python3.12 -m pytest -k 'not test_get_default_path and not test_run and not test_run_with_none_value and not test_run_
    with_other_env'
    I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build; python3.13 -m pytest -k 'not test_get_default_path and not test_run and not test_run_with_none_value and not test_run_with_other_env'
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0
    rootdir: /<<PKGBUILDDIR>>
    configfile: setup.cfg
    plugins: typeguard-4.4.1
    collected 152 items / 9 deselected / 143 selected

    tests/test_cli.py ..........FF...FF........... [ 19%] tests/test_ipython.py ... [ 21%] tests/test_main.py ..................................................... [ 58%] ....... [ 63%] tests/test_parser.py ........................................... [ 93%] tests/test_utils.py . [ 94%] tests/test_variables.py ...... [ 98%] tests/test_zip_imports.py .. [100%]

    =================================== FAILURES ===================================
    _________________________ test_list_non_existent_file __________________________

    cli = <click.testing.CliRunner object at 0x7f8f83075220>

    def test_list_non_existent_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'list'])

    assert result.exit_code == 2, result.output
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/tests/test_cli.py:44: AssertionError
    _____________________________ test_list_not_a_file _____________________________

    cli = <click.testing.CliRunner object at 0x7f8f831576b0>

    def test_list_not_a_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', '.', 'list'])

    assert result.exit_code == 2, result.output
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/tests/test_cli.py:51: AssertionError
    __________________________ test_get_non_existent_file __________________________

    cli = <click.testing.CliRunner object at 0x7f8f8319fa10>

    def test_get_non_existent_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'get', 'a'])

    assert result.exit_code == 2
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/tests/test_cli.py:78: AssertionError
    _____________________________ test_get_not_a_file ______________________________

    cli = <click.testing.CliRunner object at 0x7f8f8319f7d0>

    def test_get_not_a_file(cli):
    result = cli.invoke(dotenv_cli, ['--file', '.', 'get', 'a'])

    assert result.exit_code == 2
    assert "Error opening env file" in result.output
    E AssertionError: assert 'Error opening env file' in ''
    E + where '' = <Result SystemExit(2)>.output

    /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build/tests/test_cli.py:85: AssertionError
    =============================== warnings summary ===============================
    .pybuild/cpython3_3.13_python-dotenv/build/tests/test_main.py::test_load_dotenv_in_current_dir
    .pybuild/cpython3_3.13_python-dotenv/build/tests/test_zip_imports.py::test_load_dotenv_outside_zip_file_when_called_in_zipfile
    /usr/lib/python3/dist-packages/sh.py:1983: DeprecationWarning: This process (pid=3100) is multi-threaded, use of fork() may lead to deadlocks in the child.
    self.pid = os.fork()

    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================
    FAILED tests/test_cli.py::test_list_non_existent_file - AssertionError: asser...
    FAILED tests/test_cli.py::test_list_not_a_file - AssertionError: assert 'Erro...
    FAILED tests/test_cli.py::test_get_non_existent_file - AssertionError: assert...
    FAILED tests/test_cli.py::test_get_not_a_file - AssertionError: assert 'Error...
    =========== 4 failed, 139 passed, 9 deselected, 2 warnings in 0.44s ============
    E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_python-dotenv/build; python3.13 -m pytest -k 'not test_get_default_path and not test_run and not test_run_with_none_value and not test_run_
    with_other_env'
    rm -fr -- /tmp/dh-xdg-rundir-lMoqUksI
    dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.13" returned exit code 13
    make: *** [debian/rules:15: binary] Error 25
    dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------

    The above is just how the build ends and not necessarily the most relevant part.
    If required, the full build log is available here:

    https://people.debian.org/~sanvila/build-logs/202502/

    About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages.

    If you could not reproduce the bug please contact me privately, as I
    am willing to provide ssh access to a virtual machine where the bug is
    fully reproducible.

    If this is really a bug in one of the build-depends, please use
    reassign and add an affects on src:python-dotenv, so that this is still
    visible in the BTS web page for this package.

    Thanks.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)