mirror of
https://github.com/zap-proto/py.git
synced 2026-10-30 15:04:09 +00:00
Differential fuzzing against Go's zapgen turned up three names the emitter could not carry. A field called wrap or build was refused outright; a field called from generated a keyword; two fields answering to one name generated a duplicate argument, which is a SyntaxError rather than a diagnosis. Now one rule covers all of them: a name Python or the view already claims takes the trailing underscore PEP 8 prescribes, so `None` — a real field name in the fleet — reads back as None_. Two fields that land on the same name are refused by name, the one place this reader is stricter than the reference, which accepts that schema and writes Go that will not compile.