From bd43d1d7f8279c5b3de700455a14f3e9de9f8647 Mon Sep 17 00:00:00 2001 From: Elmehdi Aitbrahim Date: Tue, 11 Aug 2026 15:55:52 -0400 Subject: [PATCH] chore: bump to 0.6.1 for the deployment-upgrade fix Patch bump: packaging and documentation only, no behaviour change. 0.6.0's deploy exposed that the documented install upgraded `keel_trader` alone and silently left `keel-core` / `keel-broker-*` behind -- the real deployment was found running keel-trader 0.5.7 against keel-core 0.5.5, across two releases, because the dependencies were unpinned and `keel --version` reports only the keel-trader distribution and so could not see it. #243 pinned every intra-workspace dependency to the exact version, added `keel versions` (which exits 1 on a partial install), and corrected the README. This is the first release whose wheels CARRY those pins, so it is also the first one whose install is self-correcting: `Requires-Dist: keel-core==0.6.1` forces the sibling upgrade regardless of how the wheel is installed. `tests/test_packaging.py`, added by the same PR, is what kept this bump honest -- bumping the root version alone failed it twice before the pins were updated. Co-Authored-By: Claude Opus 5 (1M context) --- packages/keel-broker-api/pyproject.toml | 4 ++-- packages/keel-broker-coinbase/pyproject.toml | 4 ++-- packages/keel-broker-fake/pyproject.toml | 4 ++-- packages/keel-broker-robinhood/pyproject.toml | 4 ++-- packages/keel-core/pyproject.toml | 2 +- pyproject.toml | 8 ++++---- uv.lock | 12 ++++++------ 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/keel-broker-api/pyproject.toml b/packages/keel-broker-api/pyproject.toml index 59b12d63..bd51e17d 100644 --- a/packages/keel-broker-api/pyproject.toml +++ b/packages/keel-broker-api/pyproject.toml @@ -1,11 +1,11 @@ [project] name = "keel-broker-api" -version = "0.6.0" +version = "0.6.1" description = "Broker port, domain types, capability model, and conformance suite for keel" requires-python = ">=3.14.4" # Pinned `==`: see the note in the root `pyproject.toml`. An unpinned sibling is satisfied by # whatever is already installed, which is how a deployment ends up running mixed versions. -dependencies = ["keel-core==0.6.0"] +dependencies = ["keel-core==0.6.1"] [project.optional-dependencies] conformance = ["pytest>=9.1.1"] diff --git a/packages/keel-broker-coinbase/pyproject.toml b/packages/keel-broker-coinbase/pyproject.toml index 122bd8cc..ae0fb51e 100644 --- a/packages/keel-broker-coinbase/pyproject.toml +++ b/packages/keel-broker-coinbase/pyproject.toml @@ -1,11 +1,11 @@ [project] name = "keel-broker-coinbase" -version = "0.6.0" +version = "0.6.1" description = "Coinbase Advanced Trade adapter for keel" requires-python = ">=3.14.4" # Siblings pinned `==` (see the root `pyproject.toml`); the third-party SDK is not, because it # has its own release cycle and is not cut from this repo. -dependencies = ["keel-core==0.6.0", "keel-broker-api==0.6.0", "coinbase-advanced-py>=1.8.4"] +dependencies = ["keel-core==0.6.1", "keel-broker-api==0.6.1", "coinbase-advanced-py>=1.8.4"] [project.entry-points."keel.brokers"] coinbase = "keel_broker_coinbase:CoinbaseAdapter" diff --git a/packages/keel-broker-fake/pyproject.toml b/packages/keel-broker-fake/pyproject.toml index 67423aaa..1b21e2e2 100644 --- a/packages/keel-broker-fake/pyproject.toml +++ b/packages/keel-broker-fake/pyproject.toml @@ -1,10 +1,10 @@ [project] name = "keel-broker-fake" -version = "0.6.0" +version = "0.6.1" description = "A deliberately divergent second broker adapter, to keep the port honest" requires-python = ">=3.14.4" # Pinned `==`: see the note in the root `pyproject.toml`. -dependencies = ["keel-core==0.6.0", "keel-broker-api==0.6.0"] +dependencies = ["keel-core==0.6.1", "keel-broker-api==0.6.1"] [project.entry-points."keel.brokers"] fake = "keel_broker_fake:FakeAdapter" diff --git a/packages/keel-broker-robinhood/pyproject.toml b/packages/keel-broker-robinhood/pyproject.toml index d917d7f7..52b01098 100644 --- a/packages/keel-broker-robinhood/pyproject.toml +++ b/packages/keel-broker-robinhood/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "keel-broker-robinhood" -version = "0.6.0" +version = "0.6.1" description = "Robinhood Crypto Trading API v2 adapter for keel" requires-python = ">=3.14.4" # `pynacl` is here and nowhere else in the workspace: Robinhood signs every request with an # Ed25519 key, which no other venue keel talks to requires. Keeping it a dependency of this # package alone means an engine that never installs this adapter never installs the crypto stack # either -- the whole point of adapters being separate distributions. -dependencies = ["keel-core==0.6.0", "keel-broker-api==0.6.0", "pynacl>=1.5.0", "requests>=2.32.0"] +dependencies = ["keel-core==0.6.1", "keel-broker-api==0.6.1", "pynacl>=1.5.0", "requests>=2.32.0"] [project.entry-points."keel.brokers"] robinhood = "keel_broker_robinhood:RobinhoodAdapter" diff --git a/packages/keel-core/pyproject.toml b/packages/keel-core/pyproject.toml index 0541e652..402e774f 100644 --- a/packages/keel-core/pyproject.toml +++ b/packages/keel-core/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "keel-core" -version = "0.6.0" +version = "0.6.1" description = "Shared domain types, configuration, and logging for keel" requires-python = ">=3.14.4" dependencies = ["pyyaml>=6.0.3", "python-dotenv>=1.2.2"] diff --git a/pyproject.toml b/pyproject.toml index d768e383..9078078b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "keel-trader" -version = "0.6.0" +version = "0.6.1" description = "Offline-first, broker-agnostic, rule-based spot-trading agent (halal policy by default)" readme = "README.md" authors = [ @@ -22,11 +22,11 @@ dependencies = [ # in one build, so `==` states a fact rather than guessing at compatibility. The cost is that # a version bump must move these numbers too -- the bump already edits every package's # `version`, and `tests/test_packaging.py` fails the build if a pin is left behind. - "keel-core==0.6.0", - "keel-broker-api==0.6.0", + "keel-core==0.6.1", + "keel-broker-api==0.6.1", # keel/cli.py and keel/data/cb_client.py still import the Coinbase SDK directly; depending # on the adapter keeps it available transitively. Phase B deletes those imports and this. - "keel-broker-coinbase==0.6.0", + "keel-broker-coinbase==0.6.1", ] [project.scripts] diff --git a/uv.lock b/uv.lock index 4c05c90d..1b63d4dc 100644 --- a/uv.lock +++ b/uv.lock @@ -345,7 +345,7 @@ wheels = [ [[package]] name = "keel-broker-api" -version = "0.6.0" +version = "0.6.1" source = { editable = "packages/keel-broker-api" } dependencies = [ { name = "keel-core" }, @@ -365,7 +365,7 @@ provides-extras = ["conformance"] [[package]] name = "keel-broker-coinbase" -version = "0.6.0" +version = "0.6.1" source = { editable = "packages/keel-broker-coinbase" } dependencies = [ { name = "coinbase-advanced-py" }, @@ -382,7 +382,7 @@ requires-dist = [ [[package]] name = "keel-broker-fake" -version = "0.6.0" +version = "0.6.1" source = { editable = "packages/keel-broker-fake" } dependencies = [ { name = "keel-broker-api" }, @@ -397,7 +397,7 @@ requires-dist = [ [[package]] name = "keel-broker-robinhood" -version = "0.6.0" +version = "0.6.1" source = { editable = "packages/keel-broker-robinhood" } dependencies = [ { name = "keel-broker-api" }, @@ -416,7 +416,7 @@ requires-dist = [ [[package]] name = "keel-core" -version = "0.6.0" +version = "0.6.1" source = { editable = "packages/keel-core" } dependencies = [ { name = "python-dotenv" }, @@ -431,7 +431,7 @@ requires-dist = [ [[package]] name = "keel-trader" -version = "0.6.0" +version = "0.6.1" source = { editable = "." } dependencies = [ { name = "click" },