seandstewart / typical

Typical: Fast, simple, & correct data-validation using Python 3 typing.
https://python-typical.org
MIT License
182 stars 9 forks source link

Support Types Defined in Local Namespaces #150

Closed seandstewart closed 3 years ago

seandstewart commented 3 years ago

Expected Behavior

from __future__ import annotations

import dataclasses
import typic

def foo():

    @dataclasses.dataclass
    class Inner:
        field: str

    @dataclasses.dataclass
    class Outer:
        inner: Inner

    proto = typic.protocol(Outer)

    return proto.transmute({"inner": {"field": "value"}})

if __name__ == '__main__':
    print(foo())

#> foo.<locals>.Outer(inner=foo.<locals>.Inner(field='value'))