Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Unknown value for enum

Ouverte
#672 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
python
Domaine
api

Piste de recherche

Commencez dans betterproto/init.py, à _from_dict_init, et suivez son appel vers betterproto/enum.py : from_string, comme indiqué dans le traceback. Reproduisez le cas d’enum répété avec le protobuf et le JSON fournis, puis vérifiez que les valeurs numériques d’enum sont correctement analysées depuis from_json sans perturber la gestion des chaînes.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug investigation needed
Summary

Unknown value for enum error in from_json

Reproduction Steps
syntax = "proto3";

package hello;

enum Test {
    TestUnset = 0;
    Test1 = 1;
    Test2 = 2;
}

message Greeting {
    repeated Test test = 1;
}
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: test.proto
# plugin: python-betterproto
# This file has been @generated

from dataclasses import dataclass
from typing import (
    List,
)

import betterproto


class Test(betterproto.Enum):
    TestUnset = 0
    Test1 = 1
    Test2 = 2


@dataclass(eq=False, repr=False)
class Greeting(betterproto.Message):
    test: List["Test"] = betterproto.enum_field(1)
import hello
JSON_STR = """
{
    "test": [1]
}
"""
greeting = hello.Greeting().from_json(JSON_STR)
Expected Results

Should parse correct

Actual Results
  File "/opt/homebrew/Caskroom/miniconda/base/envs/platform/lib/python3.12/site-packages/betterproto/__init__.py", line 1690, in from_json
    return self.from_dict(json.loads(value))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Caskroom/miniconda/base/envs/platform/lib/python3.12/site-packages/betterproto/__init__.py", line 1630, in from_dict
    for field, value in self._from_dict_init(value).items():
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Caskroom/miniconda/base/envs/platform/lib/python3.12/site-packages/betterproto/__init__.py", line 1581, in _from_dict_init
    value = [enum_cls.from_string(e) for e in value]
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Caskroom/miniconda/base/envs/platform/lib/python3.12/site-packages/betterproto/enum.py", line 202, in from_string
    raise ValueError(f"Unknown value {name} for enum {cls.__name__}") from e
ValueError: Unknown value 1 for enum Test
System Information

libprotoc 29.3
Python 3.12.9
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: [email protected]
License: MIT
Location: /opt/homebrew/Caskroom/miniconda/base/envs/platform/lib/python3.12/site-packages
Requires: grpclib, python-dateutil, typing-extensions
Required-by: platform-sdk

Checklist
  • I have searched the issues for duplicates.
  • I have shown the entire traceback, if possible.
  • I have verified this issue occurs on the latest prelease of betterproto which can be installed using pip install -U --pre betterproto, if possible.
Langage dominant
Python
Étoiles
1.8k
Forks
235
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de danielgtaylor/python-betterproto

Toutes les issues de danielgtaylor/python-betterproto

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.