danielgtaylor / danielgtaylor/python-betterproto
In generated field name, an undescore is introduced after a number
- Dominant language
- Python
- Stars
- 1.8k
- Forks
- 234
- PR merge metrics
- No merged PRs in 30d
Description
### Summary
Underscore is added after a number in the field name, e.g. `c2s` becomes `c2_s`.
### Reproduction Steps
```proto
syntax = "proto3";
message Example {
string c2s = 1;
}
```
```bash
protoc --python_betterproto_out=lib example.proto
```
### Expected Results
Expecting `c2s`.
```python
# Generated by the protocol buffer compiler. DO NOT EDIT!
# sources: example.proto
# plugin: python-betterproto
# This file has been @generated
from dataclasses import dataclass
import betterproto
@dataclass(eq=False, repr=False)
class Example(betterproto.Message):
c2s: str = betterproto.string_field(1)
```
### Actual Results
Generates `c2_s` instead.
```python
# Generated by the protocol buffer compiler. DO NOT EDIT!
# sources: example.proto
# plugin: python-betterproto
# This file has been @generated
from dataclasses import dataclass
import betterproto
@dataclass(eq=False, repr=False)
class Example(betterproto.Message):
c2_s: str = betterproto.string_field(1)
```
### System Information
libprotoc 27.1
Python 3.8.20
Name: betterproto
Version: 2.0.0b7
Location: /Users/.../demo/.venv/lib/python3.8/site-packages
Requires: grpclib, python-dateutil, typing-extensions
Required-by: demo
### Checklist
- [x] I have searched the issues for duplicates.
- [x] I have shown the entire traceback, if possible.
- [x] I have verified this issue occurs on the latest prelease of betterproto which can be installed using `pip install -U --pre betterproto`, if possible.
Contributor guide
Research direction
Start by running the reported protoc command with the example.proto message and compare the generated field name with the expected output. Trace the generator entry point that converts protobuf field names to Python names; done means a field such as c2s remains c2s rather than becoming c2_s, with regression coverage if the project’s existing tests provide a suitable place.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100