from dataclasses import dataclass, field
from enum import Enum
from typing import Any, Optional

from xjustiz.model_gen.xoev_code import Code

__NAMESPACE__ = "http://www.xjustiz.de"


class GdsRegisterart(Enum):
    E = "E"
    G = "G"
    GN_R = "GnR"
    GS_R = "GsR"
    HRA = "HRA"
    HRB = "HRB"
    L = "L"
    PR = "PR"
    S = "S"
    VR = "VR"


@dataclass
class CodeGdsRegisterart(Code):
    """
    :ivar name: Mit diesem optionalen XML-Element kann die Beschreibung
        des Codes, wie in der jeweiligen Beschreibungsspalte der
        Codeliste vorgegeben, übermittelt werden.
    :ivar list_uri:
    :ivar list_version_id:
    """

    class Meta:
        name = "Code.GDS.Registerart"

    name: Any = field(
        init=False,
        default=None,
        metadata={
            "type": "Ignore",
        },
    )
    list_uri: str = field(
        init=False,
        default="urn:xoev-de:xjustiz:codeliste:gds.registerart",
        metadata={
            "name": "listURI",
            "type": "Attribute",
        },
    )
    list_version_id: str = field(
        init=False,
        default="1.2",
        metadata={
            "name": "listVersionID",
            "type": "Attribute",
        },
    )


@dataclass
class CodeGdsRegisterzeichenTyp3(Code):
    """Die Werte einer Codeliste vom Code-Typ 3 können im XRepository eingesehen
    werden.

    Nähere Details sind im Kapitel "Codelisten vom Code-Typ 3"
    beschrieben.

    :ivar name: Mit diesem optionalen XML-Element kann die Beschreibung
        des Codes, wie in der jeweiligen Beschreibungsspalte der
        Codeliste vorgegeben, übermittelt werden.
    :ivar list_uri:
    :ivar list_version_id:
    """

    class Meta:
        name = "Code.GDS.Registerzeichen.Typ3"

    name: Any = field(
        init=False,
        default=None,
        metadata={
            "type": "Ignore",
        },
    )
    list_uri: str = field(
        init=False,
        default="urn:xoev-de:xjustiz:codeliste:gds.registerzeichen",
        metadata={
            "name": "listURI",
            "type": "Attribute",
        },
    )
    list_version_id: Optional[str] = field(
        default=None,
        metadata={
            "name": "listVersionID",
            "type": "Attribute",
            "required": True,
        },
    )
