Skip to content

Conversation

@amunra
Copy link
Collaborator

@amunra amunra commented Nov 28, 2025

Summary by CodeRabbit

  • Documentation

    • Added Python version support notes: now documents support for Python 3.14/3.14t and removal of Python 3.9.
  • Chores

    • Raised minimum supported Python to 3.10.
    • Adjusted dependency handling so certain optional packages are skipped on Python 3.14+.
    • Updated CI to use newer Python versions and pass an explicit python flag to test runs.
  • Tests

    • Added buffer protocol v3 tests; duplicate test entries were inadvertently introduced.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 28, 2025

Walkthrough

Raises required Python to >=3.10, documents Python 3.14/3.14t support and removal of 3.9; adjusts cibuildwheel skip patterns; conditions a fastparquet import on Python <3.14 in CI install script; adds duplicate TestBufferProtocolVersionV3 test class; updates CI test Python versions and uv run invocations.

Changes

Cohort / File(s) Change Summary
Changelog
CHANGELOG.rst
Adds a "Python Version Support" subsection under Bug fixes documenting support for Python 3.14 and 3.14t and that Python 3.9 is EoL. No API or functional changes.
Project metadata
pyproject.toml
Updates requires-python from >=3.9 to >=3.10. Replaces individual cp314-*/cp314t-* skip entries with a single *314t-win* skip pattern and an explanatory comment about temporary skips due to missing Pandas wheels.
CI install script
ci/pip_install_deps.py
Introduces a local py_version tuple and conditions the fastparquet import in the Linux/glibc/64-bit/CPython path to py_version < (3, 14) with a comment that fastparquet is temporarily not required on Python 3.14+.
Tests
test/test.py
Inserts TestBufferProtocolVersionV3 (class with name = 'protocol version 3', version = 3) resulting in two identical public class declarations (duplicate test class).
CI pipeline
ci/run_tests_pipeline.yaml
Bumps one CI test group's Python from 3.9 → 3.10 and adds explicit --python python to all uv run test invocations across the numpy-version test groups; other pipeline structure unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Verify py_version detection and the conditional fastparquet import in ci/pip_install_deps.py to ensure no unintended skips on affected runners.
  • Remove or reconcile duplicate TestBufferProtocolVersionV3 definitions in test/test.py.
  • Confirm pyproject.toml requires-python bump and the revised tool.cibuildwheel skip pattern match release/CI target expectations.
  • Validate ci/run_tests_pipeline.yaml changes (Python bump and --python python) do not alter which interpreter the uv runs execute.

Poem

🐰 I hop through patches, whiskers bright and keen,
3.9 fades where old carrots have been,
3.10 strides in with a polished shoe,
3.14 peeks in, a curious view,
nibbling changelogs — a rabbit's tiny cheer!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately summarizes the main changes: dropping Python 3.9 support and adding Python 3.14 and 3.14t support, which are the primary objectives reflected across all modified files.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dropping_py39_support

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 93af176 and 5f9048a.

📒 Files selected for processing (2)
  • CHANGELOG.rst (1 hunks)
  • pyproject.toml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • CHANGELOG.rst
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: amunra
Repo: questdb/py-questdb-client PR: 120
File: ci/run_tests_pipeline.yaml:85-85
Timestamp: 2025-11-28T17:46:34.693Z
Learning: In the py-questdb-client repository, Python version testing is handled by cibuildwheel configuration in pyproject.toml. The ci/run_tests_pipeline.yaml pipeline is specifically for testing against various numpy versions, not for comprehensive Python version coverage.
📚 Learning: 2025-11-28T17:46:34.693Z
Learnt from: amunra
Repo: questdb/py-questdb-client PR: 120
File: ci/run_tests_pipeline.yaml:85-85
Timestamp: 2025-11-28T17:46:34.693Z
Learning: In the py-questdb-client repository, Python version testing is handled by cibuildwheel configuration in pyproject.toml. The ci/run_tests_pipeline.yaml pipeline is specifically for testing against various numpy versions, not for comprehensive Python version coverage.

Applied to files:

  • pyproject.toml
🔇 Additional comments (2)
pyproject.toml (2)

4-4: ✓ Python version requirement correctly updated to reflect dropped 3.9 support.

The change from >=3.9 to >=3.10 aligns with the PR objective to drop Python 3.9 support.


69-71: ✓ cibuildwheel skip pattern correctly enables Python 3.14/3.14t with documented limitation.

The change from skipping all 3.14 builds (cp314-* and cp314t-*) to skipping only Windows 3.14t (*314t-win*) correctly enables Python 3.14 support on all platforms and 3.14t support on non-Windows platforms, with the temporary Windows 3.14t limitation clearly documented due to missing Pandas dependencies. This aligns well with the PR objectives.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@amunra amunra changed the title chore: dropped python 3.9 support chore: dropped python 3.9 support, added python 3.14 and 3.14t support Nov 28, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
CHANGELOG.rst (1)

138-143: Consider moving this section out of "Bug fixes".

"Python Version Support" describes version compatibility changes, not bug fixes. Consider placing it as a standalone subsection at the same level as "Bug fixes" and "Features", or rename to clarify it's a maintenance/infrastructure change.

That said, the content accurately documents the changes.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f1dcc72 and 13bff66.

📒 Files selected for processing (4)
  • CHANGELOG.rst (1 hunks)
  • ci/pip_install_deps.py (1 hunks)
  • pyproject.toml (1 hunks)
  • test/test.py (1 hunks)
🔇 Additional comments (2)
pyproject.toml (1)

4-4: LGTM! Python version requirement correctly updated.

The minimum Python version is now set to >=3.10, aligning with the PR objective of dropping Python 3.9 (end of life) support.

ci/pip_install_deps.py (1)

91-101: LGTM! Conditional fastparquet import for Python 3.14 compatibility.

The guard correctly skips the fastparquet import verification on Python 3.14+ where the package is not yet available. The comment clearly explains this is a temporary measure.

@amunra amunra force-pushed the dropping_py39_support branch from 286815e to deceb89 Compare November 28, 2025 16:57
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 715dfc2 and 93af176.

📒 Files selected for processing (1)
  • ci/run_tests_pipeline.yaml (2 hunks)
🔇 Additional comments (2)
ci/run_tests_pipeline.yaml (2)

91-95: Verify uv --python syntax and test class reference.

Two concerns:

  1. The --python python syntax appears unusual—typically you'd specify a version (e.g., --python 3.10). Please verify this is correct and aligns with your uv version and documentation.
  2. The AI summary mentions a new TestBufferProtocolVersionV3 test class was added, but these commands still reference TestBufferProtocolVersionV2. Confirm whether the test class reference is outdated or intentional.

109-109: Python 3.11 for numpy 2.x tests and uv syntax consistency.

The numpy 2.x test job uses Python 3.11, which is reasonable. However, the same concerns about --python python syntax and test class reference (V2 vs V3) from the 1.x test job apply here as well. Additionally, consider whether Python 3.14/3.14t should be tested with the newer numpy 2.x versions.

Also applies to: 115-119

@amunra amunra merged commit 3cd70bf into main Nov 28, 2025
18 checks passed
@amunra amunra deleted the dropping_py39_support branch November 28, 2025 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants