Skip to content

Unknown value for enum #672

Description

@zhaozkTHU

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: danielgtaylor@gmail.com
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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions