Visitar URL original
Compatibility with Python-3.13 · Issue #640 · PythonCharmers/python-future · GitHub
Skip to content

Compatibility with Python-3.13 #640

Description

@sagitter

Hi all.

Please, if reasonable for you, render python-future compatible with newer Python-3.13

uu and lib2to3 modules are no longer available and some tests fail:

==================================== ERRORS ====================================
_________ ERROR collecting tests/test_future/test_email_generation.py __________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_email_generation.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_email_generation.py:6: in <module>
    from future.backports.email.mime.multipart import MIMEMultipart
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/mime/multipart.py:12: in <module>
    from future.backports.email.mime.base import MIMEBase
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/mime/base.py:7: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
__________ ERROR collecting tests/test_future/test_email_multipart.py __________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_email_multipart.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_email_multipart.py:6: in <module>
    import future.backports.email.mime.multipart
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/mime/multipart.py:12: in <module>
    from future.backports.email.mime.base import MIMEBase
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/mime/base.py:7: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
_____________ ERROR collecting tests/test_future/test_futurize.py ______________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_futurize.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_futurize.py:9: in <module>
    from libfuturize.fixer_util import is_shebang_comment, is_encoding_comment
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/libfuturize/fixer_util.py:11: in <module>
    from lib2to3.fixer_util import (FromImport, Newline, is_import,
E   ModuleNotFoundError: No module named 'lib2to3'
__________ ERROR collecting tests/test_future/test_http_cookiejar.py ___________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_http_cookiejar.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_http_cookiejar.py:14: in <module>
    import future.backports.urllib.request as urllib_request
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/urllib/request.py:97: in <module>
    from future.backports.http import client as http_client
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/http/client.py:76: in <module>
    from future.backports.email import parser as email_parser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/parser.py:15: in <module>
    from future.backports.email.feedparser import FeedParser, BytesFeedParser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/feedparser.py:32: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
______________ ERROR collecting tests/test_future/test_httplib.py ______________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_httplib.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_httplib.py:14: in <module>
    from future.backports.http import client
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/http/client.py:76: in <module>
    from future.backports.email import parser as email_parser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/parser.py:15: in <module>
    from future.backports.email.feedparser import FeedParser, BytesFeedParser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/feedparser.py:32: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
________ ERROR collecting tests/test_future/test_libfuturize_fixers.py _________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_libfuturize_fixers.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_libfuturize_fixers.py:15: in <module>
    from lib2to3 import pygram, pytree, refactor, fixer_util
E   ModuleNotFoundError: No module named 'lib2to3'
______________ ERROR collecting tests/test_future/test_urllib.py _______________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_urllib.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_urllib.py:14: in <module>
    from future.backports.urllib import request as urllib_request
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/urllib/request.py:97: in <module>
    from future.backports.http import client as http_client
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/http/client.py:76: in <module>
    from future.backports.email import parser as email_parser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/parser.py:15: in <module>
    from future.backports.email.feedparser import FeedParser, BytesFeedParser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/feedparser.py:32: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
______________ ERROR collecting tests/test_future/test_urllib2.py ______________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_future/test_urllib2.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_future/test_urllib2.py:11: in <module>
    import future.backports.urllib.request as urllib_request
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/urllib/request.py:97: in <module>
    from future.backports.http import client as http_client
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/http/client.py:76: in <module>
    from future.backports.email import parser as email_parser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/parser.py:15: in <module>
    from future.backports.email.feedparser import FeedParser, BytesFeedParser
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/feedparser.py:32: in <module>
    from future.backports.email import message
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/future/backports/email/message.py:13: in <module>
    import uu
E   ModuleNotFoundError: No module named 'uu'
_____________ ERROR collecting tests/test_past/test_translation.py _____________
ImportError while importing test module '/builddir/build/BUILD/python-future-0.18.3/tests/test_past/test_translation.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_past/test_translation.py:19: in <module>
    from past.translation import install_hooks, remove_hooks, common_substring
../../BUILDROOT/future-0.18.3-8.fc40.x86_64/usr/lib/python3.13/site-packages/past/translation/__init__.py:41: in <module>
    from lib2to3.pgen2.parse import ParseError
E   ModuleNotFoundError: No module named 'lib2to3'

=========================== short test summary info ============================
ERROR tests/test_future/test_email_generation.py
ERROR tests/test_future/test_email_multipart.py
ERROR tests/test_future/test_futurize.py
ERROR tests/test_future/test_http_cookiejar.py
ERROR tests/test_future/test_httplib.py
ERROR tests/test_future/test_libfuturize_fixers.py
ERROR tests/test_future/test_urllib.py
ERROR tests/test_future/test_urllib2.py
ERROR tests/test_past/test_translation.py
!!!!!!!!!!!!!!!!!!! Interrupted: 9 errors during collection !!!!!!!!!!!!!!!!!!!!

Activity

  1. nsoranzo commented on Sep 20, 2024

    @nsoranzo
    Contributor

    I've opened #644 to get rid of uu.
    For lib2to3, we may consider adding to the backports or replace with https://github.com/amyreese/fissix .

  2. MaxXor commented on Dec 18, 2024

    @MaxXor

    Hello, is this library still under active development? Unfortunately I'm considering to remove it from my project due to lack of python 3.13 support and search for a replacement.

  3. edschofield commented on Dec 18, 2024

    @edschofield
    Contributor

    Hi @MaxXor , No, the library is no longer in active development. Please see the note here about the project's status.

    Python 3.13 removes the 2to3 machinery which future depends on heavily. So future could only support Python 3.13 if someone is doing the work of maintaining 2to3 outside the regular Python project tree.

    The need for the future project is getting further and further in the past. I'm curious about your use-case: why do you want in 2024-2025 to provide compatibility with both Python 2.x and Python 3.13?

  4. MaxXor commented on Dec 18, 2024

    @MaxXor

    I see, thanks for the insights @edschofield. I've been using this library in a smart meter project for a long time. Unfortunately I have to support some legacy systems as well. 😢 I think I'll stick with python 3.12 for the time being until I can drop python 2.7 support altogether in the near future.

  5. bobpaul commented on Jan 14, 2025

    @bobpaul

    I'm curious about your use-case: why do you want in 2024-2025 to provide compatibility with both Python 2.x and Python 3.13?

    A typical use case would be a user of an tool that has been abandoned by its original developer but still works fine. That user doesn't care if future still enables the project to run on python2, but when apt dist-upgrade provides python13, their tool will break and they might not know what to do.

  6. added a commit that references this issue on Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions