Scindra tools engine
Project description
scindra-engine
Scindra tools engine.
Requirements
- Python 3.11+
Installation
pip install scindra-engine
For development, the project uses uv for fast, reproducible installs. See CONTRIBUTING.md.
Usage
scindra-engine --version
How to cut a release
-
Bump version
Editversionin pyproject.toml (e.g.0.1.0→0.2.0). The package reads this as the single source of truth. -
Validate locally
Run the smoke script so lint, typecheck, tests, build, twine check, and a local wheel install are exercised before tagging:- mac/Linux:
./scripts/smoke_release_local.sh - Windows:
./scripts/smoke_release_local.ps1
Requires uv and Python 3.11. For full wheelhouse/offline validation (constraints + offline install), run./scripts/smoke_constraints_wheelhouse_local.shor./scripts/smoke_constraints_wheelhouse_local.ps1(requires Python 3.11+ and pip only).
- mac/Linux:
-
Tag
Create a tag that matches the version inpyproject.toml(with avprefix), e.g.:git tag v0.2.0
-
Push the tag
Pushing the tag triggers the release workflow (lint, typecheck, tests, version check, build, twine check, publish to PyPI, create GitHub Release):git push origin v0.2.0
-
Where artifacts appear
constraints-desktop.txt and Desktop Pro wheelhouse
constraints-desktop.txt is a pip constraints file generated from the built wheel’s resolved environment: after installing the wheel in a temporary venv, we run pip freeze and strip pip, setuptools, wheel, and the project itself. The result pins exact versions of the runtime dependencies only, so pip download -c constraints-desktop.txt <wheel> uses the same dependency versions every time without conflicting with the local wheel.
Desktop Pro bundles an offline wheelhouse per platform. It downloads constraints-desktop.txt from the GitHub Release and uses it with pip download -c constraints-desktop.txt ... when building the wheelhouse, so the same dependency versions are used every time. The file is not published to PyPI; it is only attached to the GitHub Release.
PyPI publishing (Trusted Publishing / OIDC)
The workflow uses PyPI Trusted Publishing (OIDC) when no token is configured, so you don’t need to store a PyPI API token in GitHub.
One-time setup on PyPI:
- Open your project on PyPI → Settings → Publishing → Add a new trusted publisher.
- Choose GitHub Actions.
- Set Owner and Repository to this repo.
- Set Workflow name to
release.yml. - Optionally set Environment (e.g.
pypi) if you use a GitHub environment for approvals.
The workflow job already has id-token: write and uses pypa/gh-action-pypi-publish without username/password when OIDC is configured.
Fallback (API token):
If you prefer not to use Trusted Publishing, add a repository secret PYPI_API_TOKEN with a PyPI API token, and in the workflow pass it to the publish step (e.g. password: ${{ secrets.PYPI_API_TOKEN }}, username: __token__). See the action’s documentation for details.
License
Contributing
See CONTRIBUTING.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scindra_engine-0.1.0.tar.gz.
File metadata
- Download URL: scindra_engine-0.1.0.tar.gz
- Upload date:
- Size: 60.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e656e7bf0a27b3a1e0ea3d2a5f6d8b124b4820dbcefe3272f197f57f61bf6f6
|
|
| MD5 |
4c83af8bc0182889a79f8c87055b922a
|
|
| BLAKE2b-256 |
c1c838328e549035c61e1cddcc2f40949b0bc601398f8ff4937c001b03000ef1
|
Provenance
The following attestation bundles were made for scindra_engine-0.1.0.tar.gz:
Publisher:
release.yml on luke-bowers/scindra-tools-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scindra_engine-0.1.0.tar.gz -
Subject digest:
1e656e7bf0a27b3a1e0ea3d2a5f6d8b124b4820dbcefe3272f197f57f61bf6f6 - Sigstore transparency entry: 928220764
- Sigstore integration time:
-
Permalink:
luke-bowers/scindra-tools-engine@ac7279bc0ab3cb65eb9328bbd241b425e9874d8a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/luke-bowers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ac7279bc0ab3cb65eb9328bbd241b425e9874d8a -
Trigger Event:
push
-
Statement type:
File details
Details for the file scindra_engine-0.1.0-py3-none-any.whl.
File metadata
- Download URL: scindra_engine-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8581f5bab5d526eb506beb78cde9f543ba189ec01891bbbcc39526d5406ab702
|
|
| MD5 |
035342f1294b2216d759d9aa6117f680
|
|
| BLAKE2b-256 |
36ba9ae8ccfaccb3a4ebc0d5c0c9c19e0019c453421395b95e0ec7ff586e1d8c
|
Provenance
The following attestation bundles were made for scindra_engine-0.1.0-py3-none-any.whl:
Publisher:
release.yml on luke-bowers/scindra-tools-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scindra_engine-0.1.0-py3-none-any.whl -
Subject digest:
8581f5bab5d526eb506beb78cde9f543ba189ec01891bbbcc39526d5406ab702 - Sigstore transparency entry: 928220765
- Sigstore integration time:
-
Permalink:
luke-bowers/scindra-tools-engine@ac7279bc0ab3cb65eb9328bbd241b425e9874d8a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/luke-bowers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ac7279bc0ab3cb65eb9328bbd241b425e9874d8a -
Trigger Event:
push
-
Statement type: