Bug 2432344 - python-twisted fails to build with Python 3.15: twisted.trial.unittest.FailTest: 5 != 7, builtins.AttributeError: 'SourceFileLoader' object has no attribute 'load_module' and one more
Summary: python-twisted fails to build with Python 3.15: twisted.trial.unittest.FailTe...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: python-twisted
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jonathan Wright
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.15
TreeView+ depends on / blocked
 
Reported: 2026-01-23 12:21 UTC by Karolina Surma
Modified: 2026-01-23 12:21 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Karolina Surma 2026-01-23 12:21:12 UTC
python-twisted fails to build with Python 3.15.0a5.

[FAIL]
Traceback (most recent call last):
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/test/test_doctest.py", line 58, in test_repeatable
    self._testRun(suite)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/test/test_doctest.py", line 43, in _testRun
    self.assertEqual(5, result.successes)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 444, in assertEqual
    super().assertEqual(first, second, msg)
  File "/usr/lib64/python3.15/unittest/case.py", line 925, in assertEqual
    assertion_func(first, second, msg=msg)
  File "/usr/lib64/python3.15/unittest/case.py", line 918, in _baseAssertEqual
    raise self.failureException(msg)
twisted.trial.unittest.FailTest: 5 != 7

twisted.trial.test.test_doctest.RunnersTests.test_repeatable
===============================================================================
[FAIL]
Traceback (most recent call last):
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/test/test_loader.py", line 67, in test_findNonFile
    self.assertRaises(ValueError, self.loader.findByName, path)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 430, in assertRaises
    return context._handle(lambda: f(*args, **kwargs))
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 320, in _handle
    with self as context:
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 355, in __exit__
    self._testCase.fail(
twisted.trial.unittest.FailTest: builtins.AttributeError raised instead of ValueError:
 Traceback (most recent call last):
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 321, in _handle
    self._returnValue = obj()
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 430, in <lambda>
    return context._handle(lambda: f(*args, **kwargs))
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/runner.py", line 460, in findByName
    return self.loadFile(_name, recurse=recurse)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/runner.py", line 763, in loadFile
    module = SourceFileLoader(name, fileName).load_module()
builtins.AttributeError: 'SourceFileLoader' object has no attribute 'load_module'

twisted.trial.test.test_loader.FinderPy3Tests.test_findNonFile

[FAIL]
Traceback (most recent call last):
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/test/test_reporter.py", line 209, in test_doctestError
    self.assertSubstring(substring, output)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 590, in assertSubstring
    return self.failUnlessIn(substring, astring, msg)
  File "/builddir/build/BUILD/python-twisted-25.5.0-build/twisted-twisted-25.5.0/src/twisted/trial/_synctest.py", line 509, in assertIn
    raise self.failureException(msg or f"{containee!r} not in {container!r}")
twisted.trial.unittest.FailTest: '1/0' not in '\n===============================================================================\n[ERROR]\nTraceback (most recent call last):\n  File "/usr/lib64/python3.15/unittest/case.py", line 58, in testPartExecutor\n    yield\n  File "/usr/lib64/python3.15/unittest/case.py", line 667, in run\n    self._callTestMethod(testMethod)\n  File "/usr/lib64/python3.15/unittest/case.py", line 613, in _callTestMethod\n    result = method()\n  File "/usr/lib64/python3.15/doctest.py", line 2406, in runTest\n    results = runner.run(test, clear_globs=False)\n  File "/usr/lib64/python3.15/doctest.py", line 1598, in run\n    return self.__run(test, compileflags, out)\n  File "/usr/lib64/python3.15/doctest.py", line 1496, in __run\n    self.report_unexpected_exception(out, test, example,\n  File "/usr/lib64/python3.15/doctest.py", line 2329, in report_unexpected_exception\n    self._test_result.addSubTest(self._test_case, self._subTest(), exc_info)\nbuiltins.AttributeError: \'_AdaptedReporter\' object has no attribute \'addSubTest\'\n\nDoctest: twisted.trial.test.erroneous.unexpectedException\n-------------------------------------------------------------------------------\nRan 1 tests in 0.001s\n\nFAILED (errors=1)\n'

twisted.trial.test.test_reporter.ErrorReportingTests.test_doctestError
twisted.trial.test.test_reporter.UncleanWarningWrapperErrorReportingTests.test_doctestError

https://docs.python.org/3.15/whatsnew/3.15.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.15/fedora-rawhide-x86_64/10047698-python-twisted/

For all our attempts to build python-twisted with Python 3.15, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/package/python-twisted/

Testing and mass rebuild of packages is happening in copr.
You can follow these instructions to test locally in mock if your package builds with Python 3.15:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/

Let us know here if you have any questions.

Python 3.15 is planned to be included in Fedora 45.
To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.15.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires),
so if this package is required a lot, it's important for us to get it fixed soon.

We'd appreciate help from the people who know this package best,
but if you don't want to work on this now, let us know so we can try to work around it on our side.


Note You need to log in before you can comment on or make changes to this bug.