Skip to content

feat!: release new version of PHP SDK library#599

Draft
gjtorikian wants to merge 1 commit intomainfrom
next-major
Draft

feat!: release new version of PHP SDK library#599
gjtorikian wants to merge 1 commit intomainfrom
next-major

Conversation

@gjtorikian
Copy link
Contributor

Description

This PR will be used as a base for future work mapping to the autogenerated Python SDK.

It is, at the least, a major release, because we are dropping support for Python versions < 3.10.

@gjtorikian gjtorikian requested review from a team as code owners March 25, 2026 21:30
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 25, 2026

Greptile Summary

This PR drops Python 3.8 and 3.9 support from the workos-python SDK, raising the minimum to Python 3.10, and reorganises CI by extracting linting/formatting/type-checking into a dedicated lint.yml workflow. Dependency specifiers that were previously conditionalised on Python version (pyjwt, nox, nox-uv) are simplified, and the lockfile is regenerated accordingly.

Key changes:

  • requires-python bumped to >=3.10 in pyproject.toml; Python version conditionals on pyjwt, nox, and nox-uv removed
  • noxfile.py and both CI matrices updated to ["3.10", "3.11", "3.12", "3.13", "3.14"]
  • New lint.yml workflow consolidates ruff format check, ruff lint, and mypy into a single job running on Python 3.14
  • CLAUDE.md updated to reflect the new supported version range
  • uv.lock regenerated, removing Python 3.8/3.9-specific package variants

Notable observations:

  • The PR title reads "feat!: release new version of PHP SDK library" — this should say "Python SDK" to avoid confusing git history
  • lint.yml runs uv sync --locked --dev (all dev groups) when only the lint and type_check groups are needed
  • six==1.17.0 remains as a pinned test dependency despite being a Python 2/3 compatibility shim that is no longer necessary at Python 3.10+

Confidence Score: 5/5

  • This PR is safe to merge; the changes are mechanical version-support drops with clean dependency simplification and no behavioural changes to SDK code.
  • All changes are confined to CI configuration, tooling metadata, and the lockfile. No SDK source code is modified, no logic is altered, and the resulting setup correctly enforces Python >=3.10 everywhere (pyproject.toml, noxfile.py, CI matrices, lockfile). The open items (PR title, full-dev install in lint.yml, stale six dependency) are minor non-blocking cleanups.
  • No files require special attention; pyproject.toml has a minor stale six test dependency worth cleaning up as a follow-up.

Important Files Changed

Filename Overview
.github/workflows/ci.yml Drops Python 3.8 and 3.9 from the test and smoke-test matrices; removes lint/format/typecheck steps (now delegated to the new lint.yml workflow).
.github/workflows/lint.yml New dedicated lint workflow running ruff format check, ruff lint, and mypy on Python 3.14. Installs all dev dependencies via uv sync --locked --dev when only lint and type_check groups are needed.
pyproject.toml Bumps requires-python to >=3.10, simplifies pyjwt and nox version specifiers by removing Python-version-conditional markers. The six==1.17.0 test dependency is now obsolete with Python 3.8/3.9 dropped.
noxfile.py Updated PYTHON_VERSIONS list to remove 3.8 and 3.9, now matching the CI matrix exactly.
CLAUDE.md Updated supported Python version range from 3.8–3.14 to 3.10–3.14; removed trailing newline.
uv.lock Lockfile regenerated to reflect >=3.10 minimum; removes Python 3.8/3.9-specific package variants (cffi 1.17.1, anyio 4.5.2, etc.) and resolution markers.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    PR[Pull Request / Push to main]

    PR --> CI[ci.yml]
    PR --> LINT[lint.yml]

    CI --> TEST["Test job\n(Python 3.10–3.14 matrix)"]
    CI --> SMOKE["Smoke-test job\n(autorelease: pending label only)\n(Python 3.10–3.14 matrix)"]

    TEST --> INSTALL_T[uv sync --locked --dev]
    INSTALL_T --> PYTEST[uv run pytest]

    SMOKE --> INSTALL_S[uv sync]
    INSTALL_S --> BUILD[uv build]
    BUILD --> SMOKE_WHEEL[Smoke test wheel]
    BUILD --> SMOKE_SDIST[Smoke test sdist]

    LINT --> LINT_JOB["Lint job\n(Python 3.14 only)"]
    LINT_JOB --> INSTALL_L[uv sync --locked --dev]
    INSTALL_L --> FORMAT[ruff format --check]
    INSTALL_L --> RUFF[ruff check]
    INSTALL_L --> MYPY[mypy]
Loading

Comments Outside Diff (2)

  1. .github/workflows/ci.yml, line 1 (link)

    P2 PR title references PHP SDK

    The PR title reads "feat!: release new version of PHP SDK library", but this repository is the Python SDK. This will create confusing history when someone searches the changelog or git log. The title should reference "Python SDK" instead.

  2. pyproject.toml, line 33 (link)

    P2 six test dependency is obsolete after dropping Python 2/3 compat concerns

    six==1.17.0 is a Python 2/3 compatibility library. With the minimum version now raised to Python 3.10, there is no longer any reason to carry this dependency in the test group. If it is genuinely used in the test suite it should remain, but it is worth confirming whether any test file still imports it before leaving it pinned here.

Reviews (1): Last reviewed commit: "feat! support Python 3.10 at a minimum" | Re-trigger Greptile

enable-cache: true

- name: Install dependencies
run: uv sync --locked --dev
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Lint workflow installs all dev dependencies unnecessarily

uv sync --locked --dev installs every dependency group (test, nox, type_check, and lint), but this job only needs lint and type_check. Consider restricting the install to keep the job lean:

Suggested change
run: uv sync --locked --dev
run: uv sync --locked --only-group lint --only-group type_check

@gjtorikian gjtorikian marked this pull request as draft March 26, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant