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
18 changes: 18 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,21 @@ jobs:
- run: uv run ruff check .
- run: uv run ruff format --check .
- run: uv run pytest -q

rust:
runs-on: ubuntu-latest
defaults:
run:
working-directory: rust
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
with:
workspaces: rust
- run: cargo fmt --check
- run: cargo clippy --locked --all-targets -- -D warnings
- run: cargo clippy --locked --no-default-features -- -D warnings
- run: cargo test --locked
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ wheels/

# Virtual environments
.venv

# Rust build output
/rust/target
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ A Python `match` statement dispatches on the *shape* of a value. `fuzzymatch` di
value *means*, and it keeps what makes `match` trustworthy: a fixed set of arms, guards, and a
`case _` fallback.

There is also a [Rust port](rust/README.md), where the branches are variants of your own enum and
the compiler checks that every outcome is handled.

> **Status: proof of concept.** The request and response mapping is tested through the real TypeSafe
> SDK with only the HTTP layer mocked, but it has not yet been run against the live API. See
> [Limits](#limits).
Expand Down Expand Up @@ -148,7 +151,7 @@ uv run pytest
- `async` matchers on `AsyncTypeSafeClient`
- an `escalate_to=` decider, so uncertain calls go to a frontier model automatically
- a small tool that replays observer logs to suggest per-branch thresholds
- nested matchers for hierarchical routing, and a TypeScript port
- nested matchers for hierarchical routing, and a TypeScript port (a [Rust port](rust/README.md) exists)

## License

Expand Down
Loading
Loading