Skip to main content

Tiger and Dragon (Stem/Branch Calculator)

A Python script to calculate and display the Heavenly Stem (Jikkan) and Earthly Branch (Eto/Junishi) for a given date.

Features

  • Calculates the Stem/Branch combination for a given year.
  • Calculates the Stem/Branch combination for a given day.
  • Supports output in Japanese (Kanji), English, or Emoji.
  • Allows custom output formatting using template strings.

Installation

  1. Clone the repository.

  2. Install dependencies using uv (pytest is required for running tests).

    uv sync --dev
    

Usage

Run the script from the command line:

python main.py [options]

Options

  • --lang {kanji,english,emoji}: Specify the output language. Default is kanji. (Ignored if --format is used)
    • kanji: Display in Japanese Kanji (e.g., 甲子)
    • english: Display in English (e.g., Wood Yang / Rat)
    • emoji: Display using emojis (e.g., 🌳🌞/🐀)
  • --format FORMAT_STRING: Specify a custom output format using a template string. This option overrides --lang. Available variables:
    • {year_stem_kanji}, {year_stem_english}, {year_stem_emoji}
    • {year_branch_kanji}, {year_branch_english}, {year_branch_emoji}
    • {day_stem_kanji}, {day_stem_english}, {day_stem_emoji}
    • {day_branch_kanji}, {day_branch_english}, {day_branch_emoji}
    • {date_kanji}, {date_english}

Examples

  • Display in default language (Kanji):
    python main.py
    
  • Display in English:
    python main.py --lang english
    
  • Display using emojis:
    python main.py --lang emoji
    
  • Display using a custom format:
    python main.py --format "Date: {date_english}, Year: {year_stem_english}/{year_branch_english} ({year_stem_emoji}/{year_branch_emoji}), Day: {day_stem_english}/{day_branch_english} ({day_stem_emoji}/{day_branch_emoji})"
    
    # Example with Japanese date and combined emoji/kanji
    python main.py --format "Date (Kanji): {date_kanji}, Day Stem/Branch: {day_stem_emoji}{day_branch_emoji} ({day_stem_kanji}{day_branch_kanji})"
    

Using as a Library

You can import functions from main.py into other Python scripts.

# example.py
import datetime
from main import stem_from_day, branch_from_day, Stem, Branch, Language

target_date = datetime.date(2024, 12, 25)

# Get the day's Stem
day_stem = stem_from_day(target_date)
# Get the day's Branch
day_branch = branch_from_day(target_date)

print(f"Date: {target_date}")
print(f"Day Stem (Kanji): {day_stem.display(Language.KANJI)}")
print(f"Day Branch (English): {day_branch.display(Language.ENGLISH)}")
print(f"Day Stem/Branch (Emoji): {day_stem.display_emoji()}/{day_branch.display_emoji()}")

Testing

Run tests using pytest.

uv run pytest -v

Metadata

Release files for tiger-and-dragon 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tiger-and-dragon 0.1.1
File Size Uploaded
tiger_and_dragon-0.1.1.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tiger-and-dragon 0.1.1
File Interpreter ABI Platform
tiger_and_dragon-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.3 kB

Release files / tiger_and_dragon-0.1.1.tar.gz

Download URL tiger_and_dragon-0.1.1.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
dbe6f14d1fe434e839cb08474d4005603b93c09e97ffc370f104089277da781c
BLAKE2b-256 checksum
How to use checksums
6ebd47dc08bc65e38a58480550dd7b2f3da47cd2f1b3de96853d0d149e262c47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release files / tiger_and_dragon-0.1.1-py3-none-any.whl

Download URL tiger_and_dragon-0.1.1-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78767bbdf3751316e7c148568f21e33c4fdd833c9c7af42d23005c24977393d3
BLAKE2b-256 checksum
How to use checksums
e24eb69e88ab64f372d229f062b32ecdd0ac58068a93ec065e461391d3dc731a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page