The anonymizer handles iCalendar (.ics) files. JSCalendar (RFC 8984) and jCal (RFC 7265) are now common enough that missing support is a real gap.
src/icalendar_anonymizer/formats/jscal.py for JSCalendar (JSON), src/icalendar_anonymizer/formats/jcal.py for jCal (JSON array format).
Both formats carry the same personal data as iCalendar: summaries, descriptions, attendee emails, organizer info, locations, URLs. The anonymization logic is the same. The format-specific code is just parse-transform-serialize.
JSCalendar support depends on calendaring-jmap being available for parsing. Add it as an optional dep:
[project.optional-dependencies]
jscal = ["calendaring-jmap>=1.0"]
jCal is a JSON representation of iCalendar and can be parsed without calendaring-jmap.
The anonymizer handles iCalendar (
.ics) files. JSCalendar (RFC 8984) and jCal (RFC 7265) are now common enough that missing support is a real gap.src/icalendar_anonymizer/formats/jscal.pyfor JSCalendar (JSON),src/icalendar_anonymizer/formats/jcal.pyfor jCal (JSON array format).Both formats carry the same personal data as iCalendar: summaries, descriptions, attendee emails, organizer info, locations, URLs. The anonymization logic is the same. The format-specific code is just parse-transform-serialize.
JSCalendar support depends on calendaring-jmap being available for parsing. Add it as an optional dep:
jCal is a JSON representation of iCalendar and can be parsed without calendaring-jmap.
anonymize_jscal(data: dict) -> dictanonymize_jcal(data: list) -> list.jsonwith JSCalendar root key vs jCal array)