Skip to content

[deps] Dropped support for Python 3.10 (EOL) - #89

Open
dee077 wants to merge 1 commit into
masterfrom
issues/88-drop-python-3.10
Open

dee077 wants to merge 1 commit into
masterfrom
issues/88-drop-python-3.10

Conversation

@dee077

@dee077 dee077 commented Oct 30, 2026

Copy link
Copy Markdown
Member

Checklist

Reference to Existing Issue

Closes #88.

Description of Changes

  • Dropped Python 3.10 from the CI matrix and the PyPI build since it reached end of life.
  • Raised python_requires to 3.11 and updated the classifiers and the README.
  • Removed the Python 2 coding declarations from runtests.py and the docs configuration.

- Dropped Python 3.10 from CI and the PyPI build since it reached end of life.
- Raised python_requires to 3.11 and updated the classifiers and README.
- Removed the Python 2 coding declarations from runtests.py and the docs configuration.

Closes #88
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 75c8c249-d9ba-4b08-a90e-5c41a7b2ed92
Commits

Reviewing files that changed from the base of the PR and between ddfce64 and 5c2850d.

Files selected for processing: 6
  • .github/workflows/ci.yml
  • .github/workflows/pypi.yml
  • README.rst
  • docs/source/conf.py
  • runtests.py
  • setup.py
Files with no reviewable changes: 3
  • runtests.py
  • docs/source/conf.py
  • .github/workflows/ci.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details
Context from checks skipped due to timeout: 3
  • GitHub Check: Python==3.11
  • GitHub Check: Python==3.13
  • GitHub Check: Python==3.12
Additional context used
Path-based instructions: 5
Do not complain about dependencies installed from controlled mutable OpenWISP branches.

CodeRabbit configuration file

Files:

  • .github/workflows/pypi.yml
Verify that documentation remains consistent with the implemented behavior and does not reference deprecated or removed functionality.

CodeRabbit configuration file

Files:

  • README.rst
Flag potential security vulnerabilities Flag obvious performance regressions, such as heavy loops, repeated I/O, or unoptimized queries Flag unused or redundant code Flag outdated or incorrect comments/docstrings Ensure new code handles err...

CodeRabbit configuration file

Files:

  • .github/workflows/pypi.yml
  • README.rst
  • setup.py
If a pull request is flagged as invalid, immediately stop reviewing it.

CodeRabbit inference engine (Custom checks)

Files:

  • .github/workflows/pypi.yml
  • README.rst
  • setup.py
In Django code, mark all user-facing strings as translatable using the Django internationalization framework.

CodeRabbit inference engine (Custom checks)

Files:

  • setup.py
Learnings: 1
Common learnings
Learnt from: CR
Repo: openwisp/netengine PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-10-27T18:26:29.030Z
Learning: Source excerpt:
# AGENTS.md

## Development Rules

- Update docs when behavior, public APIs, setup steps, or supported versions change, including when a documented feature's behavior changes or a new user-facing feature is added.
Learnt from: CR
Repo: openwisp/netengine PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-08-01T21:30:58.985Z
Learning: Applies to **/* : When documented behavior changes, update the documentation to reflect the new behavior.
Additional comments: 3
setup.py: 1

36-36: LGTM!

Also applies to: 45-45

README.rst: 1

26-26: LGTM!

.github/workflows/pypi.yml: 1

32-32: LGTM!

Walkthrough

The package metadata now requires Python 3.11 or newer, and Python 3.10 is removed from the supported-version list and CI matrix. The PyPI publishing workflow now uses Python 3.11. Two files no longer include UTF-8 encoding declarations.

Priority: Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Suggested reviewers: nemesifier, purhan

Merge Risk: Minimal · up to 5c285

The metadata, documentation, CI, publishing workflow, and inspected compatibility code consistently support Python 3.11 and newer.

Pre-merge checks: Passed 4 · Inconclusive 1

Failed Failed checks: 1 inconclusive

Check name Status Explanation Resolution
Linked Issues check Inconclusive Issue #88 has coding requirements in two groups.

Group 1: Remove Python 3.10 from supported versions, CI matrix, and package metadata. Evidence at head: setup.py sets python_requires=">=3.11". Its cl…
Confirm that no code under netengine/ or tests/ exists only to support Python 3.10 or older. Specifically, check for sys.version_info or platform version checks, version-gated imports, and compatibility shims. Report the result, or the remo…
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title uses the allowed [deps] prefix and clearly describes the removal of Python 3.10 support, which matches the changeset and linked issue.
Description check Passed The description includes the checklist, issue reference, and a clear summary of the changes. The screenshot section is not included, but no screenshot appears necessary for these configuration and met…
Out of Scope Changes check Passed All changed files relate to the scope of #88. The changes are: ci.yml (3.10 removed from matrix), pypi.yml (build uses Python 3.11), README.rst (supported versions), setup.py (python_requires and clas…
Ui Changes, Regression Test, Docs Passed PASS. The PR changes only CI, package metadata, documentation, and encoding declarations. It introduces no end-user UI change and no application-code feature or bug fix, so screenshots and regression …
Full details: Description check

Explanation

The description includes the checklist, issue reference, and a clear summary of the changes. The screenshot section is not included, but no screenshot appears necessary for these configuration and metadata changes.

Full details: Out of Scope Changes check

Explanation

All changed files relate to the scope of #88. The changes are: ci.yml (3.10 removed from matrix), pypi.yml (build uses Python 3.11), README.rst (supported versions), setup.py (python_requires and classifiers), and runtests.py and docs/source/conf.py (Python 2 UTF-8 coding declarations removed). The Python 2 declarations exist only for Python 2, which is older than 3.10. Removing them fits the issue's request to remove code that exists only for older Python versions. The docs conf.py and runtests.py edits do not change behavior, according to the summary. No unrelated functional changes appear in the summary. No new tests are added, and the PR description marks new tests as N/A. This is not an out-of-scope change.

Full details: Ui Changes, Regression Test, Docs

Explanation

PASS. The PR changes only CI, package metadata, documentation, and encoding declarations. It introduces no end-user UI change and no application-code feature or bug fix, so screenshots and regression tests are not required. The supported-version documentation in README.rst was updated from Python 3.10–3.13 to Python 3.11–3.13.

Full details: Linked Issues check

Explanation

Issue #88 has coding requirements in two groups.

Group 1: Remove Python 3.10 from supported versions, CI matrix, and package metadata. Evidence at head: setup.py sets python_requires=">=3.11". Its classifiers list 3.11, 3.12, and 3.13 only. The raw summary reports the CI matrix (ci.yml), the PyPI workflow (pypi.yml), and README.rst changed to drop 3.10. This group appears met.

Group 2: Remove or refactor code that exists only for Python 3.10 or older (version checks, compatibility shims, backport dependencies). Backport dependencies: requirements.txt lists only netaddr~=1.3.0 and pysnmp~=7.1.30. requirements-test.txt has no version-gated backport packages. No such dependency is present. Version checks and compatibility shims: the raw summary lists no changes under netengine/ or tests/. The PR does not report any removal of such code. The search for sys.version_info checks, version-gated imports, or shims in netengine/ and tests/ was not completed. Absence of such code is not established.

Resolution

Confirm that no code under netengine/ or tests/ exists only to support Python 3.10 or older. Specifically, check for sys.version_info or platform version checks, version-gated imports, and compatibility shims. Report the result, or the removed code if any was found, so the Python-version-specific code requirement from #88 can be decided.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[deps] Remove Python 3.10 (EOL)

1 participant