Skip to content

Prepare v4.0.0 release - #155

Open
lukekim wants to merge 3 commits into
trunkfrom
lukim/docs
Open

Prepare v4.0.0 release#155
lukekim wants to merge 3 commits into
trunkfrom
lukim/docs

Conversation

@lukekim

@lukekim lukekim commented May 12, 2026

Copy link
Copy Markdown
Contributor

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

  • Bump version to 4.0.0 (now defined statically in pyproject.toml; dynamic = ["version"] removed).
  • Consolidate packaging into pyproject.toml. Removed:
    • setup.py
    • requirements.txt
    • test.requirements.txt
    • MANIFEST.in
  • Update .github/workflows/version.yml and .github/CODEOWNERS and the release-checklist issue template to point at pyproject.toml instead of setup.py.
  • Verified: python -m build produces a clean sdist and wheel.

Region-specific Cloud endpoints

The legacy flight.spiceai.io / data.spiceai.io hostnames are no longer valid. Updated to region-specific defaults:

  • grpc+tls://us-east-1-prod-aws-flight.spiceai.io
  • https://us-east-1-prod-aws-data.spiceai.io

Also fixed Client(http_url=...) to default to the local URL (previously defaulted to the cloud URL while flight_url defaulted to local).

Docs

  • Rewrote README.md to cover everything the implementation now ships:
    • Typed query helpers (query_arrow/pandas/polars/pylist/pydict/batches)
    • DataFrame API (client.table/sql/from_arrow/from_pandas/from_pydict)
    • Expr DSL (col, lit, case) and spicepy.functions
    • Catalog introspection (catalogs, schemas, tables, describe, get_schema, explain, show)
    • Writers (write_parquet, write_csv, write_json)
    • Parameterized queries via params= and query_with_params
  • Install instructions use pip install git+https://github.com/spiceai/spicepy@v4.0.0 (spicepy is not on PyPI under that name).
  • Bumped documented Python requirement to 3.11+ (matches pyproject.toml).
  • Added docs/release_notes/v4.0.0.md.

Breaking changes (documented in release notes)

  • Region-specific Cloud endpoints required.
  • Client(http_url=...) now defaults to local.
  • Python ≥ 3.11.
  • Core dep major bumps (pyarrow 24, pandas 3, certifi 2026.4.22, requests 2.34).
  • Empty api_key strings treated as None (already in trunk via Handle empty api_key #133).

- 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
@lukekim lukekim self-assigned this May 12, 2026
@lukekim lukekim added this to the v4.0.0 milestone Jul 26, 2026
@lukekim
lukekim requested a review from Copilot July 26, 2026 01:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.0 and consolidated packaging into pyproject.toml (removing legacy packaging files).
  • Updated default Cloud endpoints to region-specific us-east-1-prod-aws-* hostnames and changed Client’s default http_url to 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.

Comment thread tests/test_main.py
Comment on lines +58 to +61
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)
Comment thread README.md
@@ -5,128 +5,237 @@
[![Test](https://github.com/spiceai/spicepy/actions/workflows/test.yml/badge.svg)](https://github.com/spiceai/spicepy/actions/workflows/test.yml)
[![codecov](https://codecov.io/gh/spiceai/spicepy/branch/trunk/graph/badge.svg)](https://codecov.io/gh/spiceai/spicepy)
[![PyPI version](https://badge.fury.io/py/spicepy.svg)](https://badge.fury.io/py/spicepy)
Comment on lines +28 to 30
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).
@claudespice

Copy link
Copy Markdown

Both red check groups on this release PR are already diagnosed and neither is caused by the diff.

1. All 12 Integration tests jobs — upstream registry bug, tracked as spiceai/spiceai#12116.

Every one dies in fixture setup, before a single test runs:

spice add spiceai/quickstart
ERROR Invalid argument: Failed to extract Spicepod archive: invalid Zip archive: Could not find EOCD

api.spicerack.org/v1/spicepods/spiceai/quickstart answers HTTP 200 with content-type: application/zip but a ~150-byte JSON error body (selected encoding not supported — the storage path is assembled with no separators). The CLI only checks status.is_success() before handing the body to the zip reader, so the registry's real message is discarded and you get the misleading EOCD error. spice add is broken for everyone right now, not just CI.

Worth noting the workflow's 3-attempt retry around the network steps cannot help here — it's a deterministic 200, not a flake.

2. The 4 Lint with ruff jobs — 2 PLR0917 errors on __init__ signatures this PR doesn't touch. ruff floats (>=), and PLR0917 positional-argument counting changed in a newer release, so the pin drifted under the repo. #176 already covers this.

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.

@claudespice

Copy link
Copy Markdown

Update — this blocker has cleared; the red runs just predate the fix.

The spiceai/quickstart registry entry now serves a valid archive. Re-probed 2026-07-31T22:2xZ:

$ curl -sSI https://api.spicerack.org/v1/spicepods/spiceai/quickstart
HTTP/2 200
content-type: application/zip

$ unzip -t q.zip
    testing: spicepod.yaml            OK
No errors detected in compressed data of q.zip.

279 bytes, valid PK header and EOCD, and it extracts a well-formed spicepod.yaml for the taxi_trips dataset — so spice add spiceai/quickstart succeeds again and the tracking issue spiceai/spiceai#12116 is closed.

The failing Integration tests runs on this PR are from 2026-07-25/26, before the registry recovered, and CI has not re-run since. A maintainer re-run of the failed jobs should green them with no change to this branch — I do not have rerun rights here (gh run rerunMust have admin rights to Repository).

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