Skip to main content

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

  1. Bump version
    Edit version in pyproject.toml (e.g. 0.1.00.2.0). The package reads this as the single source of truth.

  2. 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.sh or ./scripts/smoke_constraints_wheelhouse_local.ps1 (requires Python 3.11+ and pip only).
  3. Tag
    Create a tag that matches the version in pyproject.toml (with a v prefix), e.g.:

    git tag v0.2.0
    
  4. 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
    
  5. Where artifacts appear

    • GitHub: The tag’s Releases page will have the sdist, wheel, and constraints-desktop.txt attached.
    • PyPI: The package will be published to PyPI once the workflow completes.

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:

  1. Open your project on PyPI → SettingsPublishingAdd a new trusted publisher.
  2. Choose GitHub Actions.
  3. Set Owner and Repository to this repo.
  4. Set Workflow name to release.yml.
  5. 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

Apache-2.0

Contributing

See CONTRIBUTING.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scindra_engine-0.1.0.tar.gz (60.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scindra_engine-0.1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

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

Hashes for scindra_engine-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1e656e7bf0a27b3a1e0ea3d2a5f6d8b124b4820dbcefe3272f197f57f61bf6f6
MD5 4c83af8bc0182889a79f8c87055b922a
BLAKE2b-256 c1c838328e549035c61e1cddcc2f40949b0bc601398f8ff4937c001b03000ef1

See more details on using hashes here.

Provenance

The following attestation bundles were made for scindra_engine-0.1.0.tar.gz:

Publisher: release.yml on luke-bowers/scindra-tools-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for scindra_engine-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8581f5bab5d526eb506beb78cde9f543ba189ec01891bbbcc39526d5406ab702
MD5 035342f1294b2216d759d9aa6117f680
BLAKE2b-256 36ba9ae8ccfaccb3a4ebc0d5c0c9c19e0019c453421395b95e0ec7ff586e1d8c

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page