Skip to content

[PM-35795] Bump Python to 3.13 for Splunk app#200

Open
AlexRubik wants to merge 4 commits into
mainfrom
dirt/pm-35795/python-3-13-pyproject
Open

[PM-35795] Bump Python to 3.13 for Splunk app#200
AlexRubik wants to merge 4 commits into
mainfrom
dirt/pm-35795/python-3-13-pyproject

Conversation

@AlexRubik
Copy link
Copy Markdown

@AlexRubik AlexRubik commented May 11, 2026

🎟️ Tracking

PM-35795 (child of epic PM-35261)

📔 Objective

Splunk 10.2+ ships Python 3.13 as the app runtime. This PR updates the Bitwarden Splunk app's Poetry constraint from >=3.9, <3.11 to >=3.13, <3.14 and aligns the CI build to use Python 3.13.

Verified

  • All four runtime dependencies (requests 2.32.5, splunk-sdk 2.1.1, splunktaucclib 8.1.0, python-dateutil 2.9.0.post0) declare Python 3.13 compatibility on PyPI or have no upper bound. No version bumps required. PyPI metadata checked per package:

    Dep PyPI source Metadata read
    requests 2.32.5 pypi.org/pypi/requests/2.32.5/json requires_python: ">=3.9" + explicit Python :: 3.13 classifier
    splunk-sdk 2.1.1 pypi.org/pypi/splunk-sdk/2.1.1/json requires_python: null (no upper bound, any Python accepted)
    splunktaucclib 8.1.0 pypi.org/pypi/splunktaucclib/8.1.0/json requires_python: "<3.14, >=3.7" (explicitly allows 3.13)
    python-dateutil 2.9.0.post0 pypi.org/pypi/python-dateutil/2.9.0.post0/json requires_python: "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" (no upper bound)
  • The <3.14 upper bound is mandated by three Splunk-owned packages (splunktaucclib, splunk-add-on-ucc-framework, splunk-packaging-toolkit).

  • poetry.lock regenerated under Python 3.13; top-level pinned versions unchanged (verified for all 9 pins).

  • Local checks pass under Python 3.13.12: poetry install (clean resolution), pytest (24/24), ucc-gen build + ucc-gen package, slim validate (no errors). AppInspect was deferred to CI since it requires libmagic which is not installed locally on macOS.

Implicit compatibility break (intentional)

After this PR, installing this app on Splunk 9.x or 10.0/10.1 (pre-3.13 Python) will fail. The epic explicitly drops support below Splunk 10.2; pre-10.2 break is expected.

Dev rig alignment

Local dev/docker-compose.yml previously pinned splunk:10.0 as the primary service, which ships Python 3.9 and could not run the rebuilt app. Bumped to splunk:10.2 in 05ee9cb so pulling this branch produces a working local rig. The splunk93 service is retained intentionally for manual verification of the pre-10.2 install rejection path, with an inline comment marking it for removal once PM-35800 adds an explicit requires_splunk_version declaration in app.conf.

AlexRubik added 3 commits May 11, 2026 15:36
Splunk 10.2+ ships Python 3.13. Updating the Poetry constraint
across all groups (main, dev, splunkslim, test) to match.
Verified that every pinned dependency supports Python 3.13 at
its current version; no dep version bumps required.

The <3.14 upper bound is mandated by splunktaucclib,
splunk-add-on-ucc-framework, and splunk-packaging-toolkit.

[PM-35795]
Matches the new pyproject.toml constraint. Updates both the
actions/setup-python version and the poetry env use line.

[PM-35795]
@AlexRubik AlexRubik added the ai-review Request a Claude code review label May 11, 2026
@AlexRubik AlexRubik marked this pull request as ready for review May 11, 2026 20:27
@AlexRubik AlexRubik requested review from a team as code owners May 11, 2026 20:27
@AlexRubik AlexRubik requested a review from michalchecinski May 11, 2026 20:27
…-test intent

The primary `splunk` service in dev/docker-compose.yml pinned `splunk:10.0`,
which ships Python 3.9. After the pyproject.toml bump in this PR, neither
splunk:10.0 nor splunk:9.3 can install or run the rebuilt app, leaving
anyone who pulls this branch without a working local dev rig.

Changes:
- Primary `splunk` service: bump image from `splunk/splunk:10.0` to
  `splunk/splunk:10.2`. 10.2 is the first Splunk release that ships the
  Python 3.13 interpreter the app now requires, matching the
  >=3.13, <3.14 constraint we set in pyproject.toml.
- Add a header comment on `splunk` explaining the version pin and why it
  matters for local testing.
- Retain `splunk93` (Splunk 9.3, Python 3.7) but add a comment making the
  intent explicit: it exists solely to manually verify the pre-10.2
  install-time rejection path. The comment also notes the planned removal
  once PM-35800 (Splunkbase recertification) adds an explicit
  `requires_splunk_version` declaration to app.conf, at which point the
  rejection signal travels with the package metadata and the service is
  no longer needed.

Rationale for keeping splunk93 instead of dropping it:
The PR description acknowledges that pre-10.2 Splunk support is dropped,
but app.conf currently has no `requires_splunk_version` field. Until
that is added (tracked in PM-35800), splunk93 is the only way to
locally observe the failure mode a side-loaded pre-10.2 install would
hit, which is useful for support documentation and for writing the
migration guide tracked by the epic.

No functional change to the application; only the dev/* docker compose
config and inline comments change.

[PM-35795]
@AlexRubik AlexRubik requested a review from a team as a code owner May 11, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review Request a Claude code review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants