ITADN

Add support for Python 3.12+

#5634Openakki 创建于 2025-09-05
enhancementhelp wantedneeds triage
A
akkicommented
## 🚀 Feature Request Can we please add support for Python 3.12? ### Motivation Currently, [Python 3.13.7](https://www.python.org/downloads/release/python-3137/) 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](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver/tags) are being released with Python 3.12, but I am hitting issues when I run fairseq with them. ### Pitch The [requirements section]( https://github.com/facebookresearch/fairseq?tab=readme-ov-file#requirements-and-installation) 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: ```bash 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!
2 条评论