fairseq icon indicating copy to clipboard operation
fairseq copied to clipboard

Add support for Python 3.12+

Open akki opened this issue 4 months ago • 3 comments

🚀 Feature Request

Can we please add support for Python 3.12?

Motivation

Currently, Python 3.13.7 is out. Newer releases of other systems have started moving towards at least Python 3.12. In my case, Triton inference server's newer versions are being released with Python 3.12, but I am hitting issues when I run fairseq with them.

Pitch

The requirements section mentions that Python>=3.8 are supported. I recently tried running it with Python3.12 and ran into issues due to dataclass - ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory. I believe, the code uses dataclasses with mutable defaults, which Python 3.12 now rejects.

Additional context

Full stack trace that I received:

root@adoshi:/ python3
Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fairseq
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/fairseq/fairseq/__init__.py", line 20, in <module>
    from fairseq.distributed import utils as distributed_utils
  File "/tmp/fairseq/fairseq/distributed/__init__.py", line 7, in <module>
    from .fully_sharded_data_parallel import (
  File "/tmp/fairseq/fairseq/distributed/fully_sharded_data_parallel.py", line 10, in <module>
    from fairseq.dataclass.configs import DistributedTrainingConfig
  File "/tmp/fairseq/fairseq/dataclass/__init__.py", line 6, in <module>
    from .configs import FairseqDataclass
  File "/tmp/fairseq/fairseq/dataclass/configs.py", line 1127, in <module>
    @dataclass
     ^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 1268, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 1258, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 994, in _process_class
    cls_fields.append(_get_field(cls, name, type, kw_only))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 852, in _get_field
    raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
>>>
root@adoshi:/

PS - I am first-timer on this repo. Please let me know if you'd like me to change/improve something in this request. Thanks!

akki avatar Sep 05 '25 01:09 akki

Python 3.14 is out :(

yamada-sexta avatar Oct 31 '25 23:10 yamada-sexta

+1 this is important

Xudangliatiger avatar Nov 02 '25 19:11 Xudangliatiger

+1 this issue has made me working for a whole day ...

YuntaoOvO avatar Nov 05 '25 07:11 YuntaoOvO