Skip to main content

Auto-load Python modules from an online folder without manual updates

Project description

extirpation

A Python plugin-style library that auto-loads encryption modules from an online/ folder.

Highlights

  • Drop-in modules: add a .py file to online/ and it loads automatically.
  • Recursive discovery for nested module folders.
  • Structured load reports with per-module errors.
  • Built-in CLI for discovery, diagnostics, capability signatures, version checks, and direct function invocation.
  • GitHub Actions CI + automated PyPI publishing on GitHub Release.

Install

pip install extirpation

For local development:

pip install -e .[dev]

Python API

from extirpation import (
    list_online_modules,
    load_online_modules,
    load_online_modules_with_report,
)

print(list_online_modules("online"))
modules = load_online_modules("online")
print(modules["caesar"].caesar_encrypt("HELLO", shift=3))

report = load_online_modules_with_report("online", recursive=True)
print(report.modules.keys())
print(report.errors)

CLI

List modules:

extirpation --online-dir online list

Generate JSON load report:

extirpation --online-dir online --recursive report

Print installed version:

extirpation version

Invoke a function directly:

extirpation --online-dir online invoke --module caesar --function caesar_encrypt --kwargs "{\"plaintext\":\"HELLO\",\"shift\":3}"

Show aggregate stats:

extirpation --online-dir online stats

Search catalog for matching modules/functions:

extirpation --online-dir online find --query caesar

Validate module contracts:

extirpation --online-dir online validate

Scaffold a new module template:

extirpation --online-dir online scaffold my_new_cipher

Export catalog to Markdown:

extirpation --online-dir online export-catalog --format markdown --output docs/catalog.md

Included modules

  • online/quagmire_iv.py
  • online/enigma.py (full Enigma simulation)
  • online/vigenere.py
  • online/autokey.py
  • online/beaufort.py
  • online/caesar.py
  • online/baconian.py
  • online/binary_cipher.py
  • online/atbash.py
  • online/affine.py
  • online/columnar_transposition.py
  • online/xor_cipher.py
  • online/rail_fence.py
  • online/rot47.py
  • online/morse.py
  • online/polybius.py
  • online/bifid.py
  • online/gronsfeld.py
  • online/porta.py
  • online/trithemius.py
  • online/scytale.py
  • online/keyword_substitution.py
  • online/running_key.py
  • online/route_cipher.py
  • online/a1z26.py
  • online/one_time_pad.py
  • online/tap_code.py
  • online/reverse_cipher.py
  • online/caesar_box.py
  • online/base64_cipher.py
  • online/pig_latin.py
  • online/playfair.py
  • online/vernam.py
  • online/spiral_route.py
  • online/paired_caesar.py
  • online/caesar_progressive.py
  • online/mirror_chunks.py
  • online/hex_cipher.py
  • online/rot5.py
  • online/rot13.py
  • online/reverse_words.py
  • online/leetspeak.py
  • online/word_caesar.py
  • online/rot18.py
  • online/chunk_swap.py
  • online/vowel_shift.py
  • online/hill_cipher.py
  • online/double_transposition.py

Automated PyPI publishing from GitHub Releases

This repo includes .github/workflows/publish-pypi.yml that publishes automatically when a GitHub Release is published.

One-time setup in PyPI

  1. Create the project (extirpation) on PyPI (or use an existing one).
  2. In PyPI, configure Trusted Publishing and add this GitHub repo/workflow.
  3. In GitHub, ensure the publish job can run with id-token: write (already configured).

Release flow

  1. Merge to your default branch.
  2. Create and publish a GitHub Release (for example tag v1.7.0).
  3. GitHub Actions runs tests (ci.yml), builds distributions, validates them, and publishes to PyPI.

Local packaging checks

python -m build
python -m twine check dist/*

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

extirpation-1.7.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

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

extirpation-1.7.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file extirpation-1.7.0.tar.gz.

File metadata

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

File hashes

Hashes for extirpation-1.7.0.tar.gz
Algorithm Hash digest
SHA256 309031426a66fc885e0dd9970c6e1b687feb8e84b1f0f181c0cab77771c2efd2
MD5 374f69ac033e40d3b62c8cb0f41ceb0a
BLAKE2b-256 dc2ec6f91a42d206e24ebfd1cd8f73015e369d16bf840a552fa5f16ab1efe19f

See more details on using hashes here.

Provenance

The following attestation bundles were made for extirpation-1.7.0.tar.gz:

Publisher: publish-pypi.yml on burning-calamity/extirpation

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

File details

Details for the file extirpation-1.7.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for extirpation-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c4de2925aab24c80f3ac805612339c54ecf893b38f7a09c807f49cd7c7182d1
MD5 f429606b08b4cd56de5f77c6271a9435
BLAKE2b-256 94dd7685205742ec9e2f219e2a0d843fbc2604cf355e9a90e444a5a9f37eac13

See more details on using hashes here.

Provenance

The following attestation bundles were made for extirpation-1.7.0-py3-none-any.whl:

Publisher: publish-pypi.yml on burning-calamity/extirpation

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