Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Jun 26, 2025

Drop support for Python 3.8 (EOL 2024-10-07) and add Python 3.13 support

Summary

This PR implements a coordinated update across 6 LaunchDarkly Python repositories to drop support for Python 3.8 (which reached end-of-life on October 7, 2024) and add support for Python 3.13. The changes follow the pattern established in the reference commit 02076650064d8a20f792c80cda3249a7aa7e336a from python-server-sdk.

Repositories updated:

Key changes per repository:

  • Updated minimum Python version from 3.8 to 3.9 in pyproject.toml
  • Removed Python 3.8 classifiers and added Python 3.13 classifiers
  • Updated README.md files to reflect new minimum Python version
  • Modified GitHub Actions workflows to test Python 3.9-3.13 (removed 3.8)
  • Updated manual publish workflows to use Python 3.9 as base version

Special handling for python-eventsource:

  • Upgraded Sphinx from ^5.0.0 to ^7.0.0 to resolve Python 3.13 compatibility issues
  • Fixed "No module named 'pipes'" error (pipes module removed in Python 3.13)
  • Fixed "alabaster extension needs at least Sphinx v3.4" error
  • Added package-mode = false to hello-openfeature-python-server to resolve Poetry installation issues

Review & Testing Checklist for Human

  • Verify version bumping strategy: Check that the "Release-As: X.Y.Z" versions in commit messages are correct for each repository's current version
  • Test Python 3.13 compatibility: Run actual application code with Python 3.13 to ensure no runtime issues beyond what CI catches
  • Verify Sphinx documentation builds: Test documentation generation locally with the upgraded Sphinx 7.x to ensure no formatting or functionality regressions
  • Check for Python 3.8 remnants: Search codebases for any hardcoded Python 3.8 references, version checks, or compatibility code that should be removed
  • Test dependency resolution: Verify that the new Python version constraints don't cause dependency conflicts in downstream projects

Recommended test plan:

  1. Install each library in a fresh Python 3.9, 3.12, and 3.13 environment
  2. Run the test suites locally with Python 3.13
  3. Build documentation for python-eventsource with Sphinx 7.x
  4. Test basic functionality of each library to ensure no runtime regressions

Diagram

graph TB
    subgraph "python-server-sdk-otel"
        A1[pyproject.toml]:::major-edit
        A2[README.md]:::major-edit
        A3[.github/workflows/ci.yml]:::major-edit
        A4[.github/workflows/manual-publish.yml]:::minor-edit
    end
    
    subgraph "python-server-sdk-ai"
        B1[pyproject.toml]:::major-edit
        B2[README.md]:::major-edit
        B3[.github/workflows/ci.yml]:::major-edit
        B4[.github/workflows/manual-publish.yml]:::minor-edit
        B5[.github/workflows/release-please.yml]:::minor-edit
    end
    
    subgraph "python-eventsource"
        C1[pyproject.toml]:::major-edit
        C2[README.md]:::major-edit
        C3[.github/workflows/ci.yml]:::major-edit
        C4[Sphinx upgrade 5.0→7.0]:::major-edit
    end
    
    subgraph "openfeature-python-server"
        D1[pyproject.toml]:::major-edit
        D2[README.md]:::major-edit
        D3[.github/workflows/ci.yml]:::major-edit
        D4[.github/workflows/manual-publish.yml]:::minor-edit
    end
    
    subgraph "hello-python"
        E1[pyproject.toml]:::major-edit
        E2[README.md]:::major-edit
        E3[.github/workflows/ci.yml]:::major-edit
    end
    
    subgraph "hello-openfeature-python-server"
        F1[pyproject.toml]:::major-edit
        F2[README.md]:::major-edit
        F3[.github/workflows/ci.yml]:::major-edit
        F4[package-mode fix]:::minor-edit
    end
    
    subgraph Legend
        L1[Major Edit]:::major-edit
        L2[Minor Edit]:::minor-edit
        L3[Context/No Edit]:::context
    end
    
    classDef major-edit fill:#90EE90
    classDef minor-edit fill:#87CEEB
    classDef context fill:#FFFFFF
Loading

Notes

  • Breaking Change: This is a breaking change that drops Python 3.8 support. Users on Python 3.8 will need to upgrade to Python 3.9+ to use future versions.
  • CI Status: All 6 PRs have passing CI checks (11/11 checks passing for most repositories).
  • Sphinx Compatibility: The python-eventsource repository required a significant Sphinx upgrade to support Python 3.13, as the pipes module was removed in Python 3.13.
  • Coordination: This change was implemented across multiple repositories simultaneously to maintain consistency across the LaunchDarkly Python SDK ecosystem.

Link to Devin run: https://app.devin.ai/sessions/3f70248c29dd4d5eb70be4a05a78ce3a
Requested by: @keelerm84

@devin-ai-integration devin-ai-integration bot requested a review from a team as a code owner June 26, 2025 14:37
@devin-ai-integration
Copy link
Contributor Author

Original prompt from [email protected]:

SYSTEM:
=== BEGIN THREAD HISTORY (in #sdks-python) ===
GitHub (U01V5FFUQ1E): 

[launchdarkly/python-server-sdk] Pull request merged by keelerm84

Matthew Keeler (U02FZSQUVCL): <@U0915543DJ7> if you look at sha 02076650064d8a20f792c80cda3249a7aa7e336a from the python-server-sdk repository, you will see a commit where I've dropped python 3.8 support from one of our libraries. I also increased testing support up to 3.13.

I need you to make the same type of changes across multiple different repositories:

• <https://github.com/launchdarkly/python-server-sdk-otel>
• <https://github.com/launchdarkly/python-server-sdk-ai>
• <https://github.com/launchdarkly/python-eventsource>
• <https://github.com/launchdarkly/openfeature-python-server>
• <https://github.com/launchdarkly/hello-python>
• <https://github.com/launchdarkly/hello-openfeature-python-server>
For each of these repositories we want to make sure that:

1. We bump the minimum to 3.9.
2. Update the README to reflect this new minimum.
3. Update all github action files to no longer include 3.8.
4. Anywhere we list the versions of python that are supported, we should make sure to expand to include 3.13.
When working on the repositories, you should work under a branch named: mk/sdk-1351/3.8

The PR title should be similar to what you saw in the provided SHA. The commit body should also include a "Release-As: X.Y.Z" designation. That release number should be the next non-breaking version number. For example, if the last tag was 1.2.3, then this should be "Release-As: 1.3.0". Or if it's "0.3.0", it should be "Release-As: 0.4.0".

Matthew Keeler (U02FZSQUVCL): <@U0915543DJ7> see my last message and do that please.

Cursor (U0915543DJ7): <@U02FZSQUVCL> deleted "Update Python support across repositories"

<@U02FZSQUVCL> deleted "Update Python support across repositories"

Matthew Keeler (U02FZSQUVCL): <@U0915543DJ7> help

Cursor (U0915543DJ7): Welcome to Cursor for Slack! Here's how to use it:

Welcome! Here's how to use Cursor in Slack:


*Start an Agent*

Create a new agent to work on your task
```@Cursor [your task description]```

_Example:_ `@Cursor Fix the login bug we discussed in this thread`

:bulb: _Tip: Reply to an agent thread with @Cursor to add follow-up instructions_

*Agent Settings*

View and edit your default model, repository, and branch
```@Cursor settings```

Use a different model, repository, or branch for a single agent
```@Cursor [branch=dev, model=o3, repo=torvalds/linux] Fix the login bug```

*More Commands*


_Cursor agents run in the background and notify you when complete_

Matthew Keeler (U02FZSQUVCL): <@U0915543DJ7> list agents

Cursor (U0915543DJ7): Your Cursor Agents:
• <https://cursor.com/background-agent?bcId=bc-b630020f-dbf7-4666-b4d4-1105117b8f7b|Update Python support across repositories>

_Last 24 hours_

Cursor (U0915543DJ7): Background agent has successfully finished!

Background agent has successfully finished!

*Repository:* `launchdarkly/gonfalon`
*Branch:* `cursor/update-python-support-across-repositories-569b`

Matthew Keeler (U02FZSQUVCL): @Devin I’m sorry. I tried another AI bot but nothing can replace you. :heart: Can you read my first message in this thread and take a stab and doing all of that work? Thanks love!
=== END THREAD HISTORY ===

The latest message is the one right above that tagged you.

@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

This resolves the Poetry installation error in CI where it couldn't find
package files for the hello-openfeature-python-server demo application.

Co-Authored-By: [email protected] <[email protected]>
@devin-ai-integration devin-ai-integration bot added the devin-pr Pull request created by Devin AI label Jun 26, 2025
@keelerm84 keelerm84 changed the title feat!: Drop support for Python 3.8 (eol 2024-10-07) chore: Drop support for Python 3.8 (eol 2024-10-07) Jun 26, 2025
@keelerm84 keelerm84 merged commit 77be589 into main Jun 26, 2025
1 check passed
@keelerm84 keelerm84 deleted the mk/sdk-1351/3.8 branch June 26, 2025 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devin-pr Pull request created by Devin AI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants