Skip to main content

A CLI for managing, versioning, and exporting fly tying patterns.

Project description

flytie — Fly Tying Recipe Manager

A local-first, AI-augmented command-line tool for managing fly tying patterns. Tag and search your patterns, track every tweak with automatic versioning, generate trip-ready deduplicated shopping lists, export printable pattern cards, and ask Claude for recommendations grounded in your own library.

Everything lives in a single local SQLite file — no account, no server, and no network access unless you explicitly run flytie suggest.

What it does

  • Manage patterns — add, list, view, search, tag, edit, delete, and undelete tying patterns with structured hook sizes, materials, target species, and notes.
  • Version automatically — every edit creates an immutable version; list the history, diff any two versions, and restore an old one. Diffs sort materials alphabetically so reordering alone produces no noise.
  • Library statsflytie stats shows an overview, top-5 rankings, and timeline info for your library at a glance.
  • Clean up materialsflytie material merge rewrites all references from one material name to another, eliminating duplicates across your entire version history.
  • Plan trips — aggregate materials across any set of patterns into one deduplicated shopping list, excluding what you already own.
  • Export cards — render a styled pattern card to PDF (or HTML).
  • Get suggestionsflytie suggest asks the Anthropic Claude API for flies suited to a species, season, and water, grounded in your library.
  • Stay portable — export and import your whole library as documented JSON.

Install

pip install flytie               # core CLI + styled HTML pattern cards
pip install "flytie[pdf]"        # + PDF export (needs the native libs below)
pip install "flytie[ai]"         # + AI suggestions
pip install "flytie[pdf,ai]"     # everything

The core install includes Jinja2, so flytie export <name> --html produces a styled, printable HTML pattern card on a bare pip install flytie — no extras, no native libraries. Any browser can open and print the resulting file. Choose the [pdf] extra only when you specifically want PDF output.

PDF export native dependencies

The [pdf] extra installs WeasyPrint, which depends on the native Pango / Cairo / GdkPixbuf libraries. These are not Python packages and must be installed at the OS level:

# macOS
brew install pango

# Debian / Ubuntu
sudo apt install libpango-1.0-0 libpangoft2-1.0-0

# Fedora / RHEL
sudo dnf install pango

# Windows
# See https://doc.courtbouillon.org/weasyprint/stable/first_steps.html

If installing the native libraries isn't an option on your platform, stick with the core install and use flytie export <name> --html for printable output.

macOS note: install Pango via Homebrew (brew install pango) before running pip install "flytie[pdf]". On some macOS + Python combinations (notably Python installed via Anaconda when Homebrew's Pango is also present), importing WeasyPrint without a matching native Pango can SIGSEGV the interpreter rather than raise a clean ImportError. Running brew install pango first avoids the binary incompatibility.

60-second example

flytie init
flytie add "Parachute Adams" --hook 14 --tag dry \
  --material "grizzly hackle,hackle,1,feather"
flytie shop --tag dry                              # deduped shopping list
flytie export "Parachute Adams" --out ~/cards/     # printable PDF card

Documentation

Full guides live in docs/:

Every command also has built-in help: flytie <command> --help.

Project status

Current release: 0.2.0. See CHANGELOG.md for the full release history.

Development

pip install -e ".[dev,pdf,ai]"
pre-commit install --hook-type pre-commit --hook-type pre-push
pytest
ruff check src tests
mypy src

See CONTRIBUTING.md for what runs at each hook stage, how to enable pre-commit.ci, and the formatter / coverage / smoke-test contracts.

License

MIT — see LICENSE.

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

flytie-0.2.0.tar.gz (122.2 kB view details)

Uploaded Source

Built Distribution

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

flytie-0.2.0-py3-none-any.whl (72.5 kB view details)

Uploaded Python 3

File details

Details for the file flytie-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for flytie-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6089703f49c6f5a04a23296da78cdbebf8b869ff80a102283dadbb6295a3e541
MD5 1bcd344db0354c13f554d3bca2b06ea1
BLAKE2b-256 9dac53dc76498ec629b6fc106ba34a4ebc91c9c55648b33f2531eaa515432829

See more details on using hashes here.

Provenance

The following attestation bundles were made for flytie-0.2.0.tar.gz:

Publisher: release.yml on gidde032/flytie

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

File details

Details for the file flytie-0.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for flytie-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a6f50c6d5845e1080df71857dd431f25095faa986459427e168a85623a27e6d
MD5 2537c91ce1b09aa1519922f82c213c8c
BLAKE2b-256 2daaf9109a355121fb683ce16cbcaa837b159d0753ce3d87195be4cff41ae5e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for flytie-0.2.0-py3-none-any.whl:

Publisher: release.yml on gidde032/flytie

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