Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Empty list cannot be parsed by `repeated`

Aperta
#509 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
grpc, python
Ambito
api

Direzione di ricerca

Inizia con la chiamata all’analisi dei messaggi nell’init.py generato, quindi ispeziona betterproto/init.py intorno a FromString e parse, usando l’esempio fornito GenerateRequest(messages=[]) e il comando protoc per riprodurre il problema. Il lavoro è completato quando un campo repeated vuoto viene decodificato correttamente senza l’errore di validazione di Pydantic.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug

Versions

betterproto[compiler]==2.0.0b6
grpcio-tools
pydantic==1.10.8

I get the following error on the server side:

023-07-10 15:48:08,980 - 140154842511168 - server.py-server:468 - ERROR: Application error
Traceback (most recent call last):
  File "/worker-py/.direnv/python-3.10/lib/python3.10/site-packages/grpclib/server.py", line 446, in request_handler
    await method_func(stream)
  File "/worker-py/generated/__init__.py", line 157, in __rpc_teamlead_reply
    request = await stream.recv_message()
  File "/worker-py/.direnv/python-3.10/lib/python3.10/site-packages/grpclib/server.py", line 136, in recv_message
    message = await recv_message(self._stream, self._codec, self._recv_type)
  File "/worker-py/.direnv/python-3.10/lib/python3.10/site-packages/grpclib/stream.py", line 32, in recv_message
    message = codec.decode(message_bin, message_type)
  File "/worker-py/.direnv/python-3.10/lib/python3.10/site-packages/grpclib/encoding/proto.py", line 54, in decode
    return message_type.FromString(data)
  File "/worker-py/.direnv/python-3.10/lib/python3.10/site-packages/betterproto/__init__.py", line 1052, in FromString
    return cls().parse(data)
  File "pydantic/dataclasses.py", line 286, in pydantic.dataclasses._add_pydantic_validation_attributes.handle_extra_init
  File "<string>", line 4, in __init__
  File "pydantic/dataclasses.py", line 308, in pydantic.dataclasses._add_pydantic_validation_attributes.new_post_init
  File "pydantic/dataclasses.py", line 425, in pydantic.dataclasses._dataclass_validate_values
pydantic.error_wrappers.ValidationError: 1 validation error for GenerateRequest
conversation
  value is not a valid list (type=type_error.list)

proto defintion

service ReplyGenerator {
	rpc Reply(GenerateRequest) returns (stream StreamReply) {}
}

message GenerateRequest {
	repeated Message messages = 2;
}

Calling it like this from client:

async for res in service.teamlead_reply(guided_chat.GenerateRequest(messages=[])):

Compilation was done with:

PROTO_DIR=protos
GEN_DIR=generated
protofiles=$(find "${PROTO_DIR}" -name "*.proto")
python -m grpc_tools.protoc -I "${PROTO_DIR}" --python_betterproto_opt=pydantic_dataclasses --python_betterproto_out="${GEN_DIR}" ${protofiles}
Lingua principale
Python
Stelle
1.8k
Fork
235
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di danielgtaylor/python-betterproto

Tutte le issue di danielgtaylor/python-betterproto

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.