Prepare v4.0.0 release - #155
Conversation
- Bump version to 4.0.0 (now defined statically in pyproject.toml) - Consolidate packaging into pyproject.toml; remove setup.py, requirements.txt, test.requirements.txt, MANIFEST.in - Update Spice.ai Cloud endpoints to region-specific hostnames (us-east-1-prod-aws-flight.spiceai.io / -data.spiceai.io); fix Client(http_url=...) default to local - Rewrite README to cover DataFrame API, Expr DSL, functions module, typed query helpers, catalog introspection, writers, and parameterized queries; bump documented Python requirement to 3.11+ - Add docs/release_notes/v4.0.0.md - Update CI version workflow and CODEOWNERS to reference pyproject.toml instead of setup.py
There was a problem hiding this comment.
Pull request overview
Prepares the v4.0.0 release by migrating packaging metadata to pyproject.toml, updating default Spice.ai Cloud endpoints to region-specific hostnames, aligning docs with current SDK capabilities, and adjusting defaults so Client(http_url=...) matches the local-runtime default behavior.
Changes:
- Bumped project version to
4.0.0and consolidated packaging intopyproject.toml(removing legacy packaging files). - Updated default Cloud endpoints to region-specific
us-east-1-prod-aws-*hostnames and changedClient’s defaulthttp_urlto the local runtime URL. - Expanded/rewrote documentation and added release notes for
v4.0.0.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_main.py |
Updates Cloud test client default Flight endpoint and keeps local client configuration. |
test.requirements.txt |
Removes legacy test requirements file (dependencies now in pyproject.toml). |
spicepy/config.py |
Updates default Cloud endpoints to region-specific hostnames. |
spicepy/_client.py |
Changes Client default http_url to the local runtime default. |
setup.py |
Removes legacy setuptools packaging entrypoint. |
requirements.txt |
Removes legacy runtime requirements file (moved to pyproject.toml). |
README.md |
Rewrites docs to match current SDK features and updates install/connect guidance. |
pyproject.toml |
Sets static version 4.0.0 and centralizes project/dependency metadata and extras. |
MANIFEST.in |
Removes exclusion of pyproject.toml from source distributions. |
docs/release_notes/v4.0.0.md |
Adds release notes documenting new APIs and breaking changes. |
CONTRIBUTING.md |
Updates documented minimum Python version for contributors. |
.github/workflows/version.yml |
Updates version extraction source to pyproject.toml. |
.github/ISSUE_TEMPLATE/end_game.md |
Updates release checklist references from setup.py to pyproject.toml. |
.github/CODEOWNERS |
Removes ownership entries for deleted packaging files and keeps pyproject.toml. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| flight_url = os.environ.get( | ||
| "SPICE_FLIGHT_URL", "grpc+tls://us-east-1-prod-aws-flight.spiceai.io" | ||
| ) | ||
| return Client(api_key=api_key, flight_url=flight_url) |
| @@ -5,128 +5,237 @@ | |||
| [](https://github.com/spiceai/spicepy/actions/workflows/test.yml) | |||
| [](https://codecov.io/gh/spiceai/spicepy) | |||
| [](https://badge.fury.io/py/spicepy) | |||
| VERSION=$(grep -E '^version = "[0-9.]+"' pyproject.toml | head -n1 | cut -d'"' -f2) | ||
| echo "Extracted version is $VERSION" | ||
| echo "version=$VERSION" >> "$GITHUB_OUTPUT" |
|
|
||
| - **Spice.ai Cloud endpoints are now region-specific.** The legacy region-agnostic hostnames `grpc+tls://flight.spiceai.io` and `https://data.spiceai.io` are no longer valid. Use `grpc+tls://<region>-prod-aws-flight.spiceai.io` and `https://<region>-prod-aws-data.spiceai.io` (e.g. `us-east-1`, `us-west-2`, `eu-west-1`). `config.DEFAULT_FLIGHT_URL` and `config.DEFAULT_HTTP_URL` have been updated accordingly. | ||
| - **`Client(http_url=...)` now defaults to the local runtime** (`http://localhost:8090`), matching the existing `flight_url` default. Previously it defaulted to the (now broken) cloud HTTP hostname. | ||
| - **Minimum Python version is now 3.11** (previously 3.8). |
|
Both red check groups on this release PR are already diagnosed and neither is caused by the diff. 1. All 12 Every one dies in fixture setup, before a single test runs:
Worth noting the workflow's 3-attempt retry around the network steps cannot help here — it's a deterministic 2. The 4 Nothing to fix on this branch for either. Flagging so the v4.0.0 release isn't held on the assumption that the red is its own. |
|
Update — this blocker has cleared; the red runs just predate the fix. The 279 bytes, valid The failing |
Summary
Prepares the v4.0.0 release: updates docs to match the implementation, bumps the version, consolidates packaging into
pyproject.toml, and switches Spice.ai Cloud endpoints to the region-specific hostnames.Changes
Version & packaging
pyproject.toml;dynamic = ["version"]removed).pyproject.toml. Removed:setup.pyrequirements.txttest.requirements.txtMANIFEST.in.github/workflows/version.ymland.github/CODEOWNERSand the release-checklist issue template to point atpyproject.tomlinstead ofsetup.py.python -m buildproduces a clean sdist and wheel.Region-specific Cloud endpoints
The legacy
flight.spiceai.io/data.spiceai.iohostnames are no longer valid. Updated to region-specific defaults:grpc+tls://us-east-1-prod-aws-flight.spiceai.iohttps://us-east-1-prod-aws-data.spiceai.ioAlso fixed
Client(http_url=...)to default to the local URL (previously defaulted to the cloud URL whileflight_urldefaulted to local).Docs
README.mdto cover everything the implementation now ships:query_arrow/pandas/polars/pylist/pydict/batches)client.table/sql/from_arrow/from_pandas/from_pydict)col,lit,case) andspicepy.functionscatalogs,schemas,tables,describe,get_schema,explain,show)write_parquet,write_csv,write_json)params=andquery_with_paramspip install git+https://github.com/spiceai/spicepy@v4.0.0(spicepy is not on PyPI under that name).pyproject.toml).docs/release_notes/v4.0.0.md.Breaking changes (documented in release notes)
Client(http_url=...)now defaults to local.api_keystrings treated asNone(already in trunk via Handle empty api_key #133).