pydyf has been created to replace Cairo PDF generation in WeasyPrint.
Indeed, there are some bugs in WeasyPrint caused by Cairo and Cairo has some difficulties to make releases. Also there are features which will be easier to implement while having more control on the PDF generation.
So we created pydyf.
Python is a really good language to design a small, OS-agnostic parser. As it is object-oriented, it gives the possibility to follow the specification with high-level classes and a small amount of very simple code.
And of course, WeasyPrint is written in Python too, giving an obvious reason for this choice.
Speed is not pydyf’s main goal. Code simplicity, maintainability and flexibility are more important goals for this library, as they give the ability to stay really close to the specification and to fix bugs easily.