Skip to content

chore: require PyJWT >= 2.15.0 on Python 3.9+; remove stale requirements files - #866

Merged
nealrichardson merged 1 commit into
mainfrom
remove-stale-requirements
Oct 14, 2026
Merged

nealrichardson merged 1 commit into
mainfrom
remove-stale-requirements

Conversation

@nealrichardson

Copy link
Copy Markdown
Contributor

PyJWT floor

Open Dependabot alerts include about 20 PyJWT advisories (one critical) against the locked 2.13.0. The fixes are in 2.14.0 and 2.15.0, and both need Python ≥ 3.9, so a plain floor would make the package uninstallable on 3.8. This uses version markers instead:

"pyjwt>=2.4.0; python_version < '3.9'",
"pyjwt>=2.15.0; python_version >= '3.9'",

rsconnect only calls jwt.encode(..., algorithm="HS256") (rsconnect/json_web_token.py). Most of the advisories are in decoding and PyJWKClient paths that rsconnect doesn't use, so this is mostly to protect users' environments. One advisory (#143) has no fixed release yet. uv.lock was regenerated with uv 0.13.0; the only change is pyjwt 2.13.0 → 2.15.1 for 3.9+.

Remove requirements.txt and docs/requirements.txt

Both are out of date. The root file lists six, black, flake8, setuptools_scm and semver<3, none of which are dependencies anymore. Nothing in this repo reads either file: snyk.yml regenerates requirements.txt with uv pip compile before scanning, and the docs build uses uv run --group docs.

⚠️ The root file's header says some integration test suites rely on it (#649). I couldn't find any in this repo. If an external test setup still reads it, that setup needs updating before this merges.

Testing

  • Full test suite passes on Python 3.13.
  • tests/test_json_web_token.py passes on 3.8 (old PyJWT) and 3.13 (PyJWT 2.15.1).
  • uv lock --locked is clean.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-10-14 14:11 UTC

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

☂️ Python Coverage

current status: ✅

Overall Coverage

Lines Covered Coverage Threshold Status
8957 7733 86% 0% 🟢

New Files

No new covered files...

Modified Files

No covered modified files...

updated for commit: 16e8e90 by action🐍

@nealrichardson

Copy link
Copy Markdown
Contributor Author

CI failure is #864

@zackverham

Copy link
Copy Markdown
Contributor

If an external test setup still reads it, that setup needs updating before this merges.

Seems like the strat could be to just merge this and then fix-forward anything that breaks - does that feel right to you?

…nts files

PyJWT 2.15.0 fixes the open Dependabot advisories that have a fix. It
needs Python >= 3.9, so 3.8 keeps the old floor.

requirements.txt and docs/requirements.txt are out of date and unused
in this repo: snyk.yml regenerates requirements.txt before scanning, and
the docs build uses the `docs` dependency group.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@nealrichardson
nealrichardson force-pushed the remove-stale-requirements branch from 41a823f to 16e8e90 Compare October 14, 2026 13:45
@nealrichardson

Copy link
Copy Markdown
Contributor Author

If an external test setup still reads it, that setup needs updating before this merges.

Seems like the strat could be to just merge this and then fix-forward anything that breaks - does that feel right to you?

Yes, I think #649 is stale because we've done most of that already.

@nealrichardson
nealrichardson enabled auto-merge (squash) October 14, 2026 13:47
@nealrichardson
nealrichardson enabled auto-merge (squash) October 14, 2026 14:10
@nealrichardson
nealrichardson merged commit c781f9b into main Oct 14, 2026
28 checks passed
@nealrichardson
nealrichardson deleted the remove-stale-requirements branch October 14, 2026 14:11
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.

3 participants