Skip to main content

Know your blast radius before you push

Project description

Know your blast radius before you push.

Version on pypi Tested with Github Actions Python versions tested

Test a Python library against the downstream projects that depend on it — before you tag a release and find out the hard way.

Installation

pip install ripple-effect
# or, without installing:
uvx ripple-effect show

Usage

Create a ripple-effect.yml config file in your project root (this is the default config file name, so no --config flag needed):

# ripple-effect.yml
upstream: .                          # the library under test (current folder)
proving-grounds: ./build/ripple      # where to clone downstream git repos

downstream-projects:
  - https://github.com/example/project-b.git@main
  - https://github.com/example/project-c.git@main

Then:

ripple-effect show     # preview resolved config
ripple-effect prepare  # clone repos, build venvs, inject your library
ripple-effect run      # prepare + run all test suites, report results

ripple-effect will:

  1. Clone (or update) each downstream project into proving-grounds

  2. Create a venv for each using uv sync or requirements.txt

  3. Inject your library in editable mode (uv pip install -e .)

  4. Run each project’s test suite

  5. Report pass / fail per project with timing

Real example — this repo’s own ripple-effect.yml:

upstream: https://github.com/codrsquad/runez.git@main
proving-grounds: ./build/verify-runez
downstream-projects:
  - https://github.com/zsimic/ripple-effect.git
  - https://github.com/codrsquad/portable-python.git
$ ripple-effect run
upstream: runez @ ~/github/ripple-effect/build/verify-runez/runez

ripple-effect: ~/github/ripple-effect/build/verify-runez/ripple-effect
  runez already installed editable

portable-python: ~/github/ripple-effect/build/verify-runez/portable-python
  runez already installed editable

Testing ripple-effect...
... 2 passed in 0.1s ...

Testing portable-python...
... 24 passed in 2.1s ...

──────────────────────────────────────────────────
  ripple-effect: PASSED (0.3s)
  portable-python: PASSED (3.1s)

Global flags

ripple-effect --dryrun run      # show what would happen without doing it
ripple-effect --verbose run     # show debug output including every command run
ripple-effect -c other.yml run  # use a different config file

The config file is resolved in this order:

  1. --config / -c flag

  2. RIPPLE_CONFIG environment variable

  3. ripple-effect.yml in the current working directory

Local iteration

Mix local checkouts with remote repos freely:

upstream: ~/github/mylib
proving-grounds: ~/dev/ripple-workspace

downstream-projects:
  - https://github.com/example/project-b.git@main
  - ~/dev/project-c               # local checkout, no git operations
  - source-ref: https://github.com/example/project-d.git@main
    prepare: "hatch env create"   # project uses hatch instead of uv
    test: ".venv/bin/pytest tests/ -x"

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

ripple_effect-1.0.1.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

ripple_effect-1.0.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file ripple_effect-1.0.1.tar.gz.

File metadata

  • Download URL: ripple_effect-1.0.1.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ripple_effect-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c072cde31709a91fd49add62a9451d9785f6777b1e7aea6ebf083968b50c4f31
MD5 8a419b166b27e2117e03d9810642deef
BLAKE2b-256 ed8b3dbf400063f13575f64055c33cde405fd84503553793d396c0d2a326d02e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ripple_effect-1.0.1.tar.gz:

Publisher: release.yml on zsimic/ripple-effect

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

File details

Details for the file ripple_effect-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ripple_effect-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ripple_effect-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 875fb3a3a80b235a05ec359a8025f0f7bee3e3bbab007b51a9c38cd64779dd99
MD5 ceb051d934f9af4ecc7b452bd53c75b5
BLAKE2b-256 76013c9420c4268927a24f2630462359b86161f6125b7023186529e814bc9af5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ripple_effect-1.0.1-py3-none-any.whl:

Publisher: release.yml on zsimic/ripple-effect

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