Skip to content

Commit 27075ea

Browse files
committed
Use fissix to replace lib2to3 under Python >=3.13
Add entries to `sys.modules` so that `future`/`past` can find lib2to3 modules.
1 parent 0ddc5cf commit 27075ea

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

lib/galaxy/dependencies/pinned-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ email-validator==2.2.0 ; python_version >= "3.8" and python_version < "3.14"
6767
exceptiongroup==1.2.2 ; python_version >= "3.8" and python_version < "3.11"
6868
fastapi-slim==0.115.2 ; python_version >= "3.8" and python_version < "3.14"
6969
filelock==3.16.1 ; python_version >= "3.8" and python_version < "3.14"
70+
fissix==24.4.24 ; python_version >= "3.13" and python_version < "3.14"
7071
frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "3.14"
7172
fs==2.4.16 ; python_version >= "3.8" and python_version < "3.14"
7273
fsspec==2024.9.0 ; python_version >= "3.8" and python_version < "3.14"

lib/galaxy/util/template.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
11
"""Entry point for the usage of Cheetah templating within Galaxy."""
22

3+
import sys
34
import traceback
4-
from lib2to3.refactor import RefactoringTool
55

66
from Cheetah.Compiler import Compiler
77
from Cheetah.NameMapper import NotFound
88
from Cheetah.Parser import ParseError
99
from Cheetah.Template import Template
1010
from packaging.version import Version
11-
from past.translation import myfixes
1211

1312
from galaxy.util.tree_dict import TreeDict
1413
from . import unicodify
1514

15+
if sys.version_info >= (3, 13):
16+
import fissix
17+
from fissix import (
18+
fixes as fissix_fixes,
19+
pgen2 as fissix_pgen2,
20+
refactor as fissix_refactor,
21+
)
22+
23+
sys.modules["lib2to3"] = fissix
24+
sys.modules["lib2to3.fixes"] = fissix_fixes
25+
sys.modules["lib2to3.pgen2"] = fissix_pgen2
26+
sys.modules["lib2to3.refactor"] = fissix_refactor
27+
28+
from lib2to3.refactor import RefactoringTool
29+
30+
from past.translation import myfixes
31+
1632
# Skip libpasteurize fixers, which make sure code is py2 and py3 compatible.
1733
# This is not needed, we only translate code on py3.
1834
myfixes = [f for f in myfixes if not f.startswith("libpasteurize")]

packages/util/setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ jstree =
5454
dictobj
5555
template =
5656
CT3>=3.3.3
57+
fissix;python_version>='3.13'
5758
future>=1.0.0
5859
config_template =
5960
Jinja2

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ docutils = "!=0.17, !=0.17.1"
5858
dparse = "*"
5959
edam-ontology = "*"
6060
fastapi-slim = ">=0.111.0"
61+
fissix = { version = "*", python = ">=3.13" }
6162
fs = "*"
6263
future = ">=1.0.0" # Python 3.12 support
6364
graphene = "*"

0 commit comments

Comments
 (0)