Skip to main content

Modular CLI helpers for Advent of Code workflows.

Project description

PySleigh

pysleigh is a Typer-driven CLI assistant for Advent of Code. It keeps all IO, scaffolding, runs, and submissions beside your solutions and gives you dry-run previews before any change lands on disk or on the AoC website.

How the CLI behaves

  • Every command runs in a clear scope: you point it at a project root and a year/day, then ask it to fetch input, fetch the article, run or test a solution, submit an answer, or scaffold files.
  • Actions follow the “scope → action → artifact” pattern: they operate on one concern, do a single thing, and report the created or updated artifact (inputs, articles, answers, solution templates).
  • Dry-run flags (--dry-run) appear on each command so you can observe what would change without touching your repo or the Advent of Code site.
  • Helper modules (paths, context, loader, session) stay outside the CLI decorators so the commands remain declarative and easier to script or test.

Key commands

  • pysleigh data fetch-input <year> <day> downloads the day’s input (supports --overwrite, --dry-run).
  • pysleigh data fetch-article <year> <day> saves the article HTML plus a title line so scaffolding knows the correct header.
  • pysleigh data refresh-answers <year> <day> reruns your solution, rewrites answers/year_{n}/answer_{n}_day_{d}.txt, or dry-runs the write.
  • pysleigh solution run|test|submit executes, validates, or submits your solution; they log each step, honor dry-run, and explain success/failure details.
  • pysleigh solution scaffold <year> <day> bootstraps a template under solutions/year_{n}/solution_{n}_day_{d}.py using the guessed title. pysleigh solution prepare batches input/article fetch plus scaffold with optional overwrites.

Installation & invocation

  • Install straight from PyPI (pip install pysleigh) or, for hacking on the CLI, use pip install -e ..
  • Run pysleigh directly once it’s on your PATH, or wrap it in uv (uv run pysleigh -- solution run 2023 1) to isolate dependencies and leverage tooling helpers.
  • Use --project-root /path/to/advent-of-code-python when invoking the CLI from outside your AoC repo so the built-in PathConfig can resolve inputs, answers, and article directories.

Configuration

  • PathConfig expects the usual layout (inputs/year_{n}/input_{n}_day_{d}.txt, articles/year_{n}/article_{n}_day_{d}.md, answers/year_{n}/answer_{n}_day_{d}.txt, solutions/year_{n}/solution_{n}_day_{d}.py). Commands will create missing parent directories automatically.
  • Set SESSION_TOKEN before running networked commands:
    export SESSION_TOKEN="$(security find-generic-password -s adventofcode -w)"
    
    Any secure credential store (security, pass, keyring, etc.) works; combine it with direnv, dotenv, or uv secrets so the token never appears in source control. PySleigh reports a clear error if the variable is missing or empty.
  • Dry-run flags on every command let you confirm submit candidates, file writes, and fetches before touching the file system or AoC.

Development & testing

  • pytest --cov=src --cov-report=term-missing runs the suite; tests mirror the CLI modules so behavior stays aligned with production commands.
  • Lint via ruff check . and type-check with ty check (configured in pyproject.toml), keeping 100-char lines and Python 3.12 typing idioms.
  • Mutation testing via mutmut run is recommended after behavior changes—the existing suite already kills every mutant in commands/loaders/session helpers.

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

pysleigh-0.1.9a3.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

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

pysleigh-0.1.9a3-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file pysleigh-0.1.9a3.tar.gz.

File metadata

  • Download URL: pysleigh-0.1.9a3.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pysleigh-0.1.9a3.tar.gz
Algorithm Hash digest
SHA256 36fe60988f3773101c9108edc664cd145e4536af5a40362addd20c56bce4af40
MD5 d601056116fad3e73b200c75d947bc25
BLAKE2b-256 a713c6dcab0f8a30bc07bdf6e21c0d151ce679f6a1f5b41c7cb30ae8d2d18ca1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysleigh-0.1.9a3.tar.gz:

Publisher: release.yml on Dheebz/pysleigh

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

File details

Details for the file pysleigh-0.1.9a3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pysleigh-0.1.9a3-py3-none-any.whl
Algorithm Hash digest
SHA256 c5b2d9f7876aa4059aa19963e4f59dba122742becdc0c163db7a0b9233b93527
MD5 e0459df82d37e9e6257724d98e488368
BLAKE2b-256 3445f097d37d8d646f1d12d9d05a8cbc7c28f224e45e331fe20b0283a219c944

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysleigh-0.1.9a3-py3-none-any.whl:

Publisher: release.yml on Dheebz/pysleigh

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