danielgtaylor / danielgtaylor/python-betterproto

betterproto-2.0.0b5 fails to generate message classes when proto package name contains upper case letters

Offen
#437 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
compiler-bug
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
234
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

## Steps to reproduce

### Install `betterproto-2.0.0b5` + tooling:

```bash
pip install --pre betterproto[compiler]
pip install grpcio-tools
```
other versions:
> grpcio==1.50.0
grpcio-tools==1.50.0
grpclib==0.4.3

### Create an `example.proto`
```proto
syntax = "proto3";

package mypackage; // this is the only change to the MWE from README.md

message EchoRequest {
string value = 1;
// Number of extra times to echo
uint32 extra_times = 2;
}

message EchoResponse {
repeated string values = 1;
}

message EchoStreamResponse {
string value = 1;
}

service Echo {
rpc Echo(EchoRequest) returns (EchoResponse);
rpc EchoStream(EchoRequest) returns (stream EchoStreamResponse);
}
```

### Create the directory
```bash
mkdir lib
```

### Generate Python Code:
```bash
python -m grpc_tools.protoc -I . --python_betterproto_out=lib example.proto
```

Check that `lib/mypackage/__init__.py` contains _no_ unresolvable imports. ✔

Up to here, this is just the MWE from `README.md` with a different but all-lower package name.

### Introduce Upper Case Letters in the Package Name

Now modify the above `example.proto` and change the all-lower case `package mypackage` in line 3 to an UpperCamel `package MyPackage`.

Repeat the next steps up to the code generation (don't forget to clean up `lib` before re-generating).

The newly generate `lib/MyPackage/__init__.py` now contains unresolvable imports:
```python
from .. import (
MyPackageEchoResponse as _MyPackageEchoResponse__,
MyPackageEchoStreamResponse as _MyPackageEchoStreamResponse__,
)
```

The `lib/__init__.py` does not contain anything to import.
No classes `MyPackageEchoResponse` or `MyPackageEchoStreamResponse` have been generated ❌

## Expected Behaviour
The code generation shall work for mixed casing package names.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.