Field names that are reserved python keywords result in invalid generated syntax
Hi, I'm trying to parse this proto file: https://gitlab.com/veilid/veilid/-/blob/2d2983e16ee874694832599aaeca5be01f6eb2d4/veilid-core/proto/veilid.capnp (which, afaik, is valid)
Running it through capnp-stub-generator
results in a black.parsing.InvalidInput: Cannot parse: 472:9: class: DialInfoDetail.DialInfoClass
exception.
Full backtrace:
$ capnp-stub-generator -p proto/veilid.capnp
INFO:root:Working from root directory: /home/david/programming/veilid/client0
Traceback (most recent call last):
File "/home/david/.local/bin/capnp-stub-generator", line 8, in <module>
sys.exit(main())
^^^^^^
File "/home/david/.local/lib/python3.11/site-packages/capnp_stub_generator/cli.py", line 92, in main
run(args, root_directory)
File "/home/david/.local/lib/python3.11/site-packages/capnp_stub_generator/run.py", line 107, in run
generate_stubs(module, module_registry, os.path.join(output_directory, output_file_name))
File "/home/david/.local/lib/python3.11/site-packages/capnp_stub_generator/run.py", line 54, in generate_stubs
formatted_output = format_outputs(outputs, is_pyi)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/lib/python3.11/site-packages/capnp_stub_generator/run.py", line 39, in format_outputs
return black.format_str(sorted_imports, mode=black.Mode(is_pyi=is_pyi, line_length=line_length))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/lib/python3.11/site-packages/black/__init__.py", line 1073, in format_str
dst_contents = _format_str_once(src_contents, mode=mode)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/lib/python3.11/site-packages/black/__init__.py", line 1083, in _format_str_once
src_node = lib2to3_parse(src_contents.lstrip(), mode.target_versions)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/lib/python3.11/site-packages/black/parsing.py", line 127, in lib2to3_parse
raise exc from None
black.parsing.InvalidInput: Cannot parse: 472:9: class: DialInfoDetail.DialInfoClass
It looks like the generated python source's syntax is invalid, I will have a poke around and see if I can identify the cause. Is there any easy way to view the generated source before it gets passed into Black?