Skip to main content

Display the current lunar phase as ASCII art.

Project description

ascii-moon-phase-python

Prints the current moon phase as ASCII art. Install with pip install ascii-moon-phase and run with python -m ascii_moon_phase.

usage: ascii-moon-phase [-h] [--size SIZE] [--rotate DEGREES] [--date DATE] [--phase PHASE] [--light-char CHAR]
                        [--dark-char CHAR] [--empty-char CHAR] [--show-phase] [--phases] [--future]

Render the lunar phase as filled ASCII art.

options:
  -h, --help         show this help message and exit
  --size SIZE        Height in rows (width is 2*size). Default: 24
  --rotate DEGREES   Clockwise rotation in degrees. At 0 (default), phases move right to left. At 180, phases move
                     left to right.
  --date DATE        Calendar date YYYY-MM-DD (default: today).
  --phase PHASE      Phase fraction in [0.0, 1.0]; 0.0=new, 0.5=full, 1.0=new. Overrides --date.
  --light-char CHAR  Character for illuminated area (default: '@').
  --dark-char CHAR   Character for dark area (default: '.').
  --empty-char CHAR  Character outside the disc (default: space).
  --show-phase       Print the numeric phase after the art.
  --phases           Animate the full cycle of lunar phases.
  --future           Animate upcoming lunar phases.

You can also call these functions from Python:

>>> import ascii_moon_phase as amp
>>> print(amp.render_moon())
                 ...@@@@@@@@@@@
            .....@@@@@@@@@@@@@@@@@@@
         .......@@@@@@@@@@@@@@@@@@@@@@@
       .......@@@@@@@@@@@@@@@@@@@@@@@@@@@
     ........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   .........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  .........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 ..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 ..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 ..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 ..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  .........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   .........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     ........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
       .......@@@@@@@@@@@@@@@@@@@@@@@@@@@
         .......@@@@@@@@@@@@@@@@@@@@@@@
            .....@@@@@@@@@@@@@@@@@@@
                 ...@@@@@@@@@@@

The parameters of render_moon() are:

def render_moon(
    size: int = 24,
    rotation: float = 0.0,
    phase_date: date | None = None,
    light_char: str = "@",
    dark_char: str = ".",
    empty_char: str = " ",
    phase: float | None = None,
) -> str:

You can also call animate_phases() to play a smooth animation of the moon, or call animate_future() to show the phase of each day progressing into the future.

The Rust version is at https://github.com/asweigart/ascii-moon-phase-rust

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

ascii_moon_phase-0.4.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

ascii_moon_phase-0.4.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file ascii_moon_phase-0.4.0.tar.gz.

File metadata

  • Download URL: ascii_moon_phase-0.4.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for ascii_moon_phase-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ea6f0562e4fdff12c193e34884f124435b353e859df3d057a6d14ebbf504d65b
MD5 03a8b893d3cf009d08442a5481bf1c3e
BLAKE2b-256 a6cb14988a196ac7ef74882bb0058357b87068395e1be07546f747bb244aacb7

See more details on using hashes here.

File details

Details for the file ascii_moon_phase-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ascii_moon_phase-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0ecc9d402c59b56649e797f6d4400a6cf2d467574dae187233abd6cb58eff8cc
MD5 662cf2ef6775e9f863cf46611cfeca76
BLAKE2b-256 e7cfe859eb9b8785fe57f67b5cca6c94cd7b2ebb81b6dccf51d1989492dc052b

See more details on using hashes here.

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