danielgtaylor / danielgtaylor/python-betterproto

Regenerating the proto files make the tests fail

Open
#640 1 comment 0 reactions 0 assignees View on GitHub
bug investigation needed
Dominant language
Python
Stars
1.8k
Forks
234
PR merge metrics
No merged PRs in 30d

Description

### Summary

Regenerating the proto files make the tests fail

### Reproduction Steps

Re-generate the files used in the compiler, as documented in the `README`:

```
protoc \
--plugin=protoc-gen-custom=src/betterproto/plugin/main.py \
--custom_opt=INCLUDE_GOOGLE \
--custom_out=src/betterproto/lib/std \
-I /usr/include/ \
/usr/include/google/protobuf/*.proto
```

Then, run `poe generate` and `poe test`

### Expected Results

The tests should pass.

### Actual Results

The `test_struct` test actually fails.

My guess is that the output files of the compiler have been manually edited to change the `to_dict` and `from_dict` methods of `Struct` (see https://github.com/danielgtaylor/python-betterproto/blame/master/src/betterproto/lib/std/google/protobuf/__init__.py#L2225 )

### System Information

libprotoc 3.12.4
Python 3.12.6
Name: betterproto
Version: 2.0.0b7
Summary: A better Protobuf / gRPC generator & library
Home-page: https://github.com/danielgtaylor/python-betterproto
Author: Daniel G. Taylor
Author-email: danielgtaylor@gmail.com
License: MIT
Location: /[...]/.venv/lib/python3.12/site-packages
Editable project location: [...]
Requires: grpclib, python-dateutil, typing-extensions
Required-by:

### 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

Open the contributing guide

Research direction

Start with the regeneration command in the README, then run `poe generate` and `poe test` to reproduce the `test_struct` failure. Inspect `src/betterproto/lib/std/google/protobuf/__init__.py`, especially the generated `Struct` `to_dict` and `from_dict` methods. Done means regenerated files retain the expected behavior and the test suite passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, compilers, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.