Skip to main content

A collection of utterly useless yet entertaining sorting algorithms

Project description

Big O(No) — Python CLI

CLI-only implementation of intentionally impractical sorting algorithms.

Install

pip install big-oh-no
big-oh-no --help

Run

Quick run (no manual environment activation):

cd python
uvx --from . big-oh-no --help
uvx --from . big-oh-no wait 5 2 8 1 3

Development run:

cd python
uv sync
uv run big-oh-no --help
uv run big-oh-no wait 5 2 8 1 3
uv run big-oh-no stalin 5 1 9 2 8 3 10
uv run big-oh-no linus 3 1 7 2 9 5 12
uv run big-oh-no bogo 3 2 1
uv run big-oh-no bogo --max-attempts 5000 3 2 1
uv run big-oh-no schrodinger 5 3 1 4
uv run big-oh-no schrodinger --meanness 0.8 5 3 1 4
uv run big-oh-no urinal 8 3 6 1 9 2
uv run big-oh-no urinal --awkwardness 1.0 8 3 6 1 9 2
uv run big-oh-no digit 170 45 75 90 2 802 66
uv run big-oh-no digit 3 1 4 1 5 9 2 6

If you see a VIRTUAL_ENV ... does not match the project environment path warning, another virtualenv is active in your shell. It is safe to ignore, or run deactivate before uv commands.

Validation

Input is validated at the CLI boundary using Pydantic v2. numbers must be a non-empty list of integers. Invalid input exits with a clear error message — no sorting happens.

Tests

cd python
uv run --extra dev pytest -q

Three test modules:

  • tests/test_validation.py — Pydantic input validation
  • tests/test_algorithms.py — sort function unit tests
  • tests/test_cli.py — E2E CLI tests via Click's CliRunner

Contributing

Adding a new algorithm

  • Create big_oh_no/<name>_sort.py with a single public sort function. The first return value must always be the sorted list — after that, return whatever the algorithm's persona demands (eliminated elements, total time, hurt feelings, etc.)
  • Add a command in big_oh_no/cli.py using Click, following the pattern of the existing commands
  • Add at least one test in tests/test_algorithms.py
  • Update the algorithm list in the root README.md
  • Add a run example in python/README.md

Making an existing one better

  • Richer Rich output, more flavourful commentary, better edge-case handling — all welcome
  • Do not change the return contract of the sort function without updating big_oh_no/cli.py and the tests

All tests must pass before opening a PR:

uv run --extra dev pytest -q

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

big_oh_no-1.1.0.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

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

big_oh_no-1.1.0-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

File details

Details for the file big_oh_no-1.1.0.tar.gz.

File metadata

  • Download URL: big_oh_no-1.1.0.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for big_oh_no-1.1.0.tar.gz
Algorithm Hash digest
SHA256 dd071c21c0334d5399f21678f1e83ec23fd8b7a6aedd376d16917e22cc7cb7a2
MD5 cf53c492b8fc7359fd128c3836e474c2
BLAKE2b-256 1e74500b518db645d9352aa1110b84bc4732beafff3ee47804623100c3577f2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for big_oh_no-1.1.0.tar.gz:

Publisher: release.yml on manifoldlabslimited/big-oh-no

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

File details

Details for the file big_oh_no-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: big_oh_no-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for big_oh_no-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2d1888286511273a365e1dc1290b4785cb88cc7a3c3c94617d7d07630ce79d77
MD5 af65baa669f9d062a69a5860f2743324
BLAKE2b-256 29e05e6791812e147217daa87569c40f4dbc6f2e82fde2debb2a03f8250297c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for big_oh_no-1.1.0-py3-none-any.whl:

Publisher: release.yml on manifoldlabslimited/big-oh-no

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