Add Python 3.13/3.14 support and docs updates#4248
Conversation
Greptile SummaryThis PR adds official Python 3.13 and 3.14 support to NVFlare by updating packaging metadata, CI matrices, runtime code, tests, and documentation. It is a well-scoped compatibility lift that addresses several concrete Python version-specific issues: the Key changes:
Confidence Score: 4/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[PR: Python 3.13/3.14 Support] --> B[Packaging & Metadata]
A --> C[CI Workflows]
A --> D[Runtime Fixes]
A --> E[Test Fixes]
A --> F[Docs]
B --> B1[setup.cfg: add classifiers\nPy3.13 + 3.14]
B --> B2[setup.cfg: HE extra\ntenseal 0.3.15 for <3.13\ntenseal 0.3.16 for 3.13–3.14\nnone for 3.14+]
B --> B3[setup.cfg: PSI extra\nopenmined.psi <3.14 only]
B --> B4[setup.py: replace distutils\ncopy_tree → shutil.copytree]
B --> B5[pyproject.toml: add\npy313/py314 black targets]
C --> C1[premerge.yml: new\nstyle-check job on Py3.14]
C --> C2[premerge.yml: expand\nunit-tests matrix to Py3.13/3.14]
C --> C3[auto-format.yml: bump\nrunner to Py3.14 + black 25.9.0]
C --> C4[runtest.sh: --numprocesses flag\n+ refactored arg parsing]
D --> D1[server_runner.py:\nbreak outside finally\n→ Python 3.14 SyntaxError fix]
D --> D2[client_runner.py:\nfinally → except BaseException\n+ post-execute abort check]
E --> E1[component_builder_test.py:\ntuple version comparison\nreplaces hardcoded list]
E --> E2[stats_def_test.py:\nfix broken str.__eq__ assertion\nuse json.loads round-trip]
E --> E3[server_memory_gc_rounds_test.py:\npytest.importorskip tenseal]
F --> F1[installation.rst:\nHE/PSI Py3.14 notes\nvenv link fix]
F --> F2[release_notes/flare_272.rst:\nPy3.13/3.14 section]
Last reviewed commit: 22228ff |
|
/build |
Additional Comments (1)
The previous version called It is worth adding a brief comment noting why |
…thon-support # Conflicts: # .gitignore
|
/build |
…thon-support # Conflicts: # .github/workflows/premerge.yml
|
/build |
chesterxgchen
left a comment
There was a problem hiding this comment.
although most of these changes are trivial, I think the real tests are if the number of our examples are able to continue function with these changes, Its hard to tell from this PR
That is true, but all unit tests and the ci/cd test pass (still on 3.12). At some point we need to trust those. But we need to decide what version we want to run cicd and the QA tests on |
|
/build |
YuanTingHsieh
left a comment
There was a problem hiding this comment.
if certain lib only supports 3.13 (not 3.14), I can change our Jenkins CI to use 3.13 to test.
|
/build |
Summary