danielgtaylor / danielgtaylor/python-betterproto
Namespaced enums yield incorrectly generated code
- Lenguaje dominante
- Python
- Estrellas
- 1.8k
- Forks
- 234
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Given following proto file
```
syntax = "proto3";
package namespaced_enum;
message ns { enum Type {
NONE = 0;
option_one = 1;
}}
message Msg {
ns.Type t = 1;
}
```
The command `python -m grpc_tools.protoc -I . --python_betterproto_out=lib ./test.proto` generates following code:
```py
# Generated by the protocol buffer compiler. DO NOT EDIT!
# sources: proto/test.proto
# plugin: python-betterproto
from dataclasses import dataclass
import betterproto
from .namespaced_enum import ns
class NsType(betterproto.Enum):
NONE = 0
option_one = 1
@dataclass
class Ns(betterproto.Message):
pass
@dataclass
class Msg(betterproto.Message):
t: ns.Type = betterproto.enum_field(1)
```
It contains line `from .namespaced_enum import ns` and later on uses this as type `t: ns.Type = betterproto.enum_field(1)` instead of `NsType`
---
Python 3.8.2
betterproto 1.2.5
grpcio_tools 1.34.1
Guía de contribución
Línea de trabajo
Reproduce el problema con el archivo test.proto proporcionado y el comando python -m grpc_tools.protoc; después, sigue cómo el generador construye los imports y las anotaciones de tipo de los enums. Se considera completado cuando el campo Msg generado hace referencia al enum NsType generado en lugar de ns.Type, con una prueba de regresión que cubra este caso de enum con namespace.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100