When you look around on the Internet, you find hundreds of public and/or school holiday APIs, libraries, websites providing HTML calenders, iCALs, PDFs, at least for Germany. Most of these have some artificial kind of limitation or restriction. This is an attempt to harvest holidays (which are generally not copyright protected), convert them and provide them without any limitations.
The available tools where found useless for the use case of bundling holiday definitions for opening_hours.js which is why this tool has been written.
The program can be run against it’s output and should not make any changes to it. This property is checked by integration testing.
Make the fewest requests to external resources possible and use extensive caching. The cache is provided as separate git repository (hc-tests-cache) to also make use of the cache during CI testing which is done against a support matrix of Python versions and environments and therefore runs in parallel a number of times for each commit.
Convert from anything to anything using a common internal data structure.