A feature-rich tarot reading toolkit with graphical and CLI interfaces.
Project description
TarotTeller
TarotTeller is a modern Python toolkit for exploring tarot cards through scripted workflows, a friendly command line interface, and an optional desktop experience. It ships with a complete 78-card deck, positional spreads, contextual storytelling, and immersive journaling prompts so that every reading feels intentional and repeatable.
Key capabilities
- Rich tarot data model – Generate a shuffled 78-card deck with upright and reversed interpretations, orientation-aware text, elemental correspondences, and numerology insights.
- Spread orchestration – Work with bundled layouts such as a single-card draw, three-card story, and the ten-card Celtic Cross or specify an ad-hoc card count for quick pulls.
- Context-aware insights – Analyse a querent question to identify themes, timeframe, and sentiment, then blend that profile with spread prompts to surface personalised guidance.
- Immersive companions – Layer rituals, soundtrack suggestions, and journaling prompts over readings in radiant, mystic, or grounded tones.
- Multiple interfaces – Use the
tarottellerCLI for scripted draws, launch the Tkinter GUI for live sessions, or import the Python API for automation and experimentation.
Installation
TarotTeller uses a pyproject.toml-driven build powered by setuptools and the src/ layout.
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .
Once installed, the tarotteller and tarotteller-gui console scripts become available.
Command line quick start
List cards, inspect a profile, or draw readings directly from your shell:
# Show the first five major arcana cards
$ tarotteller list --arcana major --limit 5
# Print detailed information about The Magician
$ tarotteller info "The Magician"
# Pull a three-card spread with deterministic shuffle and orientation
$ tarotteller draw --spread three_card --seed 11 --orientation-seed 21
# Draw two upright-only cards with immersive storytelling in a grounded tone
$ tarotteller draw --cards 2 --no-reversed --immersive --tone grounded
Provide --question text to unlock contextual analysis and personalised insight for each draw. Seeds can be supplied to reproduce both card order and orientation.
Graphical interface
Launch the Tkinter-powered desktop client after installation:
tarotteller-gui
The GUI lets you pick a spread (or override the card count), capture the querent's question, toggle reversed cards, and decide whether to show positional prompts or immersive extras. Results combine spread prompts, card meanings, correspondence layers, and optional personalised summaries generated from the question profile. A dedicated help dialog summarises controls and reading tips.
Python API
Interact with the deck and spreads from your own scripts:
from tarotteller import (
TarotDeck,
draw_spread,
build_immersive_companion,
analyze_question,
InterpretationEngine,
TarotKnowledgeBase,
)
# Prepare the deck and spread
deck = TarotDeck()
deck.seed(42)
deck.reset(shuffle=True)
reading = draw_spread(deck, "three_card", rng=13)
# Build contextual insights
profile = analyze_question("What career move should I pursue next quarter?")
engine = InterpretationEngine(TarotKnowledgeBase(deck.all_cards))
insights = engine.insights_for_reading(reading, profile)
for placement, insight in zip(reading.placements, insights):
print(f"{placement.position.title}: {insight.card_name} ({insight.orientation})")
print(f" {insight.message}")
# Optional immersive companion text
print()
print(build_immersive_companion([p.card for p in reading.placements], tone="mystic", profile=profile))
Project structure
TarotTeller follows the canonical packaging layout so it can be published to PyPI without adjustments:
src/tarotteller/
├── __init__.py # Public package surface and version metadata
├── core/ # Deck, spread, context analysis, and knowledge base logic
├── interfaces/ # CLI and GUI entry points with console script bindings
└── narrative/ # Immersive storytelling helpers
Tests live under tests/ and target the public API, CLI, and GUI helpers.
Development workflow
- Create and activate a virtual environment (see Installation above).
- Install development dependencies if needed (for example
pip install -e .[dev]when extra requirements are added). - Run the automated test suite:
pytest
- Use
python -m tarotteller.interfaces.cli ...orpython -m tarotteller.interfaces.guifor module-based debugging.
Version history
| Version | Date | Highlights |
|---|---|---|
| 0.2.0 | Unreleased | Reorganised the package into core, interfaces, and narrative modules, introduced consolidated public exports, and refreshed documentation for distribution readiness. |
| 0.1.0 | 2024-03 | Initial release with deck generation, spreads, CLI, GUI, contextual insights, and immersive companion stories. |
Dates will be finalised when publishing tagged releases. Follow semantic versioning as future features land.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tarotteller-0.2.0.tar.gz.
File metadata
- Download URL: tarotteller-0.2.0.tar.gz
- Upload date:
- Size: 32.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0f3e8c07c7afb1e199ec59fc55cd3982922a27059d8787ea397f9816eae772c
|
|
| MD5 |
1bbaf540c68c0c28dcbcb7a0908eca98
|
|
| BLAKE2b-256 |
67e0b6c9a3db286cbada035475a96e06d8a704b3aef066cfb1a44d3a85c8605a
|
File details
Details for the file tarotteller-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tarotteller-0.2.0-py3-none-any.whl
- Upload date:
- Size: 33.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae6f7cca22de5bd89f2ab4f595b23d265fc3979ac0e0a613e3ea0ce26f9a92b0
|
|
| MD5 |
e460058302e6dac586b97c33d09a64dd
|
|
| BLAKE2b-256 |
7f87670e805f20c23cc5f7ff9843652712d720e1b9ada1842d6cfeecce9c784e
|