Skip to main content

Print human-readable summaries of iCalendar (.ics) files.

Project description

calprint

calprint is a small Python CLI that reads an iCalendar (.ics) file and prints a human-readable summary of the calendar and its VEVENT entries.

It is intentionally simple:

  • plain text output
  • no recurrence expansion
  • deterministic event ordering
  • modern Python (>=3.12)
  • uv-managed development workflow
  • ruff formatting and linting
  • ty type checking

Repository: https://github.com/schmidma/calprint

Issues: https://github.com/schmidma/calprint/issues

Install

Run once with uvx

uvx calprint path/to/calendar.ics

Install as a tool with uv

uv tool install calprint
calprint path/to/calendar.ics

Install with pip

pip install calprint
calprint path/to/calendar.ics

Usage

Console command

calprint path/to/calendar.ics

Module execution

python -m calprint path/to/calendar.ics

Version

calprint --version

Output

calprint prints:

  • calendar name, version, product ID, and method
  • timezone identifiers declared in VTIMEZONE
  • total VEVENT count
  • per-event summary, start, end, UID, organizer, attendees, location, and status

Missing optional values are rendered as -.

Dates and datetimes are formatted as:

  • dates: YYYY-MM-DD
  • naive datetimes: YYYY-MM-DD HH:MM
  • timezone-aware datetimes: YYYY-MM-DD HH:MM TZ

Example

uv run calprint tests/fixtures/example_meeting.ics

Example output:

Calendar
  Name: -
  Version: 2.0
  Product ID: -//Example Industries//calprint//EN
  Method: REQUEST
  Timezones: Europe/Berlin
  Events: 1

Event 1
  Summary: Quarterly Roadmap Review and Planning Session
  Start: 2026-04-14 08:30 CEST
  End: 2026-04-14 09:30 CEST
  UID: roadmap-review-20260414@example.test
  Organizer: Taylor Example
  Attendees: Alex Example, Jordan Example
  Location: Virtual Meeting Room 3
  Status: CONFIRMED

Development

Create the project environment:

uv sync --dev

Run the CLI locally:

uv run calprint tests/fixtures/example_meeting.ics

Quality commands:

uv run ruff format .
uv run ruff format --check .
uv run ruff check .
uv run ty check src
uv run pytest

Build distributions:

uv build --no-sources

Test Fixtures

The repository includes a small fixture corpus under tests/fixtures/.

  • synthetic meeting and invalid fixtures are safe to publish
  • a few fixtures are adapted from the collective/icalendar test suite for interoperability coverage

See tests/fixtures/README.md for provenance details.

Releasing

Local release steps

  1. Update the package version.
uv version 0.2.0
  1. Run the local checks.
uv run ruff format --check .
uv run ruff check .
uv run ty check src
uv run pytest
uv build --no-sources
  1. Commit the version bump.

  2. Create and push a version tag.

git tag v0.2.0
git push origin v0.2.0

GitHub automation

Pushing a v* tag triggers the publish workflow, which will:

  • validate that the tag matches project.version
  • build the wheel and source distribution
  • smoke-test both artifacts
  • publish to PyPI with uv publish
  • create a GitHub Release for the tag and attach the built artifacts

One-time publish setup

Before the publish workflow can succeed, configure:

  1. a GitHub environment named pypi
  2. a PyPI trusted publisher pointing at this repository and workflow

License

MIT

AI Assistance

This project was developed with support from AI coding agents. The repository, implementation plan, and code changes were produced collaboratively with AI-assisted development tools.

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

calprint-0.1.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

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

calprint-0.1.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file calprint-0.1.0.tar.gz.

File metadata

  • Download URL: calprint-0.1.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for calprint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eb0b6678f93496bc2036f56c5d0e3e40b80de3c6c8ca21e1d809685af0c11ecd
MD5 4a6d6f590f8a88fa52672b0615614b49
BLAKE2b-256 d18e428018722d50273faa58ddf7b6343b833527dcef2fda179a3d1ac80946fd

See more details on using hashes here.

File details

Details for the file calprint-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: calprint-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for calprint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9954fa17339c18bfb113685f9c611fdca59bb1e3037e48e4bc7d7204a29d3088
MD5 c3c42635034a2f50d0cefb53b3d9ba83
BLAKE2b-256 542e0723e56419d594502ce90798232d7b667f4b474812ca19db9bc5f0fd42eb

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