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}/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). 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.9a1.tar.gz (12.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.9a1-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pysleigh-0.1.9a1.tar.gz
  • Upload date:
  • Size: 12.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.9a1.tar.gz
Algorithm Hash digest
SHA256 eda95591b28bda551de14618c7a7ce4d64e853ba72c123bf0e54da7367ec0f91
MD5 8195bd4c337b6b652eef00039a5dab10
BLAKE2b-256 f1f9b1adc0b4f0fbd53b6205b78dee5c0e82e8bb0d8924508e1659a4804ec3f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysleigh-0.1.9a1.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.9a1-py3-none-any.whl.

File metadata

  • Download URL: pysleigh-0.1.9a1-py3-none-any.whl
  • Upload date:
  • Size: 13.5 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.9a1-py3-none-any.whl
Algorithm Hash digest
SHA256 93466ce6e6cdb8797a75e587a416bef33b5d1744bf9f41e1366a08b3c6590e05
MD5 12d33fca5306692890d5d51ba72c5d65
BLAKE2b-256 cfedd1a2a6fceb7fa05b57332590c13d6fa92d8b9ddc6afe6d22a447263e5350

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysleigh-0.1.9a1-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