Skip to content

Conversation

@amotl
Copy link
Member

@amotl amotl commented Oct 25, 2025

About

Validate the code in CTK on Python 3.14, where possible.

@coderabbitai
Copy link

coderabbitai bot commented Oct 25, 2025

Walkthrough

Python version updates across GitHub Actions workflows and project configuration. Most workflows transition from Python 3.13 to 3.14; release workflows from 3.12 to 3.14. The pyproject.toml adds Python 3.14 to classifiers and updates the pyarrow dependency constraint to <23. Documentation updated to reflect Python 3.14 validation.

Changes

Cohort / File(s) Summary
Workflow Python 3.13→3.14 updates
.​github/workflows/cratedb-cloud.yml, .​github/workflows/dynamodb.yml, .​github/workflows/influxdb.yml, .​github/workflows/main.yml, .​github/workflows/release-oci-full.yml, .​github/workflows/release-oci-ingest.yml
Updated workflow matrix / Install Python steps from Python 3.13 to 3.14 where present. No other logic changes.
Workflow Python 3.12→3.14 & concurrency added
.​github/workflows/release-app.yml, .​github/workflows/release-pypi.yml
Bumped Python in Install Python step (3.12→3.14). Added concurrency (cancel-in-progress + group) in release workflows.
Project metadata and dependencies
pyproject.toml
Added Python 3.14 to classifiers; relaxed optional pyarrow constraint to <23.
Changelog
CHANGES.md
Added Unreleased notes: CI validated with Python 3.14 and permitted pyarrow 22.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Mostly homogeneous workflow version bumps and small metadata updates.
  • Pay attention to release workflow concurrency addition and any downstream release step assumptions.

Possibly related PRs

Suggested reviewers

  • hammerhead
  • surister

Poem

🐰 Three-fourteen's the springtime call,
We hopped from three-thirteen's old hall.
PyArrow's bounds stretch ever near,
CI hums bright — the tests 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
Title Check ✅ Passed The pull request title "CI: Start using Python 3.14" directly and clearly summarizes the main change in the changeset. The modifications across multiple workflow files (.github/workflows/*.yml) and supporting files (CHANGES.md, pyproject.toml) all center on updating CI to test against Python 3.14. The title is concise, specific enough to be meaningful on its own, and accurately reflects the primary objective without noise or vague terminology.
Description Check ✅ Passed The pull request description "Validate the code in CTK on Python 3.14, where possible" is clearly related to the changeset and explains the intent behind the modifications. It directly describes the purpose of updating workflows and configuration files to test the codebase against Python 3.14. While brief, the description is not vague and provides meaningful context for the changes.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch python314

📜 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 0ba4aab and 15f21a4.

📒 Files selected for processing (2)
  • .github/workflows/release-app.yml (2 hunks)
  • .github/workflows/release-pypi.yml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/release-app.yml
  • .github/workflows/release-pypi.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Python 3.14 on OS ubuntu-latest
  • GitHub Check: Python 3.14 on OS ubuntu-latest

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.

@amotl amotl added the dependencies Pull requests that update a dependency file label Oct 25, 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: 0

🧹 Nitpick comments (2)
pyproject.toml (1)

132-132: Verify pyarrow 22.x compatibility before release.

The pyarrow constraint has been significantly relaxed from <21.1 to <23, permitting pyarrow 22.x versions. While the changelog documents this intentional change, ensure that:

  1. PyArrow 22.x has been tested with the full test suite (especially the cfr extra which uses this dependency).
  2. Any known breaking changes in pyarrow 22.x have been assessed and addressed in the codebase.
  3. The upper bound <23 is intentional (does your code need compatibility with potential pyarrow 23.x pre-releases, or should you pin to <22.1?).

Consider documenting in code comments or a separate ADR why this constraint was relaxed, to help future maintainers understand the scope of pyarrow support.

CHANGES.md (1)

3-7: Changelog entry documents the pyarrow constraint change clearly.

The Unreleased entry documenting permission for pyarrow 22 installation accurately reflects the pyproject.toml update. The wording is clear and concise.

Consider adding a companion entry to explicitly document Python 3.14 support (e.g., "CI: Added Python 3.14 to test matrix and release workflows") for explicit visibility, or confirm that the pyarrow 22 entry is sufficient context.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c587fcc and 43f731b.

📒 Files selected for processing (11)
  • .github/workflows/cratedb-cloud.yml (1 hunks)
  • .github/workflows/dynamodb.yml (1 hunks)
  • .github/workflows/influxdb.yml (1 hunks)
  • .github/workflows/kinesis.yml (1 hunks)
  • .github/workflows/main.yml (1 hunks)
  • .github/workflows/release-app.yml (1 hunks)
  • .github/workflows/release-oci-full.yml (1 hunks)
  • .github/workflows/release-oci-ingest.yml (1 hunks)
  • .github/workflows/release-pypi.yml (1 hunks)
  • CHANGES.md (1 hunks)
  • pyproject.toml (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
  • GitHub Check: build-and-test
  • GitHub Check: Python 3.14 on OS ubuntu-latest
  • GitHub Check: Python 3.9 on OS ubuntu-latest
  • GitHub Check: Python 3.14 on OS ubuntu-latest
  • GitHub Check: Python 3.14, InfluxDB 2.6, OS ubuntu-latest
  • GitHub Check: Python 3.14, InfluxDB 2.7, OS ubuntu-latest
  • GitHub Check: Python 3.10, LocalStack 4.5, OS ubuntu-latest
  • GitHub Check: Python 3.13, PostgreSQL latest, OS ubuntu-latest
  • GitHub Check: Python 3.14, LocalStack 4.5, OS ubuntu-latest
  • GitHub Check: Kinesis: Python 3.14 on OS ubuntu-latest
  • GitHub Check: Kinesis: Python 3.11 on OS ubuntu-latest
  • GitHub Check: CFR for OS macos-latest
  • GitHub Check: CFR for OS macos-13
  • GitHub Check: CFR for OS ubuntu-latest
  • GitHub Check: CFR for OS windows-latest
🔇 Additional comments (10)
pyproject.toml (1)

60-61: Python 3.14 classifier addition looks good.

The addition of "Programming Language :: Python :: 3.14" to the classifiers is correct and follows standard practice for announcing Python version support.

.github/workflows/kinesis.yml (1)

40-43: Python version matrix update is straightforward.

The test matrix now covers Python 3.11 and 3.14. Dropping Python 3.13 from the test matrix is a reasonable choice if the intent is to test only against recent stable releases. Ensure this is documented in your CI strategy.

.github/workflows/release-oci-full.yml (1)

46-47: Python 3.14 runtime for OCI image build is approved.

The change from 3.13 to 3.14 for the full OCI container image build is appropriate. Ensure that the resulting Docker image and all build artifacts have been validated before merging.

.github/workflows/release-pypi.yml (1)

22-23: Python 3.14 for PyPI release workflow is appropriate.

Using Python 3.14 as the build environment for creating and publishing the wheel package to PyPI is a sound choice. This ensures the wheel is built with the latest stable Python version.

Verify that the wheel built on Python 3.14 maintains compatibility with the declared requires-python = ">=3.8" minimum version.

.github/workflows/influxdb.yml (1)

40-43: InfluxDB test matrix update is consistent with PR scope.

The test matrix now covers Python 3.9 and 3.14 across InfluxDB 2.6 and 2.7. This is consistent with the Python version upgrade strategy across the project.

.github/workflows/release-oci-ingest.yml (1)

46-47: Python 3.14 for ingest OCI build is aligned with full OCI workflow.

The update to Python 3.14 for the ingest container image build is consistent with the parallel update to release-oci-full.yml.

.github/workflows/dynamodb.yml (1)

40-43: DynamoDB test matrix updated appropriately.

The test matrix now covers Python 3.10 and 3.14, maintaining coverage of an older stable version alongside the new latest version.

.github/workflows/main.yml (1)

30-32: Verify Python 3.14 support across the dependency tree.

The addition of Python 3.14 to the test matrix looks good, and maintaining Python 3.9 provides good compatibility coverage. However, ensure all project dependencies (especially those with native extensions or tight version constraints) officially support Python 3.14.

Per the PR summary, pyarrow constraints are being relaxed from <21.1 to <23. Please confirm that pyarrow 22 and Python 3.14 are compatible and that this constraint change is documented in the provided pyproject.toml and CHANGES.md updates.

.github/workflows/cratedb-cloud.yml (1)

30-32: Clarify intent: Single Python version for cloud-specific integration tests.

This workflow now tests only Python 3.14, whereas the main test workflow maintains coverage for both 3.9 and 3.14. If the prior version tested multiple Python versions, consider whether testing only the latest version is sufficient for cloud integration stability.

.github/workflows/release-app.yml (1)

40-43: Verify PyInstaller compatibility with Python 3.14.

The version bump from 3.12 to 3.14 is consistent with the PR objectives. Ensure PyInstaller and other build tooling used in the CFR (application bundle) workflow have stable Python 3.14 support.

amotl added 4 commits October 25, 2025 20:09
fatal error: librdkafka/rdkafka.h: No such file or directory
 23 | #include <librdkafka/rdkafka.h>
    |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1

hint: This error likely indicates that you need to install a library
that provides "librdkafka/rdkafka.h" for `[email protected]`
help: `confluent-kafka` (v2.8.0) was included because
`cratedb-toolkit[io-ingestr]` (v0.0.0) depends on `ingestr` (v0.14.96)
which depends on `confluent-kafka`

=> Why is the PostgreSQL integration using Kafka anyway? ;]
kinesis.exceptions.StreamDoesNotExist: Stream 'testdrive' does not exist

=> Just a timing problem?
@amotl
Copy link
Member Author

amotl commented Oct 25, 2025

@surister: I had to retract updating three CI slots per 56c430b, 0ba4aab, and 8cd704e, where updating to Python 3.14 introduced regressions I don't want to look into right now.

NB: ThePyMongo CI slot currently fails for different reasons.

@amotl amotl requested review from hammerhead and surister October 25, 2025 18:13
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 43f731b and 0ba4aab.

📒 Files selected for processing (10)
  • .github/workflows/cratedb-cloud.yml (1 hunks)
  • .github/workflows/dynamodb.yml (1 hunks)
  • .github/workflows/influxdb.yml (1 hunks)
  • .github/workflows/main.yml (1 hunks)
  • .github/workflows/release-app.yml (1 hunks)
  • .github/workflows/release-oci-full.yml (1 hunks)
  • .github/workflows/release-oci-ingest.yml (1 hunks)
  • .github/workflows/release-pypi.yml (1 hunks)
  • CHANGES.md (1 hunks)
  • pyproject.toml (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • .github/workflows/cratedb-cloud.yml
  • .github/workflows/main.yml
  • .github/workflows/influxdb.yml
  • .github/workflows/release-pypi.yml
  • .github/workflows/release-oci-ingest.yml
  • .github/workflows/release-oci-full.yml
  • .github/workflows/release-app.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: build-and-publish
  • GitHub Check: Python 3.14, InfluxDB 2.6, OS ubuntu-latest
  • GitHub Check: Python 3.14, InfluxDB 2.7, OS ubuntu-latest
  • GitHub Check: Python 3.14 on OS ubuntu-latest
  • GitHub Check: Python 3.9 on OS ubuntu-latest
  • GitHub Check: Python 3.14 on OS ubuntu-latest
  • GitHub Check: build-and-test
  • GitHub Check: Python 3.10, LocalStack 4.5, OS ubuntu-latest
  • GitHub Check: Python 3.14, LocalStack 4.5, OS ubuntu-latest
  • GitHub Check: Kinesis: Python 3.11 on OS ubuntu-latest
  • GitHub Check: Kinesis: Python 3.13 on OS ubuntu-latest
  • GitHub Check: CFR for OS windows-latest
  • GitHub Check: CFR for OS ubuntu-latest
🔇 Additional comments (3)
pyproject.toml (2)

55-61: Classifier addition for Python 3.14 looks good.

The new classifier is properly positioned and aligns with the PR objective to validate on Python 3.14.


125-134: Pyarrow constraint update is appropriately isolated and reasonable.

The constraint change from <21.1 to <23 permits pyarrow 22.x and is isolated to the cfr optional-dependency group. DuckDB's core doesn't require Arrow, but some result fetches use it; simply pip install pyarrow resolves that. Both duckdb<1.4 and polars<1.34 support pyarrow interoperability, and no conflicting constraints were found elsewhere in the codebase. The update aligns with the stated goal in CHANGES.md of permitting pyarrow 22.x.

CHANGES.md (1)

7-8: Changelog entries are clear and accurate.

Both entries properly document the Python 3.14 CI validation and the pyarrow 22 compatibility update. They are well-positioned in the "Unreleased" section.

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

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant