Skip to content

Add Python 3.14 support#146

Merged
dustinblack merged 4 commits into
mainfrom
python-3.14-support
Jun 11, 2026
Merged

Add Python 3.14 support#146
dustinblack merged 4 commits into
mainfrom
python-3.14-support

Conversation

@dustinblack

Copy link
Copy Markdown
Member

Summary

  • Fix ForwardRef._evaluate() breakage under PEP 649 (Python 3.14 deferred annotation evaluation). The _resolve_forward method now uses the stable typing.evaluate_forward_ref() API on 3.14+ and passes module globals on all versions, fixing NameError failures when resolving self-referential schema types like StringEnumSchema.
  • Update readthedocs.yaml from Python 3.9 / Ubuntu 20.04 to Python 3.12 / Ubuntu 22.04 (3.9 is EOL and below the SDK's minimum).
  • Refresh poetry.lock — updates docformatter 1.7.5→1.7.8 which drops the broken untokenize dependency, fixing poetry install on Python 3.14.
  • Use ARCALOT_POETRY_VERSION org variable in CI workflow instead of hardcoded version.

Test plan

  • All 167 tests pass on Python 3.14.5
  • All 167 tests pass on Python 3.13.13 (no regression)
  • After merging, set org variable ARCALOT_PYTHON_SUPPORTED_VERSIONS to ['3.12', '3.13', '3.14']
  • Set new org variable ARCALOT_POETRY_VERSION to 1.8.3

🤖 Generated with Claude Code

dustinblack and others added 4 commits June 11, 2026 11:22
Fix ForwardRef resolution for PEP 649 compatibility in Python 3.14.
The _resolve_forward method now uses the stable public API
typing.evaluate_forward_ref() on Python 3.14+ and passes module
globals on all versions, fixing NameError failures caused by
deferred annotation evaluation.

Additional changes:
- Update readthedocs.yaml to Python 3.12 and Ubuntu 22.04
  (Python 3.9 is EOL and below the SDK's minimum)
- Refresh poetry.lock (docformatter 1.7.5->1.7.8 drops broken
  untokenize dependency, fixing poetry install on Python 3.14)
- Use ARCALOT_POETRY_VERSION org variable in CI workflow

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docformatter 1.7.8 introduced a regression where it crashes with
ValueError in tokenize.untokenize when processing files with
trailing whitespace on blank lines. This affects schema.py.

See: PyCQA/docformatter#355

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Apply docformatter auto-fixes to docstrings in example_plugin.py,
atp.py, and plugin.py. These are pre-existing formatting issues
that newer versions of docformatter now flag.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docformatter 1.7.8 crashes with ValueError on schema.py
(upstream: PyCQA/docformatter#355).
Versions < 1.7.8 cannot be used because they depend on
untokenize, which fails to build on Python 3.14.

Use find to pass files explicitly, excluding schema.py.

Tracking issue: #147

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment thread .github/workflows/build.yml
Comment thread src/arcaflow_plugin_sdk/schema.py
@dustinblack dustinblack merged commit 6a2714d into main Jun 11, 2026
4 checks passed
@dustinblack dustinblack deleted the python-3.14-support branch June 11, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants