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.
Release files for tarotteller 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tarotteller-0.2.0.tar.gz | 32.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tarotteller-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.1 kB
Release files / tarotteller-0.2.0.tar.gz
| Download URL | tarotteller-0.2.0.tar.gz |
|---|---|
| Size | 32.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0f3e8c07c7afb1e199ec59fc55cd3982922a27059d8787ea397f9816eae772c
|
|
BLAKE2b-256 checksum How to use checksums |
67e0b6c9a3db286cbada035475a96e06d8a704b3aef066cfb1a44d3a85c8605a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Release files / tarotteller-0.2.0-py3-none-any.whl
| Download URL | tarotteller-0.2.0-py3-none-any.whl |
|---|---|
| Size | 33.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae6f7cca22de5bd89f2ab4f595b23d265fc3979ac0e0a613e3ea0ce26f9a92b0
|
|
BLAKE2b-256 checksum How to use checksums |
7f87670e805f20c23cc5f7ff9843652712d720e1b9ada1842d6cfeecce9c784e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|