facebookresearch/fairseq

Add support for Python 3.12+

Open

#5,634 建立於 2025年9月5日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)Python (29,107 star) (6,224 fork)batch import
enhancementhelp wantedneeds triage

描述

🚀 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!

貢獻者指南

Add support for Python 3.12+ · facebookresearch/fairseq#5634 | Good First Issue