# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/03_enums.ipynb.

# %% auto 0
__all__ = ['SignEnum', 'SignMeta', 'Sign', 'SIntKey', 'SIntVal', 'SIntStr', 'SIntSym']

# %% ../nbs/03_enums.ipynb 3
from enum import Enum, StrEnum, auto
from typing import Any, Self, NamedTuple, Optional

# %% ../nbs/03_enums.ipynb 4
from .cons import P, Z, N, POS, NIL, NEG, POSSYM, NILSYM, NEGSYM
from .ntups import (sign, psign, zsign, nsign)

# %% ../nbs/03_enums.ipynb 6
class SignEnum(Enum):
    POS = psign
    NIL = zsign
    NEG = nsign

class SignMeta(type):
    @property
    def POS(self) -> sign: return psign
    @property
    def NIL(self) -> sign: return zsign
    @property
    def NEG(self) -> sign: return nsign

class Sign(metaclass=SignMeta):
    ...

# %% ../nbs/03_enums.ipynb 8
class SIntKey(StrEnum):
    POS = auto()
    NIL = auto()
    NEG = auto()

class SIntVal(Enum):
    POS = POS
    NIL = NIL
    NEG = NEG
    
class SIntStr(Enum):
    POS = P
    NIL = Z
    NEG = N

class SIntSym(Enum):
    POS = POSSYM
    NIL = NILSYM
    NEG = NEGSYM
