The root cause: the ics library (which uses tatsu internally) is incompatible with Python 3.13 — tatsu dropped the buffer_class parameter that ics still passes.
The simplest fixes, in order of preference:
- Option 1 — Pin
tatsu to a compatible version in requirements.txt:
tatsu<5.8
- Option 2 — Stay on Python 3.11 in deploy.yml (revert python-version: 3.11.11). This is the safest if you don't want to risk other breakage.
- Option 3 — Switch to
ics v0.7+ which rewrote the parser and dropped the tatsu dependency entirely:
ics>=0.7
But this version has API changes that may require code updates in pdf_2_ics.py.
I'd recommend Option 1 first — it's the least disruptive. Add tatsu<5.8 to your requirements.txt and keep Python 3.13. If that doesn't resolve it, fall back to Option 2.
The root cause: the
icslibrary (which usestatsuinternally) is incompatible with Python 3.13 —tatsudropped thebuffer_classparameter thaticsstill passes.The simplest fixes, in order of preference:
tatsuto a compatible version in requirements.txt:tatsu<5.8icsv0.7+ which rewrote the parser and dropped thetatsudependency entirely:ics>=0.7But this version has API changes that may require code updates in pdf_2_ics.py.
I'd recommend Option 1 first — it's the least disruptive. Add
tatsu<5.8to your requirements.txt and keep Python 3.13. If that doesn't resolve it, fall back to Option 2.