Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
enable-cache: true

- name: Set up Python
run: uv python install 3.12
run: uv python install # version comes from .python-version; never pin it here twice

- name: Sync dependencies
run: uv sync --all-extras --dev
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/migrate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
enable-cache: true

- name: Set up Python
run: uv python install 3.12
run: uv python install # version comes from .python-version; never pin it here twice

- name: Sync dependencies
run: uv sync --all-extras --dev
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
enable-cache: true

- name: Set up Python
run: uv python install 3.12
run: uv python install # version comes from .python-version; never pin it here twice

- name: Sync dependencies
run: uv sync --all-extras --dev
Expand Down Expand Up @@ -83,7 +83,11 @@ jobs:
- name: Verify the artifact identifies itself
run: |
set -euo pipefail
python -m venv /tmp/verify
# Must be the PINNED interpreter, not the runner's default `python`. The wheel
# carries `Requires-Python: >=3.14.4`, and pip enforces that even for an explicit
# local wheel path -- a default-python venv fails here with "requires a different
# Python". --seed provides the pip that the install below uses.
uv venv --seed --python "$(cat .python-version)" /tmp/verify
# Install by explicit PATH, never by name. The name `keel` belongs to an unrelated
# project on PyPI, so a name-based install can silently fetch a stranger's package --
# unacceptable for a tool that places orders. --find-links resolves the workspace
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.12
3.14.4
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ An offline-first, halal (long-only, no-leverage) auto-trading agent for Coinbase
## Development

```bash
uv sync # install deps (Python 3.12)
uv sync # install deps (Python 3.14)
uv run pytest # run tests
uv run ruff check # lint
```
Expand Down
2 changes: 1 addition & 1 deletion packages/keel-broker-api/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "keel-broker-api"
version = "0.1.0"
description = "Broker port, domain types, capability model, and conformance suite for keel"
requires-python = ">=3.12"
requires-python = ">=3.14.4"
dependencies = ["keel-core"]

[project.optional-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion packages/keel-broker-coinbase/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "keel-broker-coinbase"
version = "0.1.0"
description = "Coinbase Advanced Trade adapter for keel"
requires-python = ">=3.12"
requires-python = ">=3.14.4"
dependencies = ["keel-core", "keel-broker-api", "coinbase-advanced-py>=1.8.4"]

[project.entry-points."keel.brokers"]
Expand Down
2 changes: 1 addition & 1 deletion packages/keel-broker-fake/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "keel-broker-fake"
version = "0.1.0"
description = "A deliberately divergent second broker adapter, to keep the port honest"
requires-python = ">=3.12"
requires-python = ">=3.14.4"
dependencies = ["keel-core", "keel-broker-api"]

[project.entry-points."keel.brokers"]
Expand Down
2 changes: 1 addition & 1 deletion packages/keel-core/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "keel-core"
version = "0.1.0"
description = "Shared domain types, configuration, and logging for keel"
requires-python = ">=3.12"
requires-python = ">=3.14.4"
dependencies = ["pyyaml>=6.0.3", "python-dotenv>=1.2.2"]

[build-system]
Expand Down
14 changes: 4 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ readme = "README.md"
authors = [
{ name = "CodeGate Software" }
]
requires-python = ">=3.12"
requires-python = ">=3.14.4"
dependencies = [
"click>=8.4.2",
# pyyaml/python-dotenv are deliberately NOT listed here: nothing under `keel/` imports
Expand Down Expand Up @@ -56,17 +56,11 @@ dev = [
"keel-broker-fake",
]

[tool.ruff]
line-length = 100
target-version = "py312"

[tool.ruff.lint]
select = ["E", "F", "I", "UP"]
# UP042: the design spec pins `class X(str, Enum)` explicitly (not `StrEnum`) for these types.
ignore = ["UP042"]
# Ruff config lives in ruff.toml at the repo root. A ruff.toml takes precedence over
# [tool.ruff] here, so keeping a copy in both places would leave silently-dead settings.

[tool.mypy]
python_version = "3.12"
python_version = "3.14"
files = ["packages", "keel", "tests"]

# New packages are strict from birth.
Expand Down
7 changes: 7 additions & 0 deletions ruff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
line-length = 100
target-version = "py314"

[lint]
select = ["E", "F", "I", "UP"]
# UP042: the design spec pins `class X(str, Enum)` explicitly (not `StrEnum`) for these types.
ignore = ["UP042"]
137 changes: 1 addition & 136 deletions uv.lock

Large diffs are not rendered by default.

Loading