# generated by datamodel-codegen:
#   filename:  spec_proto3.proto
#   timestamp: 2019-07-26T00:00:00+00:00

from __future__ import annotations

from enum import Enum

from pydantic import BaseModel, ConfigDict


class ExampleSpecProto3AliasState(Enum):
    ALIAS_STATE_UNSPECIFIED = 'ALIAS_STATE_UNSPECIFIED'
    ALIAS_STATE_STARTED = 'ALIAS_STATE_STARTED'
    ALIAS_STATE_RUNNING = 'ALIAS_STATE_RUNNING'
    ALIAS_STATE_DONE = 'ALIAS_STATE_DONE'


class ExampleSpecProto3SpecProto3Nested(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    value: str | None = ''


class ExampleSpecProto3SpecProto3(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    plain: str | None = ''
    explicit_count: int | None = None
    packed_numbers: list[int] | None = []
    names: list[str] | None = []
    state: ExampleSpecProto3AliasState | None = 'ALIAS_STATE_UNSPECIFIED'
    nested: ExampleSpecProto3SpecProto3Nested | None = None
    qualified_state: ExampleSpecProto3AliasState | None = 'ALIAS_STATE_UNSPECIFIED'
    string_map: dict[str, str] | None = {}
    int32_map: dict[int, str] | None = {}
    int64_map: dict[int, str] | None = {}
    uint32_map: dict[int, str] | None = {}
    uint64_map: dict[int, str] | None = {}
    sint32_map: dict[int, str] | None = {}
    sint64_map: dict[int, str] | None = {}
    fixed32_map: dict[int, str] | None = {}
    fixed64_map: dict[int, str] | None = {}
    sfixed32_map: dict[int, str] | None = {}
    sfixed64_map: dict[int, str] | None = {}
    bool_map: dict[bool, str] | None = {}
    by_name: str | None = None
    """
    oneof: lookup
    """
    by_nested: ExampleSpecProto3SpecProto3Nested | None = None
    """
    oneof: lookup
    """


class ExampleSpecProto3SpecProto3Request(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    id: str | None = ''


class ExampleSpecProto3SpecProto3Response(BaseModel):
    model_config = ConfigDict(
        extra='forbid',
    )
    item: ExampleSpecProto3SpecProto3 | None = None
