Install & Compatibility
Where this runs
tested against v1.0.6 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.910 runs
installs and imports cleanly · install 0.0s · import 0.000s · 29.4MB
glibcpy 3.10–3.910 runs
installs and imports cleanly · install 2.4s · import 0.000s · 30MB
27MB installed
● package 27MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Searcher
✓ from icalendar_searcher import Searcher
✗ from icalendar_searcher import IcalendarSearcher
Collation
✓ from icalendar_searcher import Collation
Initialize an `IcalendarSearcher` with iCalendar data and use `QueryBuilder` to construct SQL-like filters for searching. The `search()` method returns an iterator of `icalendar.cal.Component` objects.
from icalendar_searcher import IcalendarSearcher, QueryBuilder
ics_data = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp//NONSGML Event Generator//EN
BEGIN:VEVENT
UID:19970610T172345Z-AF23B2@example.com
DTSTAMP:19970610T172345Z
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
DESCRIPTION:Party to celebrate Bastille Day.
LOCATION:Paris, France
END:VEVENT
BEGIN:VEVENT
UID:19980610T172345Z-AF23C3@example.com
DTSTAMP:19980610T172345Z
DTSTART:19980720T100000Z
DTEND:19980720T110000Z
SUMMARY:Meeting with client
END:VEVENT
END:VCALENDAR
"""
searcher = IcalendarSearcher(ics_data)
# Example 1: Find events starting after a specific date
query_future = QueryBuilder().filter("DTSTART >= 1997-07-15T00:00:00Z").build()
results_future = searcher.search(query_future)
print("\nEvents starting after July 15, 1997:")
for component in results_future:
print(f"- {component.get('SUMMARY')}")
# Example 2: Filter by property value (case-insensitive summary containing 'party')
query_party = QueryBuilder().filter("SUMMARY ~ 'party'").build()
results_party = searcher.search(query_party)
print("\nEvents with 'party' in summary:")
for component in results_party:
print(f"- {component.get('SUMMARY')}")
# Example 3: Get all components
all_results = searcher.search()
print("\nAll events:")
for component in all_results:
print(f"- {component.get('SUMMARY')}")
icalendar-searcher --version
Upgrade
Version history
1.0.6latest on PyPI · released May 29, 2026
Audit
Dependencies
icalendarrequiredCore dependency for parsing and manipulating iCalendar data.
pytzrequiredRequired for timezone handling within iCalendar components.