icalendar-anonymizer#

Strip personal data from iCalendar files while preserving technical properties for bug reproduction.

πŸ“¦ Installation

Install with pip or Docker

Installation
🐍 Python API

Using the anonymize() function

Python API
πŸ’» Command-Line Interface

Using icalendar-anonymize and ican commands

Command-Line Interface
🌐 Web Service

REST API endpoints for anonymization

Web Service
🐳 Self-Hosting

Run locally with Docker for data privacy

Self-Hosting
πŸ“š API Reference

Function signatures and module documentation

API Reference
🀝 Contributing

Development workflow and code style

Contributing

What Gets Anonymized?#

Personal data is hashed using SHA-256:

  • Event summaries, descriptions, locations

  • Attendee and organizer names

  • Comments and categories

Technical properties are preserved for bug reproduction:

  • Dates and times (DTSTART, DTEND, DUE)

  • Recurrence rules (RRULE, RDATE, EXDATE)

  • Metadata (STATUS, PRIORITY, SEQUENCE)

  • Timezones (complete VTIMEZONE components)

See the Python API for the complete property reference table.

Features#

Deterministic hashing

Same input + same salt = same output

Structure preservation

Word count and email format stay intact

UID uniqueness

UIDs remain unique across the calendar

Customizable

Use preserve to keep specific properties

Secure by default

Unknown properties get anonymized

Well tested

High test coverage with parametrized tests

Comprehensive documentation

β€œIf it’s not documented, it’s broken.”

Documentation#

Project Information#

License

AGPL-3.0-or-later

Source Code

mergecal/icalendar-anonymizer

Issue Tracker

mergecal/icalendar-anonymizer#issues

PyPI

https://pypi.org/project/icalendar-anonymizer/