Source: distro-info Version: 1.7 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20240420 ftbfs-trixie ftbfs-t64-arm64
Hi, During a rebuild of all packages in sid, your package failed to build on arm64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > ./test-debian-distro-info > cd perl && ./test.pl > testAlias > testAll > testDevel > py3versions: no X-Python3-Version in control file, using supported versions > cd python && python3.12 setup.py test > 1..35 > testOldstable > ok 1 - unique: Matching lists > ok 2 - symmetric_difference: Matching lists > ok 3 - unique: 1 Unique Item > ok 4 - unique: 1 Unique Item in the haystack > ok 5 - symmetric_difference: 1 Unique Item > ok 6 - Debian all > ok 7 - Debian devel > ok 8 - Debian oldstable > ok 9 - Debian stable > ok 10 - Debian testing > ok 11 - Debian valid > ok 12 - Debian valid > ok 13 - Debian invalid > ok 14 - Debian supported > ok 15 - Debian LTS > ok 16 - Debian ELTS > ok 17 - Debian unsupported > ok 18 - Debian codename, invalid > ok 19 - Debian codename > ok 20 - Debian version, invalid > ok 21 - Debian version > ok 22 - Ubuntu all > ok 23 - Ubuntu version > ok 24 - Ubuntu LTS version > ok 25 - Ubuntu devel > ok 26 - Ubuntu LTS > ok 27 - Ubuntu stable > ok 28 - Ubuntu valid > ok 29 - Ubuntu invalid > ok 30 - Ubuntu is_lts > ok 31 - Ubuntu !is_lts > ok 32 - Ubuntu !is_lts > ok 33 - Ubuntu supported > ok 34 - Ubuntu ESM > ok 35 - Ubuntu unsupported > testStable > testSupported > testLTS > testELTS > testUnsupported > testTesting > testFullname > running test > WARNING: Testing via this command is deprecated and will be removed in a > future version. Users looking for a generic test entry point independent of > test runner are encouraged to use tox. > /usr/lib/python3/dist-packages/setuptools/command/test.py:193: > _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are > deprecated. > !! > > > ******************************************************************************** > Requirements should be satisfied by a PEP 517 installer. > If you are using pip, you can try `pip install --use-pep517`. > > ******************************************************************************** > > !! > ir_d = dist.fetch_build_eggs(dist.install_requires) > WARNING: The wheel package is not available. > testRelease > /usr/lib/python3/dist-packages/setuptools/command/test.py:194: > _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are > deprecated. > !! > > > ******************************************************************************** > Requirements should be satisfied by a PEP 517 installer. > If you are using pip, you can try `pip install --use-pep517`. > > ******************************************************************************** > > !! > tr_d = dist.fetch_build_eggs(dist.tests_require or []) > WARNING: The wheel package is not available. > /usr/lib/python3/dist-packages/setuptools/command/test.py:195: > _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are > deprecated. > !! > > > ******************************************************************************** > Requirements should be satisfied by a PEP 517 installer. > If you are using pip, you can try `pip install --use-pep517`. > > ******************************************************************************** > > !! > er_d = dist.fetch_build_eggs( > WARNING: The wheel package is not available. > running egg_info > testSeries > creating distro_info.egg-info > writing distro_info.egg-info/PKG-INFO > writing dependency_links to distro_info.egg-info/dependency_links.txt > writing top-level names to distro_info.egg-info/top_level.txt > writing manifest file 'distro_info.egg-info/SOURCES.txt' > testCombinedShortform > testReleaseDate > reading manifest file 'distro_info.egg-info/SOURCES.txt' > writing manifest file 'distro_info.egg-info/SOURCES.txt' > running build_ext > test_make_pep440_compliant_debian_backport > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_debian_backport) > Test make_pep440_compliant() with Debian backport version. ... ok > test_make_pep440_compliant_debian_stable > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_debian_stable) > Test make_pep440_compliant() with Debian stable update. ... ok > test_make_pep440_compliant_debian_stable_backport > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_debian_stable_backport) > Test make_pep440_compliant() with Debian stable backport. ... ok > test_make_pep440_compliant_tilde > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_tilde) > Test make_pep440_compliant() with tilde in Debian version. ... ok > test_make_pep440_compliant_ubuntu > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_ubuntu) > Test make_pep440_compliant() with Ubuntu version. ... ok > test_make_pep440_compliant_ubuntu_backport > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_ubuntu_backport) > Test make_pep440_compliant() with Ubuntu backport version. ... ok > test_make_pep440_compliant_ubuntu_security > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_ubuntu_security) > Test make_pep440_compliant() with Ubuntu security update. ... ok > test_make_pep440_compliant_unchanged > (distro_info_test.test_setup.SetupTestCase.test_make_pep440_compliant_unchanged) > Test make_pep440_compliant() with already correct version. ... ok > test_pylint (distro_info_test.test_pylint.PylintTestCase.test_pylint) > Test: Run pylint on Python source code. ... Running following command: > pylint --rcfile=/<<PKGBUILDDIR>>/python/distro_info_test/pylint.conf > debian-distro-info ubuntu-distro-info distro_info_test distro_info.py setup.py > testHelp > testExactlyOne > testUnrecognizedOption > testUnrecognizedArguments > testMissingArgumentAlias > testMissingArgumentDate > testMissingArgumentSeries > testInvalidAlias > testInvalidDate > testInvalidSeries > testMultipleAlias > testMultipleDates > testMultipleSeries > testUnknownSeries > testSourceDateEpoch > testDays > > Ran [1;36m31[0m tests. > > [1;32mOK[0m > ./test-ubuntu-distro-info > testAll > testDevel > testLatest > testLTS > testStable > testSupported > testUnsupported > testFullname > testRelease > testSeries > testCombinedShortform > testReleaseDate > testHelp > testExactlyOne > testUnrecognizedOption > testUnrecognizedArguments > testMissingArgumentDate > testMissingArgumentSeries > testDistributionDataOutdated > testInvalidDate > testInvalidSeries > testMultipleDates > testMultipleSeries > testUnknownSeries > testSourceDateEpoch > testDays > > Ran [1;36m26[0m tests. > > [1;32mOK[0m > FAIL > test_all (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_all) > Test: List all known Debian distributions. ... ok > test_codename > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_codename) > Test: Codename decoding ... ok > test_codename_result > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_codename_result) > Test: Check result set to codename. ... ok > test_devel > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_devel) > Test: Get latest development Debian distribution. ... ok > test_elts_supported > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_elts_supported) > Test: List all ELTS supported Debian distribution. ... ok > test_fullname > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_fullname) > Test: Check result set to fullname. ... ok > test_lts_supported > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_lts_supported) > Test: List all LTS supported Debian distribution. ... ok > test_old (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_old) > Test: Get old (stable) Debian distribution. ... ok > test_release > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_release) > Test: Check result set to release. ... ok > test_stable > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_stable) > Test: Get latest stable Debian distribution. ... ok > test_supported > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_supported) > Test: List all supported Debian distribution. ... ok > test_testing > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_testing) > Test: Get latest testing Debian distribution. ... ok > test_unsupported > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_unsupported) > Test: List all unsupported Debian distribution. ... ok > test_valid > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_valid) > Test: Check for valid Debian distribution. ... ok > test_version > (distro_info_test.test_distro_info.DebianDistroInfoTestCase.test_version) > Test: Version decoding ... ok > test_all (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_all) > Test: List all known Ubuntu distributions. ... ok > test_codename > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_codename) > Test: Check result set to codename. ... ok > test_current_unsupported > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_current_unsupported) > Test: List all unsupported Ubuntu distributions today. ... ok > test_devel > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_devel) > Test: Get latest development Ubuntu distribution. ... ok > test_fullname > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_fullname) > Test: Check result set to fullname. ... ok > test_is_lts > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_is_lts) > Test: Check if Ubuntu distribution is an LTS. ... ok > test_lts (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_lts) > Test: Get latest long term support (LTS) Ubuntu distribution. ... ok > test_release > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_release) > Test: Check result set to release. ... ok > test_stable > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_stable) > Test: Get latest stable Ubuntu distribution. ... ok > test_supported > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_supported) > Test: List all supported Ubuntu distribution. ... ok > test_unsupported > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_unsupported) > Test: List all unsupported Ubuntu distributions. ... ok > test_valid > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_valid) > Test: Check for valid Ubuntu distribution. ... ok > test_version > (distro_info_test.test_distro_info.UbuntuDistroInfoTestCase.test_version) > Test: Check result set to version. ... ok > test_isort (distro_info_test.test_isort.IsortTestCase.test_isort) > Test: Run isort on Python source code. ... Running following command: > isort --check-only --diff -l 99 debian-distro-info ubuntu-distro-info > distro_info_test distro_info.py setup.py > ok > test_black (distro_info_test.test_black.BlackTestCase.test_black) > Test: Run black code formatter on Python source code. ... Running following > command: > black --check --diff -l 99 debian-distro-info ubuntu-distro-info > distro_info_test distro_info.py setup.py > ok > test_mypy (distro_info_test.test_mypy.MypyTestCase.test_mypy) > Test: Run mypy on Python source code. ... Running following command: > mypy --ignore-missing-imports --strict distro_info_test distro_info.py > setup.py > ok > test_flake8 (distro_info_test.test_flake8.Flake8TestCase.test_flake8) > Test: Run flake8 on Python source code. ... Running following command: > /usr/bin/python3.12 -m flake8 --max-line-length=99 debian-distro-info > ubuntu-distro-info distro_info_test distro_info.py setup.py > ok > > ====================================================================== > FAIL: test_pylint (distro_info_test.test_pylint.PylintTestCase.test_pylint) > Test: Run pylint on Python source code. > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/<<PKGBUILDDIR>>/python/distro_info_test/test_pylint.py", line 70, in > test_pylint > self.fail("\n".join(msgs)) > AssertionError: pylint exited with code 17 and has unexpected output on > stderr: > Exception on node <Name.__name__ l.135 at 0xffffbd161990> in file > '/<<PKGBUILDDIR>>/python/debian-distro-info' > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, > in walk > callback(astroid) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 1642, in visit_name > self._loopvar_name(node) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 2550, in _loopvar_name > if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( > ^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, > in statement > return self.parent.statement() > ^^^^^^^^^^^^^^^^^^^^^^^ > File > "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", > line 414, in statement > raise StatementMissing(target=self) > astroid.exceptions.StatementMissing: Statement not found on > <Module.debian-distro-info l.0 at 0xffffbd2e6e90> > Can't write the issue template for the crash in > /<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt > because of: '[Errno 2] No such file or directory: > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt'' > Here's the content anyway: > First, please verify that the bug is not already filled: > https://github.com/pylint-dev/pylint/issues/ > > Then create a new issue: > https://github.com/pylint-dev/pylint/issues/new?labels=Crash 💥%2CNeeds triage > 📥 > > > > Issue title: > Crash ```` (if possible, be more specific about what made pylint crash) > > ### Bug description > > When parsing the following ``a.py``: > > <!-- > If sharing the code is not an option, please state so, > but providing only the stacktrace would still be helpful. > --> > > ```python > #!/usr/bin/python3 > > # Copyright (C) 2009-2011, Benjamin Drung <bdr...@debian.org> > # > # Permission to use, copy, modify, and/or distribute this software for any > # purpose with or without fee is hereby granted, provided that the above > # copyright notice and this permission notice appear in all copies. > # > # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > # pylint: disable=invalid-name > # pylint: enable=invalid-name > > """provides information about Debian's distributions""" > > import argparse > import os > import sys > > from distro_info import DebianDistroInfo, convert_date > > > def parse_args(): > script_name = os.path.basename(sys.argv[0]) > usage = f"{script_name} [options]" > epilog = f"See {script_name}(1) for more info." > parser = argparse.ArgumentParser(usage=usage, epilog=epilog) > > parser.add_argument( > "--date", > dest="date", > default=None, > help="date for calculating the version (default: today).", > ) > parser.add_argument( > "-a", "--all", dest="all", action="store_true", help="list all known > versions" > ) > parser.add_argument( > "-d", "--devel", dest="devel", action="store_true", help="latest > development version" > ) > parser.add_argument( > "-t", "--testing", dest="testing", action="store_true", help="current > testing version" > ) > parser.add_argument( > "-s", "--stable", dest="stable", action="store_true", help="latest > stable version" > ) > parser.add_argument( > "-o", "--old", dest="old", action="store_true", help="latest old > (stable) version" > ) > parser.add_argument( > "--supported", > dest="supported", > action="store_true", > help="list of all supported versions (including development)", > ) > parser.add_argument( > "-l", > "--lts", > dest="lts", > action="store_true", > help="list of all LTS supported stable versions", > ) > parser.add_argument( > "-e", > "--elts", > dest="elts", > action="store_true", > help="list of all ELTS supported stable versions", > ) > parser.add_argument( > "--unsupported", dest="unsupported", help="list of all unsupported > stable versions" > ) > > args = parser.parse_args() > > versions = [ > args.all, > args.devel, > args.lts, > args.elts, > args.old, > args.stable, > args.supported, > args.testing, > args.unsupported, > ] > if len([x for x in versions if x]) != 1: > parser.error( > "You have to select exactly one of --all, --devel, --elts, --lts," > " --old, --stable, --supported, --testing, --unsupported." > ) > > if args.date is not None: > try: > args.date = convert_date(args.date) > except ValueError: > parser.error("Option --date needs to be a date in ISO 8601 > format.") > return args > > > def main(): > # pylint: disable=too-many-branches > args = parse_args() > if args.all: > for distro in DebianDistroInfo().all: > sys.stdout.write(distro + "\n") > elif args.devel: > sys.stdout.write(DebianDistroInfo().devel(args.date) + "\n") > elif args.old: > sys.stdout.write(DebianDistroInfo().old(args.date) + "\n") > elif args.stable: > sys.stdout.write(DebianDistroInfo().stable(args.date) + "\n") > elif args.supported: > for distro in DebianDistroInfo().supported(args.date): > sys.stdout.write(distro + "\n") > elif args.lts: > for distro in DebianDistroInfo().lts_supported(args.date): > sys.stdout.write(distro + "\n") > elif args.elts: > for distro in DebianDistroInfo().elts_supported(args.date): > sys.stdout.write(distro + "\n") > elif args.testing: > sys.stdout.write(DebianDistroInfo().testing(args.date) + "\n") > elif args.unsupported: > for distro in DebianDistroInfo().unsupported(args.date): > sys.stdout.write(distro + "\n") > > > if __name__ == "__main__": > main() > > ``` > > ### Command used > > ```shell > pylint a.py > ``` > > ### Pylint output > > <details open> > <summary> > pylint crashed with a ``AstroidError`` and with the following > stacktrace: > </summary> > > ```python > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 788, in > _lint_file > check_astroid_module(module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1017, > in check_astroid_module > retval = self._check_astroid_module( > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1069, > in _check_astroid_module > walker.walk(node) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, > in walk > callback(astroid) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 1642, in visit_name > self._loopvar_name(node) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 2550, in _loopvar_name > if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( > ^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, > in statement > return self.parent.statement() > ^^^^^^^^^^^^^^^^^^^^^^^ > File > "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", > line 414, in statement > raise StatementMissing(target=self) > astroid.exceptions.StatementMissing: Statement not found on > <Module.debian-distro-info l.0 at 0xffffbd2e6e90> > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 752, in > _lint_files > self._lint_file(fileitem, module, check_astroid_module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 790, in > _lint_file > raise astroid.AstroidError from e > astroid.exceptions.AstroidError > > ``` > > > </details> > > ### Expected behavior > > No crash. > > ### Pylint version > > ```shell > pylint 3.0.3 > astroid 3.1.0 > Python 3.11.9 (main, Apr 10 2024, 13:16:36) [GCC 13.2.0] > ``` > > ### OS / Environment > > linux (Linux) > > ### Additional dependencies > > <!-- > Please remove this part if you're not using any of > your dependencies in the example. > --> > . > Can't write the issue template for the crash in > /<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt > because of: '[Errno 2] No such file or directory: > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt'' > Here's the content anyway: > First, please verify that the bug is not already filled: > https://github.com/pylint-dev/pylint/issues/ > > Then create a new issue: > https://github.com/pylint-dev/pylint/issues/new?labels=Crash 💥%2CNeeds triage > 📥 > > > > Issue title: > Crash ```` (if possible, be more specific about what made pylint crash) > > ### Bug description > > When parsing the following ``a.py``: > > <!-- > If sharing the code is not an option, please state so, > but providing only the stacktrace would still be helpful. > --> > > ```python > #!/usr/bin/python3 > > # Copyright (C) 2009-2011, Benjamin Drung <bdr...@debian.org> > # > # Permission to use, copy, modify, and/or distribute this software for any > # purpose with or without fee is hereby granted, provided that the above > # copyright notice and this permission notice appear in all copies. > # > # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > # pylint: disable=invalid-name > # pylint: enable=invalid-name > > """provides information about Ubuntu's distributions""" > > import argparse > import os > import sys > > from distro_info import UbuntuDistroInfo, convert_date > > > def parse_args() -> argparse.Namespace: > script_name = os.path.basename(sys.argv[0]) > usage = f"{script_name} [options]" > epilog = f"See {script_name}(1) for more info." > parser = argparse.ArgumentParser(usage=usage, epilog=epilog) > > parser.add_argument( > "--date", > dest="date", > default=None, > help="date for calculating the version (default: today).", > ) > parser.add_argument( > "-a", "--all", dest="all", action="store_true", help="list all known > versions" > ) > parser.add_argument( > "-d", "--devel", dest="devel", action="store_true", help="latest > development version" > ) > parser.add_argument( > "-s", "--stable", dest="stable", action="store_true", help="latest > stable version" > ) > parser.add_argument( > "--lts", dest="lts", action="store_true", help="latest long term > support (LTS) version" > ) > parser.add_argument( > "--supported", > dest="supported", > action="store_true", > help="list of all supported versions (including development)", > ) > parser.add_argument( > "--unsupported", > dest="unsupported", > action="store_true", > help="list of all unsupported stable versions", > ) > > args = parser.parse_args() > > versions = [args.all, args.devel, args.lts, args.stable, args.supported, > args.unsupported] > if len([x for x in versions if x]) != 1: > parser.error( > "You have to select exactly one of --all, --devel, --lts, " > "--stable, --supported, --unsupported." > ) > > if args.date is not None: > try: > args.date = convert_date(args.date) > except ValueError: > parser.error("Option --date needs to be a date in ISO 8601 > format.") > > return args > > > def main() -> None: > args = parse_args() > if args.all: > for distro in UbuntuDistroInfo().all: > sys.stdout.write(distro + "\n") > elif args.devel: > sys.stdout.write(UbuntuDistroInfo().devel(args.date) + "\n") > elif args.lts: > sys.stdout.write(UbuntuDistroInfo().lts(args.date) + "\n") > elif args.stable: > sys.stdout.write(UbuntuDistroInfo().stable(args.date) + "\n") > elif args.supported: > for distro in UbuntuDistroInfo().supported(args.date): > sys.stdout.write(distro + "\n") > elif args.unsupported: > for distro in UbuntuDistroInfo().unsupported(args.date): > sys.stdout.write(distro + "\n") > > > if __name__ == "__main__": > main() > > ``` > > ### Command used > > ```shell > pylint a.py > ``` > > ### Pylint output > > <details open> > <summary> > pylint crashed with a ``AstroidError`` and with the following > stacktrace: > </summary> > > ```python > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 788, in > _lint_file > check_astroid_module(module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1017, > in check_astroid_module > retval = self._check_astroid_module( > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1069, > in _check_astroid_module > walker.walk(node) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, > in walk > callback(astroid) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 1642, in visit_name > self._loopvar_name(node) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 2550, in _loopvar_name > if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( > ^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, > in statement > return self.parent.statement() > ^^^^^^^^^^^^^^^^^^^^^^^ > File > "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", > line 414, in statement > raise StatementMissing(target=self) > astroid.exceptions.StatementMissing: Statement not found on > <Module.ubuntu-distro-info l.0 at 0xffffbd162ad0> > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 752, in > _lint_files > self._lint_file(fileitem, module, check_astroid_module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 790, in > _lint_file > raise astroid.AstroidError from e > astroid.exceptions.AstroidError > > ``` > > > </details> > > ### Expected behavior > > No crash. > > ### Pylint version > > ```shell > pylint 3.0.3 > astroid 3.1.0 > Python 3.11.9 (main, Apr 10 2024, 13:16:36) [GCC 13.2.0] > ``` > > ### OS / Environment > > linux (Linux) > > ### Additional dependencies > > <!-- > Please remove this part if you're not using any of > your dependencies in the example. > --> > . > Can't write the issue template for the crash in > /<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-27.txt > because of: '[Errno 2] No such file or directory: > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-27.txt'' > Here's the content anyway: > First, please verify that the bug is not already filled: > https://github.com/pylint-dev/pylint/issues/ > > Then create a new issue: > https://github.com/pylint-dev/pylint/issues/new?labels=Crash 💥%2CNeeds triage > 📥 > > > > Issue title: > Crash ```` (if possible, be more specific about what made pylint crash) > > ### Bug description > > When parsing the following ``a.py``: > > <!-- > If sharing the code is not an option, please state so, > but providing only the stacktrace would still be helpful. > --> > > ```python > #!/usr/bin/python3 > > import pathlib > import re > > from setuptools import setup > > PACKAGES = ["distro_info"] > PY_MODULES = ["distro_info"] > SCRIPTS = ["debian-distro-info", "ubuntu-distro-info"] > > > def get_debian_version() -> str: > """look what Debian version we have""" > changelog = pathlib.Path(__file__).parent.parent / "debian" / "changelog" > with changelog.open("r", encoding="utf-8") as changelog_f: > head = changelog_f.readline() > match = re.compile(r".*\((.*)\).*").match(head) > if not match: > raise ValueError(f"Failed to extract Debian version from '{head}'.") > return match.group(1) > > > def make_pep440_compliant(version: str) -> str: > """Convert the version into a PEP440 compliant version.""" > public_version_re = > re.compile(r"^([0-9][0-9.]*(?:(?:a|b|rc|.post|.dev)[0-9]+)*)\+?") > _, public, local = public_version_re.split(version, maxsplit=1) > if not local: > return version > sanitized_local = re.sub("[+~]+", ".", local).strip(".") > pep440_version = f"{public}+{sanitized_local}" > assert re.match("^[a-zA-Z0-9.]+$", sanitized_local), f"'{pep440_version}' > not PEP440 compliant" > return pep440_version > > > if __name__ == "__main__": > setup( > name="distro-info", > version=make_pep440_compliant(get_debian_version()), > py_modules=PY_MODULES, > packages=PACKAGES, > test_suite="distro_info_test", > url="https://salsa.debian.org/debian/distro-info", > author="Benjamin Drung", > author_email="bdr...@debian.org", > package_data={"distro_info": ["py.typed"]}, > ) > > ``` > > ### Command used > > ```shell > pylint a.py > ``` > > ### Pylint output > > <details open> > <summary> > pylint crashed with a ``AstroidError`` and with the following > stacktrace: > </summary> > > ```python > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 788, in > _lint_file > check_astroid_module(module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1017, > in check_astroid_module > retval = self._check_astroid_module( > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 1069, > in _check_astroid_module > walker.walk(node) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 94, > in walk > self.walk(child) > File "/usr/lib/python3/dist-packages/pylint/utils/ast_walker.py", line 91, > in walk > callback(astroid) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 1642, in visit_name > self._loopvar_name(node) > File "/usr/lib/python3/dist-packages/pylint/checkers/variables.py", line > 2550, in _loopvar_name > if astmts[i].statement().parent_of(stmt) and not utils.in_for_else_branch( > ^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3/dist-packages/astroid/nodes/node_ng.py", line 297, > in statement > return self.parent.statement() > ^^^^^^^^^^^^^^^^^^^^^^^ > File > "/usr/lib/python3/dist-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", > line 414, in statement > raise StatementMissing(target=self) > astroid.exceptions.StatementMissing: Statement not found on <Module.setup l.0 > at 0xffffbc67a5d0> > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 752, in > _lint_files > self._lint_file(fileitem, module, check_astroid_module) > File "/usr/lib/python3/dist-packages/pylint/lint/pylinter.py", line 790, in > _lint_file > raise astroid.AstroidError from e > astroid.exceptions.AstroidError > > ``` > > > </details> > > ### Expected behavior > > No crash. > > ### Pylint version > > ```shell > pylint 3.0.3 > astroid 3.1.0 > Python 3.11.9 (main, Apr 10 2024, 13:16:36) [GCC 13.2.0] > ``` > > ### OS / Environment > > linux (Linux) > > ### Additional dependencies > > <!-- > Please remove this part if you're not using any of > your dependencies in the example. > --> > . > pylint found issues: > ************* Module debian-distro-info > debian-distro-info:1:0: F0002: debian-distro-info: Fatal error while checking > 'debian-distro-info'. Please open an issue in our bug tracker so we address > this. There is a pre-filled template that you can use in > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt'. > (astroid-error) > ************* Module ubuntu-distro-info > ubuntu-distro-info:22:0: C0413: Import "import argparse" should be placed at > the top of the module (wrong-import-position) > ubuntu-distro-info:23:0: C0413: Import "import os" should be placed at the > top of the module (wrong-import-position) > ubuntu-distro-info:24:0: C0413: Import "import sys" should be placed at the > top of the module (wrong-import-position) > ubuntu-distro-info:26:0: C0413: Import "from distro_info import > UbuntuDistroInfo, convert_date" should be placed at the top of the module > (wrong-import-position) > ubuntu-distro-info:1:0: F0002: ubuntu-distro-info: Fatal error while checking > 'ubuntu-distro-info'. Please open an issue in our bug tracker so we address > this. There is a pre-filled template that you can use in > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-24.txt'. > (astroid-error) > ************* Module distro_info_test > distro_info_test/__init__.py:17:0: C0413: Import "import inspect" should be > placed at the top of the module (wrong-import-position) > distro_info_test/__init__.py:18:0: C0413: Import "import os" should be placed > at the top of the module (wrong-import-position) > distro_info_test/__init__.py:19:0: C0413: Import "import unittest" should be > placed at the top of the module (wrong-import-position) > ubuntu-distro-info:22:0: C0411: standard import "import argparse" should be > placed before "from distro_info import DebianDistroInfo, convert_date" > (wrong-import-order) > ubuntu-distro-info:23:0: C0411: standard import "import os" should be placed > before "from distro_info import DebianDistroInfo, convert_date" > (wrong-import-order) > ubuntu-distro-info:24:0: C0411: standard import "import sys" should be placed > before "from distro_info import DebianDistroInfo, convert_date" > (wrong-import-order) > distro_info_test/__init__.py:17:0: C0411: standard import "import inspect" > should be placed before "from distro_info import DebianDistroInfo, > convert_date" (wrong-import-order) > distro_info_test/__init__.py:18:0: C0411: standard import "import os" should > be placed before "from distro_info import DebianDistroInfo, convert_date" > (wrong-import-order) > distro_info_test/__init__.py:19:0: C0411: standard import "import unittest" > should be placed before "from distro_info import DebianDistroInfo, > convert_date" (wrong-import-order) > ubuntu-distro-info:22:0: C0412: Imports from package argparse are not grouped > (ungrouped-imports) > ubuntu-distro-info:23:0: C0412: Imports from package os are not grouped > (ungrouped-imports) > ubuntu-distro-info:24:0: C0412: Imports from package sys are not grouped > (ungrouped-imports) > distro_info_test/__init__.py:18:0: C0412: Imports from package os are not > grouped (ungrouped-imports) > ************* Module setup > setup.py:1:0: F0002: setup.py: Fatal error while checking 'setup.py'. Please > open an issue in our bug tracker so we address this. There is a pre-filled > template that you can use in > '/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.cache/pylint/pylint-crash-2024-04-20-04-31-27.txt'. > (astroid-error) > > ---------------------------------------------------------------------- > Ran 41 tests in 9.078s > > FAILED (failures=1) > Test failed: <unittest.runner.TextTestResult run=41 errors=0 failures=1> > error: Test failed: <unittest.runner.TextTestResult run=41 errors=0 > failures=1> > make[1]: *** [Makefile:39: test-python] Error 1 > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_auto_test: error: make -j4 test returned exit code 2 The full build log is available from: http://qa-logs.debian.net/2024/04/20/distro-info_1.7_unstable-arm64.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240420;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240420&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.