Repository for developing the eqty_sdk source, native extension, tests, examples, and documentation.
User-facing installation instructions, examples, and API reference live in the docs site:
- Latest release docs: https://eqtylab.github.io/integrity-py/latest/
- Development docs from
main: https://eqtylab.github.io/integrity-py/dev/
The easiest way to develop this repo is with the Nix flake:
nix developIf you are not using Nix, install the required dependencies manually:
# Configure the local Poetry environment and install dependencies
just install
# Optional: install the pre-push git hook
just initThe Poetry virtualenv is configured in-project at .venv/.
- Make changes in
src/for Rust oreqty_sdk/for Python. - Regenerate stubs and docs snippets when API-facing behavior changes:
just generate-stubs
- Build and install the extension into the local virtualenv:
just install-package
- Run checks before pushing:
just ci
Run just to see all available commands.
Available recipes:
build # Build the Rust/Python wheel using maturin
build-docs # Builds HTML docs for the sdk
ci # Run full CI pipeline: format check, lint, type check, build, and test
fix # Auto-fix Rust clippy warnings
fmt # Auto-format code (Rust + Python)
fmt-check # Check code formatting without changes (Rust + Python)
generate-stubs # Generate type stubs from Rust code
init # Set up git hooks for prek
install # Install all Python dependencies via poetry
install-package # Install the local build of the wheel into the venv
lint # Run linters and auto-fix issues (Rust clippy + Python ruff)
lint-check # Run linters without auto-fixing (Rust clippy + Python ruff)
lint-docs # Check that all public items have documentation
readme-check # Check if README.md is up to date with auto-generated content
readme-update # Update README.md with auto-generated content (Justfile commands, etc.)
serve-docs # Serves the documentation locally with live reload
test-example-manifests # Run example scripts and compare normalized manifests to expected outputs
test-py # Run Python unit tests
test-rs # Run rust unit tests
type-check # Run mypy type checking on the Python SDK
├── eqty_sdk/ # Python package exports and pure-Python helpers
│ ├── asset/ # Asset classes
│ └── compute/ # Compute decorators and helpers
├── src/ # Rust implementation and PyO3 bindings
│ ├── indexer/ # SQLite-backed graph and statement indexing
│ ├── integrity_service/ # Integrity service client helpers
│ └── statements/ # Statement creation and registration bindings
├── tests/ # Python unit tests
├── integration-tests/ # Integration test assets and runners
├── examples/ # Example scripts used by docs and testing
├── docs/ # MkDocs documentation
├── scripts/ # Development utilities
├── flake.nix # Recommended dev environment
└── Justfile # Common development commands
Releases are handled through GitHub and the Publish new release workflow in release.yml.
- Make sure the release commit is merged and pushed.
- In GitHub, create a new release for the repository.
- Enter the release tag in semver form with a
vprefix, for examplev2.0.8. - Publish the GitHub release. That creates the tag on the remote and triggers the release workflow.
- The
Publish new releaseworkflow will:- build and publish Linux and macOS wheels
- build and publish the source distribution
- generate release-specific wheel requirement reports
- publish versioned docs and update
latest
The docs site is versioned:
latestpoints to the newest releasedevtracksmain- numbered versions such as
2.0.7map to specific releases