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 workflowruffformatting and lintingtytype 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
VEVENTcount - 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/icalendartest suite for interoperability coverage
See tests/fixtures/README.md for provenance details.
Releasing
Local release steps
- Update the package version.
uv version 0.2.0
- 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
-
Commit the version bump.
-
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:
- a GitHub environment named
pypi - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb0b6678f93496bc2036f56c5d0e3e40b80de3c6c8ca21e1d809685af0c11ecd
|
|
| MD5 |
4a6d6f590f8a88fa52672b0615614b49
|
|
| BLAKE2b-256 |
d18e428018722d50273faa58ddf7b6343b833527dcef2fda179a3d1ac80946fd
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9954fa17339c18bfb113685f9c611fdca59bb1e3037e48e4bc7d7204a29d3088
|
|
| MD5 |
c3c42635034a2f50d0cefb53b3d9ba83
|
|
| BLAKE2b-256 |
542e0723e56419d594502ce90798232d7b667f4b474812ca19db9bc5f0fd42eb
|