Skip to content

chore(deps): bump pyjwt from 2.10.1 to 2.12.0#110969

Merged
michelletran-sentry merged 3 commits into
masterfrom
dependabot/uv/pyjwt-2.12.0
Mar 31, 2026
Merged

chore(deps): bump pyjwt from 2.10.1 to 2.12.0#110969
michelletran-sentry merged 3 commits into
masterfrom
dependabot/uv/pyjwt-2.12.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Mar 18, 2026

Bumps pyjwt from 2.10.1 to 2.12.0.

Release notes

Sourced from pyjwt's releases.

2.12.0

Security

What's Changed

New Contributors

Full Changelog: jpadilla/pyjwt@2.11.0...2.12.0

2.11.0

What's Changed

... (truncated)

Changelog

Sourced from pyjwt's changelog.

v2.12.0 <https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0>__

Fixed


- Annotate PyJWKSet.keys for pyright by @tamird in `[#1134](https://github.com/jpadilla/pyjwt/issues/1134) <https://github.com/jpadilla/pyjwt/pull/1134>`__
- Close ``HTTPError`` response to prevent ``ResourceWarning`` on Python 3.14 by @veeceey in `[#1133](https://github.com/jpadilla/pyjwt/issues/1133) <https://github.com/jpadilla/pyjwt/pull/1133>`__
- Do not keep ``algorithms`` dict in PyJWK instances by @akx in `[#1143](https://github.com/jpadilla/pyjwt/issues/1143) <https://github.com/jpadilla/pyjwt/pull/1143>`__
- Validate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by @dmbs335 in `GHSA-752w-5fwx-jx9f <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f>`__
- Use PyJWK algorithm when encoding without explicit algorithm in `[#1148](https://github.com/jpadilla/pyjwt/issues/1148) <https://github.com/jpadilla/pyjwt/pull/1148>`__

Added

  • Docs: Add PyJWKClient API reference and document the two-tier caching system (JWK Set cache and signing key LRU cache).

v2.11.0 <https://github.com/jpadilla/pyjwt/compare/2.10.1...2.11.0>__

Fixed


- Enforce ECDSA curve validation per RFC 7518 Section 3.4.
- Fix build system warnings by @kurtmckee in `[#1105](https://github.com/jpadilla/pyjwt/issues/1105) <https://github.com/jpadilla/pyjwt/pull/1105>`__
- Validate key against allowed types for Algorithm family in `[#964](https://github.com/jpadilla/pyjwt/issues/964) <https://github.com/jpadilla/pyjwt/pull/964>`__
- Add iterator for JWKSet in `[#1041](https://github.com/jpadilla/pyjwt/issues/1041) <https://github.com/jpadilla/pyjwt/pull/1041>`__
- Validate `iss` claim is a string during encoding and decoding by @pachewise in `[#1040](https://github.com/jpadilla/pyjwt/issues/1040) <https://github.com/jpadilla/pyjwt/pull/1040>`__
- Improve typing/logic for `options` in decode, decode_complete by @pachewise in `[#1045](https://github.com/jpadilla/pyjwt/issues/1045) <https://github.com/jpadilla/pyjwt/pull/1045>`__
- Declare float supported type for lifespan and timeout by @nikitagashkov in `[#1068](https://github.com/jpadilla/pyjwt/issues/1068) <https://github.com/jpadilla/pyjwt/pull/1068>`__
- Fix ``SyntaxWarning``\s/``DeprecationWarning``\s caused by invalid escape sequences by @kurtmckee in `[#1103](https://github.com/jpadilla/pyjwt/issues/1103) <https://github.com/jpadilla/pyjwt/pull/1103>`__
- Development: Build a shared wheel once to speed up test suite setup times by @kurtmckee in `[#1114](https://github.com/jpadilla/pyjwt/issues/1114) <https://github.com/jpadilla/pyjwt/pull/1114>`__
- Development: Test type annotations across all supported Python versions,
  increase the strictness of the type checking, and remove the mypy pre-commit hook
  by @kurtmckee in `[#1112](https://github.com/jpadilla/pyjwt/issues/1112) <https://github.com/jpadilla/pyjwt/pull/1112>`__

Added

  • Support Python 3.14, and test against PyPy 3.10 and 3.11 by @​kurtmckee in [#1104](https://github.com/jpadilla/pyjwt/issues/1104) <https://github.com/jpadilla/pyjwt/pull/1104>__
  • Development: Migrate to build to test package building in CI by @​kurtmckee in [#1108](https://github.com/jpadilla/pyjwt/issues/1108) <https://github.com/jpadilla/pyjwt/pull/1108>__
  • Development: Improve coverage config and eliminate unused test suite code by @​kurtmckee in [#1115](https://github.com/jpadilla/pyjwt/issues/1115) <https://github.com/jpadilla/pyjwt/pull/1115>__
  • Docs: Standardize CHANGELOG links to PRs by @​kurtmckee in [#1110](https://github.com/jpadilla/pyjwt/issues/1110) <https://github.com/jpadilla/pyjwt/pull/1110>__
  • Docs: Fix Read the Docs builds by @​kurtmckee in [#1111](https://github.com/jpadilla/pyjwt/issues/1111) <https://github.com/jpadilla/pyjwt/pull/1111>__
  • Docs: Add example of using leeway with nbf by @​djw8605 in [#1034](https://github.com/jpadilla/pyjwt/issues/1034) <https://github.com/jpadilla/pyjwt/pull/1034>__
  • Docs: Refactored docs with autodoc; added PyJWS and jwt.algorithms docs by @​pachewise in [#1045](https://github.com/jpadilla/pyjwt/issues/1045) <https://github.com/jpadilla/pyjwt/pull/1045>__
  • Docs: Documentation improvements for "sub" and "jti" claims by @​cleder in [#1088](https://github.com/jpadilla/pyjwt/issues/1088) <https://github.com/jpadilla/pyjwt/pull/1088>__
  • Development: Add pyupgrade as a pre-commit hook by @​kurtmckee in [#1109](https://github.com/jpadilla/pyjwt/issues/1109) <https://github.com/jpadilla/pyjwt/pull/1109>__
  • Add minimum key length validation for HMAC and RSA keys (CWE-326). Warns by default via InsecureKeyLengthWarning when keys are below

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Mar 18, 2026
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Mar 18, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 18, 2026

Backend Test Failures

Failures on 6dd5487 in this run:

tests/sentry/conduit/test_tasks.py::StreamDemoDataTest::test_stream_demo_data_sends_all_phaseslog
tests/sentry/conduit/test_tasks.py:271: in test_stream_demo_data_sends_all_phases
    stream_demo_data(org_id=org_id, channel_id=channel_id)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:89: in __call__
    return self._func(*args, **kwargs)
src/sentry/conduit/tasks.py:41: in stream_demo_data
    token = generate_jwt(subject="demo")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/hybridcloud/tasks/test_deliver_webhooks.py::DrainMailboxTest::test_drain_codecov_not_filtered_other_ownerlog
tests/sentry/hybridcloud/tasks/test_deliver_webhooks.py:488: in test_drain_codecov_not_filtered_other_owner
    drain_mailbox(records[0].id)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:89: in __call__
    return self._func(*args, **kwargs)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:327: in drain_mailbox
    deliver_message(record)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:611: in deliver_message
    perform_request(payload)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:631: in perform_request
    perform_codecov_request(payload)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:831: in perform_codecov_request
    response = client.post(
src/sentry/codecov/client.py:123: in post
    token = self._create_jwt()
src/sentry/codecov/client.py:60: in _create_jwt
    return jwt.encode(claims, self.signing_secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 4 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_client.py::BitbucketApiClientTest::test_check_no_filelog
tests/sentry/integrations/bitbucket/test_client.py:114: in test_check_no_file
    self.bitbucket_client.check_file(self.repo, path, version)
src/sentry/integrations/bitbucket/client.py:174: in check_file
    return self.head_cached(
src/sentry/shared_integrations/client/base.py:374: in head_cached
    return self._get_cached(path, "HEAD", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:351: in _get_cached
    result = self.request(method, path, *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/utils/test_jwt.py::test_decode_audiencelog
tests/sentry/utils/test_jwt.py:173: in test_decode_audience
    token = jwt_utils.encode(payload, "secret")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/utils/test_jwt.py::test_decode_tampered_payloadlog
tests/sentry/utils/test_jwt.py:197: in test_decode_tampered_payload
    token = jwt_utils.encode(claims, "secret")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_get_create_issue_configlog
tests/sentry/integrations/bitbucket/test_issues.py:198: in test_get_create_issue_config
    assert installation.get_create_issue_config(self.group, self.user) == [
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/integrations/bitbucket/issues.py:71: in get_create_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_get_create_issue_config_with_long_titlelog
tests/sentry/integrations/bitbucket/test_issues.py:258: in test_get_create_issue_config_with_long_title
    config = installation.get_create_issue_config(event.group, self.user)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/integrations/bitbucket/issues.py:71: in get_create_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira_server/test_webhooks.py::JiraServerWebhookEndpointTest::test_post_missing_default_identitylog
tests/sentry/integrations/jira_server/test_webhooks.py:48: in test_post_missing_default_identity
    self.get_success_response(self.jwt_token, **EXAMPLE_PAYLOAD)
tests/sentry/integrations/jira_server/test_webhooks.py:27: in jwt_token
    return jwt.encode(
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 19 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/utils/test_jwt.py::test_encode_rs256log
tests/sentry/utils/test_jwt.py:237: in test_encode_rs256
    encoded_hs256 = jwt_utils.encode(claims, "secret", headers={**headers, "alg": "HS256"})
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_installed.py::BitbucketInstalledEndpointTest::test_disable_plugin_when_fully_migratedlog
src/sentry/tasks/base.py:206: in wrapped
    return func(*args, **kwargs)
src/sentry/integrations/tasks/migrate_repo.py:36: in migrate_repo
    if hasattr(installation, "has_repo_access") and installation.has_repo_access(repo):
src/sentry/integrations/bitbucket/integration.py:152: in has_repo_access
    client.get_hooks(repo.config["name"])
src/sentry/integrations/bitbucket/client.py:124: in get_hooks
    return self.get(path=BitbucketAPIPath.repository_hooks.format(repo=repo))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 20 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.

During handling of the above exception, another exception occurred:
tests/sentry/integrations/bitbucket/test_installed.py:237: in test_disable_plugin_when_fully_migrated
    BitbucketIntegrationProvider().post_install(
src/sentry/integrations/bitbucket/integration.py:234: in post_install
    migrate_repo.apply_async(
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:128: in apply_async
    self._func(*args, **kwargs)
src/sentry/tasks/base.py:238: in wrapped
    retry_task(exc, raise_on_no_retries=raise_on_no_retries)
src/sentry/taskworker/retry.py:56: in retry_task
    raise RetryTaskError()
E   sentry.taskworker.retry.RetryTaskError
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_get_link_issue_configlog
tests/sentry/integrations/bitbucket/test_issues.py:304: in test_get_link_issue_config
    assert installation.get_link_issue_config(self.group) == [
src/sentry/integrations/bitbucket/issues.py:114: in get_link_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira_server/test_webhooks.py::JiraServerWebhookEndpointTest::test_post_empty_tokenlog
tests/sentry/integrations/jira_server/test_webhooks.py:33: in test_post_empty_token
    _ = self.jwt_token
tests/sentry/integrations/jira_server/test_webhooks.py:27: in jwt_token
    return jwt.encode(
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 19 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira_server/test_webhooks.py::JiraServerWebhookEndpointTest::test_post_token_invalid_signaturelog
tests/sentry/integrations/jira_server/test_webhooks.py:65: in test_post_token_invalid_signature
    token = jwt.encode({"id": integration.external_id}, "bad-secret")
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 10 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/sentry_apps/api/endpoints/test_sentry_app_authorizations.py::TestSentryAppAuthorizations::test_client_secret_jwt_invalid_signaturelog
tests/sentry/sentry_apps/api/endpoints/test_sentry_app_authorizations.py:268: in test_client_secret_jwt_invalid_signature
    jwt_token = self._create_jwt(self.sentry_app.application.client_id, "wrong-secret")
tests/sentry/sentry_apps/api/endpoints/test_sentry_app_authorizations.py:185: in _create_jwt
    return jwt.encode(payload, client_secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/web/frontend/test_openidtoken.py::OpenIDTokenTest::test_get_signed_id_token_no_scopeslog
tests/sentry/web/frontend/test_openidtoken.py:82: in test_get_signed_id_token_no_scopes
    encrypted_id_token = id_token.get_signed_id_token(grant)
src/sentry/web/frontend/openidtoken.py:69: in get_signed_id_token
    return jwt_utils.encode(claims, self.shared_secret, headers={**headers, "alg": "HS256"})
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 13 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_link_issuelog
tests/sentry/integrations/bitbucket/test_issues.py:68: in test_link_issue
    assert self.integration.get_installation(self.organization.id).get_issue(
src/sentry/integrations/bitbucket/issues.py:179: in get_issue
    issue = client.get_issue(repo, issue_id)
src/sentry/integrations/bitbucket/client.py:91: in get_issue
    return self.get(BitbucketAPIPath.issue.format(repo=repo, issue_id=issue_id))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/web/frontend/test_openidtoken.py::OpenIDTokenTest::test_get_signed_id_token_with_scopeslog
tests/sentry/web/frontend/test_openidtoken.py:108: in test_get_signed_id_token_with_scopes
    encrypted_id_token = id_token.get_signed_id_token(grant)
src/sentry/web/frontend/openidtoken.py:69: in get_signed_id_token
    return jwt_utils.encode(claims, self.shared_secret, headers={**headers, "alg": "HS256"})
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 13 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::PublishDataTest::test_publish_data_retry_on_failurelog
tests/sentry/conduit/test_tasks.py:138: in test_publish_data_retry_on_failure
    token = generate_jwt(subject="test")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_integration.py::BitbucketIntegrationTest::test_get_repository_choices_halt_lifecyclelog
tests/sentry/integrations/bitbucket/test_integration.py:248: in test_get_repository_choices_halt_lifecycle
    installation.get_repository_choices(None, {})
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_get_create_issue_config_without_grouplog
tests/sentry/integrations/bitbucket/test_issues.py:287: in test_get_create_issue_config_without_group
    config = installation.get_create_issue_config(None, self.user, params={})
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/integrations/bitbucket/issues.py:71: in get_create_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::GenerateJWTTest::test_generate_jwt_uses_provided_parameterslog
tests/sentry/conduit/test_tasks.py:44: in test_generate_jwt_uses_provided_parameters
    token = generate_jwt(
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 13 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira_server/test_webhooks.py::JiraServerWebhookEndpointTest::test_post_update_assigneelog
tests/sentry/integrations/jira_server/test_webhooks.py:77: in test_post_update_assignee
    self.get_success_response(self.jwt_token, **payload)
tests/sentry/integrations/jira_server/test_webhooks.py:27: in jwt_token
    return jwt.encode(
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 19 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/utils/test_atlassian_connect.py::AtlassianConnectTest::test_get_integration_from_jwt_failurelog
tests/sentry/integrations/utils/test_atlassian_connect.py:86: in test_get_integration_from_jwt_failure
    get_integration_from_jwt(
src/sentry/integrations/utils/atlassian_connect.py:93: in get_integration_from_jwt
    else jwt.decode(token, integration.metadata["shared_secret"], audience=False)
src/sentry/utils/jwt.py:78: in decode
    return pyjwt.decode(token, key, options=options, algorithms=algorithms, **kwargs)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:365: in decode
    decoded = self.decode_complete(
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:262: in decode_complete
    decoded = self._jws.decode_complete(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:253: in decode_complete
    self._verify_signature(signing_input, header, signature, key, algorithms)
.venv/lib/python3.13/site-packages/jwt/api_jws.py:365: in _verify_signature
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=4)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 19 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::GenerateJWTTest::test_generate_jwt_uses_settingslog
tests/sentry/conduit/test_tasks.py:33: in test_generate_jwt_uses_settings
    token = generate_jwt(subject="test-subject")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_client.py::BitbucketApiClientTest::test_finalize_requestlog
tests/sentry/integrations/bitbucket/test_client.py:69: in test_finalize_request
    self.bitbucket_client.finalize_request(prepared_request=prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira_server/test_webhooks.py::JiraServerWebhookEndpointTest::test_post_token_missing_integrationlog
tests/sentry/integrations/jira_server/test_webhooks.py:59: in test_post_token_missing_integration
    token = jwt.encode({"no": integration.id}, integration.metadata["webhook_secret"])
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 19 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/web/frontend/test_oauth_token.py::OAuthTokenCodeTest::test_valid_params_id_tokenlog
tests/sentry/web/frontend/test_oauth_token.py:471: in test_valid_params_id_token
    resp = self.client.post(
.venv/lib/python3.13/site-packages/django/test/client.py:1153: in post
    response = super().post(
.venv/lib/python3.13/site-packages/django/test/client.py:499: in post
    return self.generic(
.venv/lib/python3.13/site-packages/django/test/client.py:671: in generic
    return self.request(**r)
.venv/lib/python3.13/site-packages/django/test/client.py:1087: in request
    self.check_exception(response)
.venv/lib/python3.13/site-packages/django/test/client.py:802: in check_exception
    raise exc_value
.venv/lib/python3.13/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
.venv/lib/python3.13/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
.venv/lib/python3.13/site-packages/django/views/generic/base.py:105: in view
    return self.dispatch(request, *args, **kwargs)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/views/decorators/csrf.py:65: in _view_wrapper
    return view_func(request, *args, **kwargs)
.venv/lib/python3.13/site-packages/django/utils/decorators.py:48: in _wrapper
    return bound_method(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/views/decorators/cache.py:80: in _view_wrapper
    response = view_func(request, *args, **kwargs)
src/sentry/web/frontend/oauth_token.py:65: in dispatch
    return super().dispatch(request, *args, **kwargs)
.venv/lib/python3.13/site-packages/django/views/generic/base.py:144: in dispatch
    return handler(request, *args, **kwargs)
src/sentry/web/frontend/oauth_token.py:271: in post
    token_data = self.get_access_tokens(request=request, application=application)
src/sentry/web/frontend/oauth_token.py:419: in get_access_tokens
    token_data["id_token"] = open_id_token.get_signed_id_token(grant=grant_data)
src/sentry/web/frontend/openidtoken.py:69: in get_signed_id_token
    return jwt_utils.encode(claims, self.shared_secret, headers={**headers, "alg": "HS256"})
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 14 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_default_repo_link_fieldslog
tests/sentry/integrations/bitbucket/test_issues.py:124: in test_default_repo_link_fields
    fields = installation.get_link_issue_config(self.group)
src/sentry/integrations/bitbucket/issues.py:114: in get_link_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/hybridcloud/tasks/test_deliver_webhooks.py::DeliveryTimeMetricsTest::test_delivery_time_metrics_codecov_region_sent_tolog
tests/sentry/hybridcloud/tasks/test_deliver_webhooks.py:1082: in test_delivery_time_metrics_codecov_region_sent_to
    drain_mailbox(records[0].id)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:89: in __call__
    return self._func(*args, **kwargs)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:327: in drain_mailbox
    deliver_message(record)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:611: in deliver_message
    perform_request(payload)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:631: in perform_request
    perform_codecov_request(payload)
src/sentry/hybridcloud/tasks/deliver_webhooks.py:831: in perform_codecov_request
    response = client.post(
src/sentry/codecov/client.py:123: in post
    token = self._create_jwt()
src/sentry/codecov/client.py:60: in _create_jwt
    return jwt.encode(claims, self.signing_secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 4 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::PublishDataTest::test_publish_data_uses_custom_urllog
tests/sentry/conduit/test_tasks.py:223: in test_publish_data_uses_custom_url
    token = generate_jwt(subject="test")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::StreamDemoDataTest::test_stream_demo_data_stops_on_exhausted_retrieslog
tests/sentry/conduit/test_tasks.py:305: in test_stream_demo_data_stops_on_exhausted_retries
    stream_demo_data(org_id=org_id, channel_id=channel_id)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:89: in __call__
    return self._func(*args, **kwargs)
src/sentry/conduit/tasks.py:41: in stream_demo_data
    token = generate_jwt(subject="demo")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_create_issuelog
tests/sentry/integrations/bitbucket/test_issues.py:346: in test_create_issue
    result = installation.create_issue(
src/sentry/integrations/bitbucket/issues.py:165: in create_issue
    issue = client.create_issue(data.get("repo"), data)
src/sentry/integrations/bitbucket/client.py:94: in create_issue
    return self.post(path=BitbucketAPIPath.issues.format(repo=repo), data=data)
src/sentry/shared_integrations/client/base.py:365: in post
    return self.request("POST", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_integration.py::BitbucketIntegrationTest::test_get_repositories_with_uuidlog
tests/sentry/integrations/bitbucket/test_integration.py:53: in test_get_repositories_with_uuid
    result = installation.get_repositories()
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_integration.py::BitbucketIntegrationTest::test_get_repository_choices_failure_lifecyclelog
tests/sentry/integrations/bitbucket/test_integration.py:268: in test_get_repository_choices_failure_lifecycle
    installation.get_repository_choices(None, {})
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/jira/test_tasks.py::SyncMetadataTest::test_successlog
tests/sentry/integrations/jira/test_tasks.py:52: in test_success
    sync_metadata(integration.id)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/taskworker/task.py:89: in __call__
    return self._func(*args, **kwargs)
src/sentry/tasks/base.py:206: in wrapped
    return func(*args, **kwargs)
src/sentry/integrations/jira/tasks.py:134: in sync_metadata
    installation.sync_metadata()
src/sentry/integrations/jira/integration.py:420: in sync_metadata
    server_info = client.get_server_info()
src/sentry/integrations/jira/client.py:196: in get_server_info
    return self.get(self.SERVER_INFO_URL)
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/jira/client.py:85: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/conduit/test_tasks.py::PublishDataTest::test_publish_data_max_retries_exceededlog
tests/sentry/conduit/test_tasks.py:186: in test_publish_data_max_retries_exceeded
    token = generate_jwt(subject="test")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_client.py::BitbucketApiClientTest::test_check_filelog
tests/sentry/integrations/bitbucket/test_client.py:101: in test_check_file
    resp = self.bitbucket_client.check_file(self.repo, path, version)
src/sentry/integrations/bitbucket/client.py:174: in check_file
    return self.head_cached(
src/sentry/shared_integrations/client/base.py:374: in head_cached
    return self._get_cached(path, "HEAD", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:351: in _get_cached
    result = self.request(method, path, *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_repository.py::BitbucketRepositoryProviderTest::test_build_repository_configlog
src/sentry/integrations/bitbucket/repository.py:23: in get_repository_data
    repo = client.get_repo(config["identifier"])
src/sentry/integrations/bitbucket/client.py:110: in get_repo
    return self.get(BitbucketAPIPath.repository.format(repo=repo))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 8 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.

During handling of the above exception, another exception occurred:
tests/sentry/integrations/bitbucket/test_repository.py:127: in test_build_repository_config
    data = self.provider.get_repository_data(organization, data)
src/sentry/integrations/bitbucket/repository.py:25: in get_repository_data
    installation.raise_error(e)
src/sentry/integrations/bitbucket/issues.py:154: in raise_error
    super().raise_error(exc, identity)
src/sentry/integrations/base.py:534: in raise_error
    raise IntegrationError(self.message_from_error(exc)).with_traceback(sys.exc_info()[2])
src/sentry/integrations/bitbucket/repository.py:23: in get_repository_data
    repo = client.get_repo(config["identifier"])
src/sentry/integrations/bitbucket/client.py:110: in get_repo
    return self.get(BitbucketAPIPath.repository.format(repo=repo))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   sentry.shared_integrations.exceptions.IntegrationError: An internal error occurred with the integration and the Sentry team has been notified
tests/sentry/integrations/bitbucket/test_search.py::BitbucketSearchEndpointTest::test_search_repositorieslog
tests/sentry/integrations/bitbucket/test_search.py:84: in test_search_repositories
    assert resp.status_code == 200
E   assert 500 == 200
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/conduit/test_tasks.py::PublishDataTest::test_publish_data_successlog
tests/sentry/conduit/test_tasks.py:97: in test_publish_data_success
    token = generate_jwt(subject="test")
src/sentry/conduit/tasks.py:109: in generate_jwt
    return jwt.encode(claims, secret, algorithm="HS256")
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 11 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_integration.py::BitbucketIntegrationTest::test_get_repositories_no_exact_matchlog
tests/sentry/integrations/bitbucket/test_integration.py:136: in test_get_repositories_no_exact_match
    result = installation.get_repositories("stu")
src/sentry/integrations/bitbucket/integration.py:136: in get_repositories
    exact_search_resp = self.get_client().search_repositories(username, exact_query)
src/sentry/integrations/bitbucket/client.py:116: in search_repositories
    return self.get(
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_issues.py::BitbucketIssueTest::test_default_repo_create_fieldslog
tests/sentry/integrations/bitbucket/test_issues.py:148: in test_default_repo_create_fields
    fields = installation.get_create_issue_config(self.group, self.user)
src/sentry/silo/base.py:158: in override
    return original_method(*args, **kwargs)
src/sentry/integrations/bitbucket/issues.py:71: in get_create_issue_config
    default_repo, repo_choices = self.get_repository_choices(group, params)
src/sentry/integrations/source_code_management/issues.py:79: in get_repository_choices
    return self._get_repository_choices(
src/sentry/integrations/source_code_management/issues.py:40: in _get_repository_choices
    repos = self.get_repositories(page_number_limit=page_number_limit)
src/sentry/integrations/bitbucket/integration.py:128: in get_repositories
    resp = self.get_client().get_repos(username)
src/sentry/integrations/bitbucket/client.py:113: in get_repos
    return self.get(BitbucketAPIPath.repositories.format(username=username))
src/sentry/shared_integrations/client/base.py:359: in get
    return self.request("GET", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 9 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
tests/sentry/integrations/bitbucket/test_client.py::BitbucketApiClientTest::test_get_stacktrace_linklog
tests/sentry/integrations/bitbucket/test_client.py:128: in test_get_stacktrace_link
    source_url = self.install.get_stacktrace_link(self.repo, path, "master", version)
src/sentry/integrations/source_code_management/repository.py:247: in get_stacktrace_link
    source_url = self.check_file(repo, filepath, version)
src/sentry/integrations/source_code_management/repository.py:165: in check_file
    response = client.check_file(repo, filepath, branch)
src/sentry/integrations/bitbucket/client.py:174: in check_file
    return self.head_cached(
src/sentry/shared_integrations/client/base.py:374: in head_cached
    return self._get_cached(path, "HEAD", *args, **kwargs)
src/sentry/shared_integrations/client/base.py:351: in _get_cached
    result = self.request(method, path, *args, **kwargs)
src/sentry/shared_integrations/client/base.py:320: in request
    return self._request(*args, **kwargs)
src/sentry/shared_integrations/client/base.py:251: in _request
    finalized_request = self.finalize_request(_prepared_request)
src/sentry/integrations/bitbucket/client.py:86: in finalize_request
    encoded_jwt = jwt.encode(jwt_payload, self.shared_secret)
src/sentry/utils/jwt.py:104: in encode
    return pyjwt.encode(payload, key, algorithm=algorithm, headers=headers)
.venv/lib/python3.13/site-packages/jwt/api_jwt.py:147: in encode
    return self._jws.encode(
.venv/lib/python3.13/site-packages/jwt/api_jws.py:197: in encode
    warnings.warn(key_length_msg, InsecureKeyLengthWarning, stacklevel=2)
E   jwt.warnings.InsecureKeyLengthWarning: The HMAC key is 12 bytes long, which is below the minimum recommended length of 32 bytes f

... (truncated due to GitHub comment size limit)

@oioki oioki requested a review from a team as a code owner March 18, 2026 12:35
@oioki oioki added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 18, 2026
@oioki oioki requested a review from a team as a code owner March 20, 2026 14:08
@github-actions github-actions Bot removed the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 20, 2026
@oioki oioki added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 20, 2026
Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment thread uv.lock
@michelletran-sentry michelletran-sentry force-pushed the dependabot/uv/pyjwt-2.12.0 branch from 4c83e74 to 661ae7d Compare March 31, 2026 16:26
@github-actions github-actions Bot removed the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 31, 2026
@michelletran-sentry michelletran-sentry requested review from a team as code owners March 31, 2026 16:38
@michelletran-sentry michelletran-sentry force-pushed the dependabot/uv/pyjwt-2.12.0 branch from f8e70b6 to 33d02c9 Compare March 31, 2026 16:40
@michelletran-sentry michelletran-sentry added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 31, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Backend Test Failures

Failures on e1e48f2 in this run:

tests/sentry/integrations/api/endpoints/test_organization_repository_details.py::OrganizationRepositoryGetTest::test_get_repository_expand_settings_no_settings_existlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/integrations/api/endpoints/test_organization_repository_details.py:91: in test_get_repository_expand_settings_no_settings_exist
    assert response.data["settings"]["codeReviewTriggers"] == [
E   AssertionError: assert ['on_ready_for_review'] == ['on_ready_fo...n_new_commit']
E     
E     Right contains one more item: 'on_new_commit'
E     
E     Full diff:
E       [
E           'on_ready_for_review',
E     -     'on_new_commit',
E       ]

dependabot Bot and others added 3 commits March 31, 2026 13:15
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.12.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](jpadilla/pyjwt@2.10.1...2.12.0)

---
updated-dependencies:
- dependency-name: pyjwt
  dependency-version: 2.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
PyJWT 2.11.0+ validates that the iss claim must be a string during
encoding. The github-app.id and github.integration-app-id options are
registered with default=0 (int), so options.get() returns an int,
causing InvalidClaimError. Cast to str() in both JWT generation paths.

Co-Authored-By: Claude <noreply@anthropic.com>
@michelletran-sentry michelletran-sentry force-pushed the dependabot/uv/pyjwt-2.12.0 branch from 33d02c9 to 655a8f3 Compare March 31, 2026 17:17
@github-actions github-actions Bot removed the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 31, 2026
@michelletran-sentry michelletran-sentry added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Mar 31, 2026
@michelletran-sentry michelletran-sentry merged commit b266553 into master Mar 31, 2026
112 of 129 checks passed
@michelletran-sentry michelletran-sentry deleted the dependabot/uv/pyjwt-2.12.0 branch March 31, 2026 17:42
dashed pushed a commit that referenced this pull request Apr 1, 2026
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jpadilla/pyjwt/releases">pyjwt's
releases</a>.</em></p>
<blockquote>
<h2>2.12.0</h2>
<h2>Security</h2>
<ul>
<li>Validate the crit (Critical) Header Parameter defined in RFC 7515
§4.1.11. by <a
href="https://github.com/dmbs335"><code>@​dmbs335</code></a> in <a
href="https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f">GHSA-752w-5fwx-jx9f</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1132">jpadilla/pyjwt#1132</a></li>
<li>chore(docs): fix docs build by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1137">jpadilla/pyjwt#1137</a></li>
<li>Annotate PyJWKSet.keys for pyright by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1134">jpadilla/pyjwt#1134</a></li>
<li>fix: close HTTPError to prevent ResourceWarning on Python 3.14 by <a
href="https://github.com/veeceey"><code>@​veeceey</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1133">jpadilla/pyjwt#1133</a></li>
<li>chore: remove superfluous constants by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1136">jpadilla/pyjwt#1136</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1135">jpadilla/pyjwt#1135</a></li>
<li>chore(tests): enable mypy by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1138">jpadilla/pyjwt#1138</a></li>
<li>Bump actions/download-artifact from 7 to 8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1142">jpadilla/pyjwt#1142</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1141">jpadilla/pyjwt#1141</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1145">jpadilla/pyjwt#1145</a></li>
<li>fix: do not store reference to algorithms dict on PyJWK by <a
href="https://github.com/akx"><code>@​akx</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1143">jpadilla/pyjwt#1143</a></li>
<li>Use PyJWK algorithm when encoding without explicit algorithm by <a
href="https://github.com/jpadilla"><code>@​jpadilla</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1148">jpadilla/pyjwt#1148</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/tamird"><code>@​tamird</code></a> made
their first contribution in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1137">jpadilla/pyjwt#1137</a></li>
<li><a href="https://github.com/veeceey"><code>@​veeceey</code></a> made
their first contribution in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1133">jpadilla/pyjwt#1133</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0">https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0</a></p>
<h2>2.11.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fixed type error in comment by <a
href="https://github.com/shuhaib-aot"><code>@​shuhaib-aot</code></a> in
<a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1026">jpadilla/pyjwt#1026</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1018">jpadilla/pyjwt#1018</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1033">jpadilla/pyjwt#1033</a></li>
<li>Make note of use of leeway with nbf by <a
href="https://github.com/djw8605"><code>@​djw8605</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1034">jpadilla/pyjwt#1034</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1035">jpadilla/pyjwt#1035</a></li>
<li>Fixes <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/964">#964</a>:
Validate key against allowed types for Algorithm family by <a
href="https://github.com/pachewise"><code>@​pachewise</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/985">jpadilla/pyjwt#985</a></li>
<li>Feat <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1024">#1024</a>:
Add iterator for PyJWKSet by <a
href="https://github.com/pachewise"><code>@​pachewise</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1041">jpadilla/pyjwt#1041</a></li>
<li>Fixes <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1039">#1039</a>:
Add iss, issuer type checks by <a
href="https://github.com/pachewise"><code>@​pachewise</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1040">jpadilla/pyjwt#1040</a></li>
<li>Fixes <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/660">#660</a>:
Improve typing/logic for <code>options</code> in decode,
decode_complete; Improve docs by <a
href="https://github.com/pachewise"><code>@​pachewise</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1045">jpadilla/pyjwt#1045</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1042">jpadilla/pyjwt#1042</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1052">jpadilla/pyjwt#1052</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1053">jpadilla/pyjwt#1053</a></li>
<li>Fix <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1022">#1022</a>:
Map <code>algorithm=None</code> to &quot;none&quot; by <a
href="https://github.com/qqii"><code>@​qqii</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1056">jpadilla/pyjwt#1056</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1055">jpadilla/pyjwt#1055</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1058">jpadilla/pyjwt#1058</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1060">jpadilla/pyjwt#1060</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1061">jpadilla/pyjwt#1061</a></li>
<li>Fixes <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1047">#1047</a>:
Correct <code>PyJWKClient.get_signing_key_from_jwt</code> annotation by
<a href="https://github.com/khvn26"><code>@​khvn26</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1048">jpadilla/pyjwt#1048</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1062">jpadilla/pyjwt#1062</a></li>
<li>Fixed doc string typo in _validate_jti() function <a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1063">#1063</a>
by <a
href="https://github.com/kuldeepkhatke"><code>@​kuldeepkhatke</code></a>
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1064">jpadilla/pyjwt#1064</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1065">jpadilla/pyjwt#1065</a></li>
<li>Update SECURITY.md by <a
href="https://github.com/auvipy"><code>@​auvipy</code></a> in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1057">jpadilla/pyjwt#1057</a></li>
<li>Typing fix: use <code>float</code> instead of <code>int</code> for
<code>lifespan</code> and <code>timeout</code> by <a
href="https://github.com/nikitagashkov"><code>@​nikitagashkov</code></a>
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1068">jpadilla/pyjwt#1068</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/jpadilla/pyjwt/pull/1067">jpadilla/pyjwt#1067</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst">pyjwt's
changelog</a>.</em></p>
<blockquote>
<h2><code>v2.12.0
&lt;https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0&gt;</code>__</h2>
<p>Fixed</p>
<pre><code>
- Annotate PyJWKSet.keys for pyright by @tamird in
`[#1134](jpadilla/pyjwt#1134)
&lt;https://github.com/jpadilla/pyjwt/pull/1134&gt;`__
- Close ``HTTPError`` response to prevent ``ResourceWarning`` on Python
3.14 by @veeceey in
`[#1133](jpadilla/pyjwt#1133)
&lt;https://github.com/jpadilla/pyjwt/pull/1133&gt;`__
- Do not keep ``algorithms`` dict in PyJWK instances by @akx in
`[#1143](jpadilla/pyjwt#1143)
&lt;https://github.com/jpadilla/pyjwt/pull/1143&gt;`__
- Validate the crit (Critical) Header Parameter defined in RFC 7515
§4.1.11. by @dmbs335 in `GHSA-752w-5fwx-jx9f
&lt;https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f&gt;`__
- Use PyJWK algorithm when encoding without explicit algorithm in
`[#1148](jpadilla/pyjwt#1148)
&lt;https://github.com/jpadilla/pyjwt/pull/1148&gt;`__
<p>Added
</code></pre></p>
<ul>
<li>Docs: Add <code>PyJWKClient</code> API reference and document the
two-tier caching system (JWK Set cache and signing key LRU cache).</li>
</ul>
<h2><code>v2.11.0
&lt;https://github.com/jpadilla/pyjwt/compare/2.10.1...2.11.0&gt;</code>__</h2>
<p>Fixed</p>
<pre><code>
- Enforce ECDSA curve validation per RFC 7518 Section 3.4.
- Fix build system warnings by @kurtmckee in
`[#1105](jpadilla/pyjwt#1105)
&lt;https://github.com/jpadilla/pyjwt/pull/1105&gt;`__
- Validate key against allowed types for Algorithm family in
`[#964](jpadilla/pyjwt#964)
&lt;https://github.com/jpadilla/pyjwt/pull/964&gt;`__
- Add iterator for JWKSet in
`[#1041](jpadilla/pyjwt#1041)
&lt;https://github.com/jpadilla/pyjwt/pull/1041&gt;`__
- Validate `iss` claim is a string during encoding and decoding by
@pachewise in `[#1040](jpadilla/pyjwt#1040)
&lt;https://github.com/jpadilla/pyjwt/pull/1040&gt;`__
- Improve typing/logic for `options` in decode, decode_complete by
@pachewise in `[#1045](jpadilla/pyjwt#1045)
&lt;https://github.com/jpadilla/pyjwt/pull/1045&gt;`__
- Declare float supported type for lifespan and timeout by
@nikitagashkov in
`[#1068](jpadilla/pyjwt#1068)
&lt;https://github.com/jpadilla/pyjwt/pull/1068&gt;`__
- Fix ``SyntaxWarning``\s/``DeprecationWarning``\s caused by invalid
escape sequences by @kurtmckee in
`[#1103](jpadilla/pyjwt#1103)
&lt;https://github.com/jpadilla/pyjwt/pull/1103&gt;`__
- Development: Build a shared wheel once to speed up test suite setup
times by @kurtmckee in
`[#1114](jpadilla/pyjwt#1114)
&lt;https://github.com/jpadilla/pyjwt/pull/1114&gt;`__
- Development: Test type annotations across all supported Python
versions,
increase the strictness of the type checking, and remove the mypy
pre-commit hook
by @kurtmckee in `[#1112](jpadilla/pyjwt#1112)
&lt;https://github.com/jpadilla/pyjwt/pull/1112&gt;`__
<p>Added
</code></pre></p>
<ul>
<li>Support Python 3.14, and test against PyPy 3.10 and 3.11 by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1104](jpadilla/pyjwt#1104)
&lt;https://github.com/jpadilla/pyjwt/pull/1104&gt;</code>__</li>
<li>Development: Migrate to <code>build</code> to test package building
in CI by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1108](jpadilla/pyjwt#1108)
&lt;https://github.com/jpadilla/pyjwt/pull/1108&gt;</code>__</li>
<li>Development: Improve coverage config and eliminate unused test suite
code by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1115](jpadilla/pyjwt#1115)
&lt;https://github.com/jpadilla/pyjwt/pull/1115&gt;</code>__</li>
<li>Docs: Standardize CHANGELOG links to PRs by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1110](jpadilla/pyjwt#1110)
&lt;https://github.com/jpadilla/pyjwt/pull/1110&gt;</code>__</li>
<li>Docs: Fix Read the Docs builds by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1111](jpadilla/pyjwt#1111)
&lt;https://github.com/jpadilla/pyjwt/pull/1111&gt;</code>__</li>
<li>Docs: Add example of using leeway with nbf by <a
href="https://github.com/djw8605"><code>@​djw8605</code></a> in
<code>[#1034](jpadilla/pyjwt#1034)
&lt;https://github.com/jpadilla/pyjwt/pull/1034&gt;</code>__</li>
<li>Docs: Refactored docs with <code>autodoc</code>; added
<code>PyJWS</code> and <code>jwt.algorithms</code> docs by <a
href="https://github.com/pachewise"><code>@​pachewise</code></a> in
<code>[#1045](jpadilla/pyjwt#1045)
&lt;https://github.com/jpadilla/pyjwt/pull/1045&gt;</code>__</li>
<li>Docs: Documentation improvements for &quot;sub&quot; and
&quot;jti&quot; claims by <a
href="https://github.com/cleder"><code>@​cleder</code></a> in
<code>[#1088](jpadilla/pyjwt#1088)
&lt;https://github.com/jpadilla/pyjwt/pull/1088&gt;</code>__</li>
<li>Development: Add pyupgrade as a pre-commit hook by <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a> in
<code>[#1109](jpadilla/pyjwt#1109)
&lt;https://github.com/jpadilla/pyjwt/pull/1109&gt;</code>__</li>
<li>Add minimum key length validation for HMAC and RSA keys (CWE-326).
Warns by default via <code>InsecureKeyLengthWarning</code> when keys are
below</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/bd9700cca7f9258fadcc429c1034e508025931f2"><code>bd9700c</code></a>
Use PyJWK algorithm when encoding without explicit algorithm (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1148">#1148</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/051ea341b5573fe3edcd53042f347929b92c2b92"><code>051ea34</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/1451d70eca2059bc472703692f0bb0777bc0fe93"><code>1451d70</code></a>
fix: do not store reference to algorithms dict on PyJWK (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1143">#1143</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/f3ba74c106df9ce10e272dfaad96acb4ab3ef5a5"><code>f3ba74c</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1145">#1145</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/0318ffa7b156b01600376e38952bf961382e0724"><code>0318ffa</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1141">#1141</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/a52753db3c1075ac01337fa8b7cc92b13a19ac09"><code>a52753d</code></a>
Bump actions/download-artifact from 7 to 8 (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1142">#1142</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/b85050f1d444c6828bb4618ee764443b0a3f5d18"><code>b85050f</code></a>
chore(tests): enable mypy (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1138">#1138</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/1272b264779717cc481c8341f321a7fc8b3aaba6"><code>1272b26</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1135">#1135</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/99a87287c26cb97c94399084ee4186ee52207a7f"><code>99a8728</code></a>
chore: remove superfluous constants (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1136">#1136</a>)</li>
<li><a
href="https://github.com/jpadilla/pyjwt/commit/412cb67a93363812ae4029d6a95f5d4d40ab2609"><code>412cb67</code></a>
fix: close HTTPError to prevent ResourceWarning on Python 3.14 (<a
href="https://redirect.github.com/jpadilla/pyjwt/issues/1133">#1133</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/jpadilla/pyjwt/compare/2.10.1...2.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyjwt&package-manager=uv&previous-version=2.10.1&new-version=2.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/getsentry/sentry/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Tarasov <alex.tarasov@sentry.io>
Co-authored-by: Michelle Tran <michelle.tran@sentry.io>
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code Scope: Backend Automatically applied to PRs that change backend components Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants