You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* ci: add standardized release script and automation
Add scripts/release.sh for version bumps, changelog updates, tagging, and
GitHub Release creation via CI. Enforce changelog checks on version PRs.
* ci: add pytest workflow on pull requests
* fix: rewrite changelog updater for Keep a Changelog format
Avoid duplicate [Unreleased] headings and keep the preamble intact when
preparing releases. Add unit tests and harden release workflow output.
* test: fix changelog unit test imports in CI
* feat: switch managed databases to /databases API (hotdata>=0.2.3)
- Use DatabasesApi instead of ConnectionsApi for all managed database ops
- Rename create_managed_database first param from name to description (kw-only)
- Add expires_at param to create_managed_database
- ManagedDatabase: replace name/source_type with description/default_connection_id
- resolve_managed_database: ID lookup first, description scan as fallback
- list_managed_databases: fetch all databases, no source_type filter
- list_managed_tables, load_managed_table, delete_managed_table: use default_connection_id
- Remove MANAGED_SOURCE_TYPE, build_managed_config, create_connection_request from public API
* chore: re-lock after hotdata>=0.2.3 dep bump
---------
Co-authored-by: Eddie A Tejeda <669988+eddietejeda@users.noreply.github.com>
All notable changes to this project will be documented in this file.
4
+
5
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+
## [Unreleased]
9
+
10
+
## [0.2.0] - 2026-05-24
11
+
12
+
### Changed
13
+
14
+
- Switch managed database operations from the connections API to the dedicated `/databases` API (`hotdata>=0.2.3` required).
15
+
-`create_managed_database` first parameter renamed from `name` to `description` (keyword-only).
16
+
-`ManagedDatabase` dataclass: replace `name`/`source_type` fields with `description`/`default_connection_id`.
17
+
-`resolve_managed_database` tries direct ID lookup first, then falls back to a description scan.
18
+
-`list_managed_databases` now fetches all databases regardless of source type.
19
+
-`list_managed_tables`, `load_managed_table`, and `delete_managed_table` use `default_connection_id` instead of database `id` for connection-scoped operations.
20
+
21
+
### Added
22
+
23
+
-`create_managed_database` accepts an optional `expires_at` parameter.
24
+
25
+
### Removed
26
+
27
+
-`MANAGED_SOURCE_TYPE`, `build_managed_config`, and `create_connection_request` removed from the public API.
-`resolve_managed_database(name_or_id)` resolves a managed database by name or id.
63
-
-`create_managed_database(name, schema=..., tables=...)` creates a managed database and optionally declares tables up front.
64
-
-`delete_managed_database(name_or_id)` deletes a managed database connection.
58
+
-`list_managed_databases()` returns all databases via the `/databases` API.
59
+
-`resolve_managed_database(name_or_id)` resolves a database by id (direct lookup) or description (list scan).
60
+
-`create_managed_database(description=..., schema=..., tables=..., expires_at=...)` creates a database via the `/databases` API and optionally declares tables up front.
61
+
-`delete_managed_database(name_or_id)` deletes a database via the `/databases` API.
65
62
-`list_managed_tables(database, schema=...)` lists tables in a managed database.
66
63
-`upload_parquet(path)` uploads a local parquet file and returns an upload id.
67
64
-`load_managed_table(database, table, schema=..., upload_id=..., file=...)` publishes parquet data into a declared managed table.
Every release uses `./scripts/release.sh`. Do not bump versions, tag, or create GitHub Releases manually.
4
+
5
+
## One-time setup
6
+
7
+
- Install [GitHub CLI](https://cli.github.com/) (`gh`) and authenticate.
8
+
- Ensure PyPI [trusted publishing](https://docs.pypi.org/trusted-publishers/) is configured for this repo (`publish.yml` uses the `pypi` GitHub environment).
9
+
10
+
## Release steps
11
+
12
+
1. Add user-facing notes under `## [Unreleased]` in `CHANGELOG.md`.
13
+
2. Prepare the release PR:
14
+
15
+
```bash
16
+
./scripts/release.sh prepare patch # or minor | major | 1.2.3
17
+
```
18
+
19
+
3. Merge the PR after CI passes (including the changelog check).
20
+
4. Publish from a clean default branch checkout:
21
+
22
+
```bash
23
+
git checkout main # or master for hotdata-marimo
24
+
git pull
25
+
./scripts/release.sh publish
26
+
```
27
+
28
+
## What happens automatically
29
+
30
+
Pushing a `vX.Y.Z` tag triggers two workflows:
31
+
32
+
| Workflow | Purpose |
33
+
|----------|---------|
34
+
|`publish.yml`| Build wheel/sdist and publish to PyPI |
35
+
|`release.yml`| Create the GitHub Release with notes from `CHANGELOG.md`|
36
+
37
+
## Enforcement
38
+
39
+
-**PR check** (`check-release.yml`): if `pyproject.toml` version changes, `CHANGELOG.md` must contain a matching `## [X.Y.Z]` section.
40
+
-**Tag check** (`publish.yml`): the tag (without `v`) must match `[project].version` in `pyproject.toml`.
41
+
-**Publish guard** (`release.sh publish`): refuses to tag if the changelog section is missing.
42
+
43
+
Together, these make it hard to ship a version without changelog notes or a GitHub Release.
0 commit comments