Skip to main content

lunar-birthday-ical

GitHub Actions Workflow Status PyPI - Version PyPI - Version Ask DeepWiki

What is this?

A command line tool written in Python 3 for creating lunar birthday events.

lunar-birthday-ical reads a YAML configuration file and generates an iCalendar .ics file. Optionally, it can upload the calendar to pastebin for easy subscription. For an full example configuration file, refer to config/example-lunar-birthday.yaml, not all fields are required in the config/example-lunar-birthday.yaml. The comments should be sufficient to explain the meaning of each option.

The minimal configuration file can only contain the []events field, with other fields left as default, for example:

events:
  - name: 张三
    start_date: 1989-06-03
    event_keys:
      - lunar_birthday

  - name: 李四
    start_date: 2006-02-01
    event_keys:
      - integer_days
      - solar_birthday

You can use the -h or --help option to view the command-line tool's help information.

$ lunar-birthday-ical -h
usage: lunar-birthday-ical [-h] [-L YYYY MM DD | -S YYYY MM DD] [config.yaml ...]

Generate iCal events and reminders for lunar birthday and cycle days.

positional arguments:
  config.yaml           config file for iCal, checkout config/example-lunar-birthday.yaml for example.

options:
  -h, --help            show this help message and exit
  -L YYYY MM DD, --lunar-to-solar YYYY MM DD
                        Convert lunar date to solar date, add minus sign before leap lunar month.
  -S YYYY MM DD, --solar-to-lunar YYYY MM DD
                        Convert solar date to lunar date.

Although this tool does not have many command-line options, it supports argcomplete. For configuration methods, refer to the argcomplete documentation.

Installation

It is recommended to use uv tool to install command-line tools written in Python, including this project.

# install from PyPI
uv tool install lunar-birthday-ical

# install from Test PyPI
uv tool install lunar-birthday-ical \
    --index https://test.pypi.org/simple \
    --default-index https://pypi.org/simple

About pastebin

The YAML config lets you decide whether to upload the created .ics file to a pastebin service. This uses SharzyL's Cloudflare Workers-based pastebin (SharzyL/pastebin-worker), hosted by the repo owner.

When the pastebin.enabled option is set to true, you can leave pastebin.manage_url empty for the first run. After that, set pastebin.manage_url url from the .manageUrl field in the response from the pastebin server.

The response from the pastebin server looks like this:

$ lunar-birthday-ical config/example-lunar-birthday.yaml
iCal saved to config/example-lunar-birthday.ics
HTTP Request: POST https://komj.uk/ "HTTP/1.1 200 OK"
{"url": "https://komj.uk/Kree41N5W28qJC70XQU4Kj1F", "manageUrl": "https://komj.uk/Kree41N5W28qJC70XQU4Kj1F:i9Jq1bd3KMscrEsyUzm0ksgQ", "expirationSeconds": 604800, "expireAt": "2025-11-21T03:45:46.263Z"}

The .url field can be used on any Calendar App.

Metadata

Release files for lunar-birthday-ical 0.6.0

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

Source distribution (sdist)

Source distribution for lunar-birthday-ical 0.6.0
File Size Uploaded
lunar_birthday_ical-0.6.0.tar.gz 56.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lunar-birthday-ical 0.6.0
File Interpreter ABI Platform
lunar_birthday_ical-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 71.3 kB

Release files / lunar_birthday_ical-0.6.0.tar.gz

Download URL lunar_birthday_ical-0.6.0.tar.gz
Size 56.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b9f129a58c3ec63d40c492eeaecf1eed565a7a27fc72ad5eea145fb83ab33f86
BLAKE2b-256 checksum
How to use checksums
edaa57060b4b08a422eba08788e52100fb73b53528e286df8100bf928e4bc8d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 5, 2026.

Transparency log

Release files / lunar_birthday_ical-0.6.0-py3-none-any.whl

Download URL lunar_birthday_ical-0.6.0-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e23603ffeac148e9eac222a509deafa5403ef60647b9f62ee32d6042ef3195fa
BLAKE2b-256 checksum
How to use checksums
d70ad3ddffc378a5c34f639453169a56b8e1dd64734e4180f40f1c412ae6d066
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

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