This is a proof-of-concept implementation of the bebop serialization protocol in python. It doesn't work yet.
To provide a python library that makes it easy to convert messages in the Bebop wire-format into python objects, and vice versa.
Some sub-goals, in decreasing order of priority:
- Correctness - Do The Right Thing, and raise an Exception if you can't. As a rule of thumb, there should be more testing code than implementation code.
- Completeness of protocol - Support 100% interop over-the-wire with the reference implementation.
- Speed - provide fast (de)serialization with low memory overhead
Initial pass complete, can parse simple bop schemas. See grammar definition contained at parse.py.
Not yet implemented, but in scope:
- Attribute support (opcode, deprecated)
- Comment support
Very rough draft at generate.py.
Not yet started.
Barely started - can round-trip booleans, and that's about it.
To get off the ground quickly, I've chosen Lark to build the Bop parser on top of. It is rather fl 4978 exible and easy to work with.
I like using Hypothesis for property-based testing. In my experience, it exposes edge cases nearly-effortlessly.