See also python-caldav/caldav#590
I'm not super happy to go from search(summary="Scrum meeting") to searcher.add_property_filter(key="summary", value="Scrum meeting", operator="contains"). Would it make sense to support something like searcher.add_property_filter(summary="Scrum meeting", operator="==")? Or perhaps even searcher.add_property_filters(summary="Scrum meeting",category="customer:acme", operator="==")?
It would be easier, but care has to be taken to ensure the parameters to the method would never ever have names that could be mistaken for valid icalendar properties.