ZeroIntensity / view.py

The Batteries-Detachable Web Framework
https://view.zintensity.dev
MIT License
205 stars 15 forks source link

Supporting `Literal` and enums in type validation #153

Open ZeroIntensity opened 7 months ago

ZeroIntensity commented 7 months ago

Improvement Description

As of now, typing.Literal nor enum.Enum are supported when using the type validation API. This is an important feature that should be ready before #10 is complete.

Improvement Request Example API

from view import compile_type
from enum import Enum

class MyEnum(Enum):
    A = 1
    B = 2

tp = compile_type(MyEnum)
tp.cast("1")  # MyEnum.A
tp.cast("A")  # MyEnum.A

And with literals:

from view import compile_type
from typing import Literal

tp = compile_type(Literal["a", "b", "c"])
tp.is_compatible("1")  # False
tp.is_compatible("a")  # True
tp.is_compatible("A")  # False

Anything else?

No response