• Bug#1102967: python-booleanoperations: FTBFS in testing: KeyError: 'set

    From Lucas Nussbaum@21:1/5 to All on Sun Apr 13 14:50:06 2025
    Source: python-booleanoperations
    Version: 0.9.0-3
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20250412 ftbfs-trixie

    Hi,

    During a rebuild of all packages in testing (trixie), your package failed
    to build on amd64.


    Relevant part (hopefully):
    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
    I: pybuild base:311: python3.13 setup.py config /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _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`.
    ********************************************************************************

    !!
    dist.fetch_build_eggs(dist.setup_requires)
    WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
    section = defn.get("tool", {})[tool_name]
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
    KeyError: 'setuptools_scm'
    running config
    dh_auto_build -O--buildsystem=pybuild
    I: pybuild base:311: /usr/bin/python3 setup.py build /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _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`.
    ********************************************************************************

    !!
    dist.fetch_build_eggs(dist.setup_requires)
    WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
    section = defn.get("tool", {})[tool_name]
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
    KeyError: 'setuptools_scm'
    running build
    running build_py
    creating /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/_version.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/booleanGlyph.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/exceptions.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/flatten.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/booleanOperationManager.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    copying Lib/booleanOperations/__init__.py -> /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build/booleanOperations
    dh_auto_test -O--buildsystem=pybuild
    I: pybuild base:311: cd /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build; python3.13 -m pytest tests
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.5, pluggy-1.5.0
    rootdir: /build/reproducible-path/python-booleanoperations-0.9.0
    configfile: setup.cfg
    plugins: typeguard-4.4.2
    collected 47 items

    tests/test_BooleanGlyph.py FFFFFFFF..................................... [ 95%]
    .. [100%]

    =================================== FAILURES ===================================
    _________________ BooleanTests.test_QTail_reversed_difference __________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_QTail_reversed_difference>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[710 chars], ((250.0, 100.0), 'curve', True, None), ((168[1018 chars]ath') != (('be[710 chars], ((249.99999999999997, 100.0), 'curve', True,[1044 chars]ath')
    E
    E First differing element 14:
    E ((250.0, 100.0), 'curve', True, None)
    E ((249.99999999999997, 100.0), 'curve', True, None)
    E
    E Diff is 2102 characters long. Set self.maxDiff to None to see it. : Glyph name 'QTail_reversed' failed for 'difference'.

    tests/test_BooleanGlyph.py:50: AssertionError
    ________________ BooleanTests.test_QTail_reversed_intersection _________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_QTail_reversed_intersection>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[984 chars].0, 250.0), 'curve', True, None), ((400.0, 332[293 chars]ath') != (('be[984 chars].0, 249.99999999999997), 'curve', True, None),[306 chars]ath')
    E
    E First differing element 18:
    E ((400.0, 250.0), 'curve', True, None)
    E ((400.0, 249.99999999999997), 'curve', True, None)
    E
    E Diff is 1523 characters long. Set self.maxDiff to None to see it. : Glyph name 'QTail_reversed' failed for 'intersection'.

    tests/test_BooleanGlyph.py:50: AssertionError
    ____________________ BooleanTests.test_QTail_reversed_union ____________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_QTail_reversed_union>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[985 chars].0, 250.0), 'curve', True, None), ((500.0, 388[285 chars]ath') != (('be[985 chars].0, 249.99999999999997), 'curve', True, None),[298 chars]ath')
    E
    E First differing element 18:
    E ((500.0, 250.0), 'curve', True, None)
    E ((500.0, 249.99999999999997), 'curve', True, None)
    E
    E Diff is 1516 characters long. Set self.maxDiff to None to see it. : Glyph name 'QTail_reversed' failed for 'union'.

    tests/test_BooleanGlyph.py:50: AssertionError
    _____________________ BooleanTests.test_QTail_reversed_xor _____________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_QTail_reversed_xor>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[710 chars], ((250.0, 100.0), 'curve', True, None), ((168[1341 chars]ath') != (('be[710 chars], ((249.99999999999997, 100.0), 'curve', True,[1367 chars]ath')
    E
    E First differing element 14:
    E ((250.0, 100.0), 'curve', True, None)
    E ((249.99999999999997, 100.0), 'curve', True, None)
    E
    E Diff is 2443 characters long. Set self.maxDiff to None to see it. : Glyph name 'QTail_reversed' failed for 'xor'.

    tests/test_BooleanGlyph.py:50: AssertionError
    ________________________ BooleanTests.test_Q_difference ________________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_Q_difference>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[714 chars]250.0, 100.0), 'curve', True, None), ((168.0, [1022 chars]ath') != (('be[714 chars]250.00000000000003, 100.0), 'curve', True, Non[1048 chars]ath')
    E
    E First differing element 14:
    E ((250.0, 100.0), 'curve', True, None)
    E ((250.00000000000003, 100.0), 'curve', True, None)
    E
    E Diff is 2098 characters long. Set self.maxDiff to None to see it. : Glyph name 'Q' failed for 'difference'.

    tests/test_BooleanGlyph.py:50: AssertionError
    _______________________ BooleanTests.test_Q_intersection _______________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_Q_intersection>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[973 chars]400.0, 250.0), 'curve', True, None), ((400.0, [296 chars]ath') != (('be[973 chars]400.00000000000006, 250.0), 'curve', True, Non[309 chars]ath')
    E
    E First differing element 18:
    E ((400.0, 250.0), 'curve', True, None)
    E ((400.00000000000006, 250.0), 'curve', True, None)
    E
    E Diff is 1489 characters long. Set self.maxDiff to None to see it. : Glyph name 'Q' failed for 'intersection'.

    tests/test_BooleanGlyph.py:50: AssertionError
    __________________________ BooleanTests.test_Q_union ___________________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_Q_union>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[476 chars].0, 250.0), 'curve', True, None), ((500.0, 388[1106 chars]ath') != (('be[476 chars].0, 249.99999999999997), 'curve', True, None),[1132 chars]ath')
    E
    E First differing element 10:
    E ((500.0, 250.0), 'curve', True, None)
    E ((500.0, 249.99999999999997), 'curve', True, None)
    E
    E Diff is 1944 characters long. Set self.maxDiff to None to see it. : Glyph name 'Q' failed for 'union'.

    tests/test_BooleanGlyph.py:50: AssertionError
    ___________________________ BooleanTests.test_Q_xor ____________________________

    self = <tests.test_BooleanGlyph.BooleanTests testMethod=test_Q_xor>

    def test(self):
    if VERBOSE:
    print("test: '%s' for '%s'" % (glyph.name, booleanMethodName))
    testPen = DigestPointPen()
    func(*args, outPen=testPen)
    expectedPen = DigestPointPen()
    expectedGlyph.drawPoints(expectedPen)
    self.assertEqual(testPen.getDigest(), expectedPen.getDigest(), "Glyph name '%s' failed for '%s'." % (glyph.name, booleanMethodName))
    E AssertionError: Tuples differ: (('be[714 chars]250.0, 100.0), 'curve', True, None), ((168.0, [1345 chars]ath') != (('be[714 chars]250.00000000000003, 100.0), 'curve', True, Non[1371 chars]ath')
    E
    E First differing element 14:
    E ((250.0, 100.0), 'curve', True, None)
    E ((250.00000000000003, 100.0), 'curve', True, None)
    E
    E Diff is 2439 characters long. Set self.maxDiff to None to see it. : Glyph name 'Q' failed for 'xor'.

    tests/test_BooleanGlyph.py:50: AssertionError
    =========================== short test summary info ============================
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_QTail_reversed_difference
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_QTail_reversed_intersection
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_QTail_reversed_union - ...
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_QTail_reversed_xor - As...
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_Q_difference - Assertio...
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_Q_intersection - Assert...
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_Q_union - AssertionErro...
    FAILED tests/test_BooleanGlyph.py::BooleanTests::test_Q_xor - AssertionError:...
    ========================= 8 failed, 39 passed in 0.39s =========================
    E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /build/reproducible-path/python-booleanoperations-0.9.0/.pybuild/cpython3_3.13_booleanOperations/build; python3.13 -m pytest tests
    dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13


    The full build log is available from: http://qa-logs.debian.net/2025/04/12/python-booleanoperations_0.9.0-3_testing.log

    All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250412;users=lucas@debian.org
    or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250412&fusertaguser=lucas@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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bastian Germann@21:1/5 to All on Sun Apr 13 22:10:01 2025
    Control: retitle -1 python-booleanoperations: FTBFS in testing: BooleanTests

    The former title is not the cause of the FTBFS.

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