diff --git a/lib/galaxy/dependencies/pinned-requirements.txt b/lib/galaxy/dependencies/pinned-requirements.txt index 827d67b8354d..6227984653a6 100644 --- a/lib/galaxy/dependencies/pinned-requirements.txt +++ b/lib/galaxy/dependencies/pinned-requirements.txt @@ -66,6 +66,7 @@ email-validator==2.2.0 exceptiongroup==1.2.2 ; python_full_version < '3.11' fastapi-slim==0.115.4 filelock==3.16.1 +fissix==24.4.24 ; python_full_version >= '3.13' frozenlist==1.5.0 fs==2.4.16 fsspec==2024.10.0 diff --git a/lib/galaxy/util/template.py b/lib/galaxy/util/template.py index 9b7f7965592e..01a2cd68c840 100644 --- a/lib/galaxy/util/template.py +++ b/lib/galaxy/util/template.py @@ -1,18 +1,34 @@ """Entry point for the usage of Cheetah templating within Galaxy.""" +import sys import traceback -from lib2to3.refactor import RefactoringTool from Cheetah.Compiler import Compiler from Cheetah.NameMapper import NotFound from Cheetah.Parser import ParseError from Cheetah.Template import Template from packaging.version import Version -from past.translation import myfixes from galaxy.util.tree_dict import TreeDict from . import unicodify +if sys.version_info >= (3, 13): + import fissix + from fissix import ( + fixes as fissix_fixes, + pgen2 as fissix_pgen2, + refactor as fissix_refactor, + ) + + sys.modules["lib2to3"] = fissix + sys.modules["lib2to3.fixes"] = fissix_fixes + sys.modules["lib2to3.pgen2"] = fissix_pgen2 + sys.modules["lib2to3.refactor"] = fissix_refactor + +from lib2to3.refactor import RefactoringTool + +from past.translation import myfixes + # Skip libpasteurize fixers, which make sure code is py2 and py3 compatible. # This is not needed, we only translate code on py3. myfixes = [f for f in myfixes if not f.startswith("libpasteurize")] diff --git a/packages/util/setup.cfg b/packages/util/setup.cfg index 09380cd65be1..808606b77042 100644 --- a/packages/util/setup.cfg +++ b/packages/util/setup.cfg @@ -54,6 +54,7 @@ jstree = dictobj template = CT3>=3.3.3 + fissix;python_version>='3.13' future>=1.0.0 config_template = Jinja2 diff --git a/pyproject.toml b/pyproject.toml index 145ddce07bf9..b50664156ef4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "dparse", "edam-ontology", "fastapi-slim>=0.111.0", + "fissix ; python_version>='3.13'", "fs", "future>=1.0.0", # Python 3.12 support "graphene",