Skip to content

feat!: Drop support for Python 3.8 (eol 2024-10-07) #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 26, 2025
Merged

Conversation

devin-ai-integration[bot]
Copy link
Contributor

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

Drop support for Python 3.8 and add Python 3.13 support across LaunchDarkly Python repositories

Summary

This PR implements a coordinated update across 6 LaunchDarkly Python repositories to drop support for Python 3.8 (EOL 2024-10-07) and add support for Python 3.13. The changes follow the pattern established in python-server-sdk commit 02076650064d8a20f792c80cda3249a7aa7e336a.

Repositories updated:

Key changes per repository:

  • Updated minimum Python version from 3.8 to 3.9 in README and pyproject.toml
  • Removed Programming Language :: Python :: 3.8 classifier
  • Added Programming Language :: Python :: 3.13 classifier
  • Updated GitHub Actions workflows to test Python 3.9-3.13 (removing 3.8)
  • python-eventsource specific: Upgraded Sphinx from ^5.0.0 to ^7.0.0 to resolve Python 3.13 compatibility issues

Review & Testing Checklist for Human

Risk Level: YELLOW - Moderate risk due to breaking changes and dependency upgrades

  • Test actual library functionality with Python 3.13 - CI only verifies installation/building, not that core features work correctly with Python 3.13
  • Verify documentation builds work with upgraded Sphinx 7.x - The Sphinx upgrade in python-eventsource was complex and required troubleshooting; test make docs locally
  • Check version constraint consistency - Ensure python version constraints are consistent across all 6 repositories and make sense for each library's dependencies
  • Validate breaking change versioning - Confirm the "Release-As: X.Y.Z" version bumps follow the correct major/minor versioning strategy for breaking changes

Recommended test plan: Install each updated library in a fresh Python 3.13 environment and run basic import/usage tests to ensure core functionality works beyond just CI checks.


Diagram

graph TB
    subgraph Legend
        L1[Major Edit]:::major-edit
        L2[Minor Edit]:::minor-edit
        L3[Context/No Edit]:::context
    end
    
    subgraph "6 LaunchDarkly Python Repos"
        A[python-server-sdk-otel]:::minor-edit
        B[python-server-sdk-ai]:::minor-edit
        C[python-eventsource]:::major-edit
        D[openfeature-python-server]:::minor-edit
        E[hello-python]:::minor-edit
        F[hello-openfeature-python-server]:::minor-edit
    end
    
    subgraph "Files Modified (each repo)"
        G[README.md]:::minor-edit
        H[pyproject.toml]:::major-edit
        I[.github/workflows/*.yml]:::minor-edit
    end
    
    subgraph "Python 3.13 Compatibility"
        J[Sphinx upgrade 5.0→7.0]:::major-edit
        K[Remove pipes module dependency]:::context
        L[Fix imghdr module issues]:::context
    end
    
    A --> G
    A --> H
    A --> I
    B --> G
    B --> H
    B --> I
    C --> G
    C --> H
    C --> I
    C --> J
    D --> G
    D --> H
    D --> I
    E --> G
    E --> H
    F --> G
    F --> H
    
    J --> K
    J --> L
    
    classDef major-edit fill:#90EE90
    classDef minor-edit fill:#87CEEB
    classDef context fill:#FFFFFF
Loading

Notes

  • Sphinx upgrade complexity: The python-eventsource repository required a significant Sphinx upgrade (5.0→7.0) due to Python 3.13 removing the pipes and imghdr modules. This was the most complex part of the migration.
  • poetry.lock handling: The python-eventsource repository has poetry.lock in .gitignore, which initially caused CI to use stale dependency versions. The pyproject.toml constraint update resolved this.
  • CI verification: All 6 PRs now have passing CI checks (11/11 passed for most repos), but this only verifies installation and basic building, not functional correctness.
  • Breaking change coordination: All PRs use the "feat!" conventional commit format and include "Release-As: X.Y.Z" for automated version management.

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

Release-As: 1.3.0

Co-Authored-By: mkeeler@launchdarkly.com <keelerm84@gmail.com>
@devin-ai-integration devin-ai-integration bot requested a review from a team as a code owner June 26, 2025 14:37
Copy link
Contributor Author

Original prompt from mkeeler@launchdarkly.com:

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.

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

devin-ai-integration bot and others added 2 commits June 26, 2025 14:47
- Upgrade Sphinx from ^1.3.0 to ^5.0.0 to resolve 'No module named pipes' error
- Python 3.13 removed the pipes module that old Sphinx versions depend on
- Verified documentation builds successfully with Sphinx 5.3.0

Co-Authored-By: mkeeler@launchdarkly.com <keelerm84@gmail.com>
- Upgrade from Sphinx ^5.0.0 to ^7.0.0 to resolve Python 3.13 issues
- Fixes 'No module named pipes' error on Linux Python 3.13
- Fixes 'alabaster extension needs at least Sphinx v3.4' error on Windows Python 3.11
- Verified documentation build works locally with Python 3.13.0 and Sphinx 7.3.7

Co-Authored-By: mkeeler@launchdarkly.com <keelerm84@gmail.com>
@devin-ai-integration devin-ai-integration bot added the devin-pr Pull request created by Devin AI label Jun 26, 2025
@keelerm84 keelerm84 merged commit a57558e into main Jun 26, 2025
11 checks passed
@keelerm84 keelerm84 deleted the mk/sdk-1351/3.8 branch June 26, 2025 16:02
keelerm84 pushed a commit that referenced this pull request Jun 26, 2025
🤖 I have created a release *beep* *boop*
---


##
[1.3.0](1.2.4...1.3.0)
(2025-06-26)


### ⚠ BREAKING CHANGES

* Drop support for Python 3.8 (eol 2024-10-07)
([#49](#49))

### Features

* Drop support for Python 3.8 (eol 2024-10-07)
([#49](#49))
([a57558e](a57558e))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

1 participant