#
# Autogenerated by Thrift for thrift/compiler/test/fixtures/templated-deserialize/src/module.thrift
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#  @generated
#


import folly.iobuf as _fbthrift_iobuf

from thrift.py3.reflection import (
    NumberType as __NumberType,
    StructType as __StructType,
    Qualifier as __Qualifier,
    StructSpec as __StructSpec,
    ListSpec as __ListSpec,
    SetSpec as __SetSpec,
    MapSpec as __MapSpec,
    FieldSpec as __FieldSpec,
)


import module.types as _module_types



def get_reflection__SmallStruct() -> __StructSpec:
    spec: __StructSpec = __StructSpec._fbthrift_create(
        name="SmallStruct",
        kind=__StructType.STRUCT,
        annotations={
        },
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=1,
            name="small_A",
            py_name="small_A",
            type=bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=2,
            name="small_B",
            py_name="small_B",
            type=int,
            kind=__NumberType.I32,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    return spec
def get_reflection__containerStruct() -> __StructSpec:
    spec: __StructSpec = __StructSpec._fbthrift_create(
        name="containerStruct",
        kind=__StructType.STRUCT,
        annotations={
        },
    )
    defaults = _module_types.containerStruct()
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=1,
            name="fieldA",
            py_name="fieldA",
            type=bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=2,
            name="fieldB",
            py_name="fieldB",
            type=_module_types.Map__string_bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=3,
            name="fieldC",
            py_name="fieldC",
            type=_module_types.Set__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=defaults.fieldC,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=4,
            name="fieldD",
            py_name="fieldD",
            type=str,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=5,
            name="fieldE",
            py_name="fieldE",
            type=str,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=defaults.fieldE,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=6,
            name="fieldF",
            py_name="fieldF",
            type=_module_types.List__List__List__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=7,
            name="fieldG",
            py_name="fieldG",
            type=_module_types.Map__string_Map__string_Map__string_i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=8,
            name="fieldH",
            py_name="fieldH",
            type=_module_types.List__Set__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=9,
            name="fieldI",
            py_name="fieldI",
            type=bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=defaults.fieldI,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=10,
            name="fieldJ",
            py_name="fieldJ",
            type=_module_types.Map__string_List__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=defaults.fieldJ,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=11,
            name="fieldK",
            py_name="fieldK",
            type=_module_types.List__List__List__List__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=12,
            name="fieldL",
            py_name="fieldL",
            type=_module_types.Set__Set__Set__bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=13,
            name="fieldM",
            py_name="fieldM",
            type=_module_types.Map__Set__List__i32_Map__List__Set__string_string,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=14,
            name="fieldN",
            py_name="fieldN",
            type=_module_types.List__Foo__i64,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=15,
            name="fieldO",
            py_name="fieldO",
            type=_module_types.List__Bar__double,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=16,
            name="fieldP",
            py_name="fieldP",
            type=_module_types.List__Baz__i32,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=17,
            name="fieldQ",
            py_name="fieldQ",
            type=_module_types.MyEnumA,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=18,
            name="fieldR",
            py_name="fieldR",
            type=_module_types.Map__string_bool,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=19,
            name="fieldS",
            py_name="fieldS",
            type=_module_types.SmallStruct,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=20,
            name="fieldT",
            py_name="fieldT",
            type=_module_types.SmallStruct,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=21,
            name="fieldU",
            py_name="fieldU",
            type=_module_types.SmallStruct,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    spec.add_field(
        __FieldSpec._fbthrift_create(
            id=23,
            name="fieldX",
            py_name="fieldX",
            type=_module_types.SmallStruct,
            kind=__NumberType.NOT_A_NUMBER,
            qualifier=__Qualifier.UNQUALIFIED,
            default=None,
            annotations={
            },
        ),
    )
    return spec
def get_reflection__Map__string_bool() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=str,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=bool,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Set__i32() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=int,
        kind=__NumberType.I32,
     )

def get_reflection__List__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=int,
        kind=__NumberType.I32,
    )

def get_reflection__List__List__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=_module_types.List__i32,
        kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__List__List__List__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=_module_types.List__List__i32,
        kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Map__string_i32() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=str,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=int,
        value_kind=__NumberType.I32,
    )

def get_reflection__Map__string_Map__string_i32() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=str,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=_module_types.Map__string_i32,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Map__string_Map__string_Map__string_i32() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=str,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=_module_types.Map__string_Map__string_i32,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__List__Set__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=_module_types.Set__i32,
        kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Map__string_List__i32() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=str,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=_module_types.List__i32,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__List__List__List__List__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=_module_types.List__List__List__i32,
        kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Set__bool() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=bool,
        kind=__NumberType.NOT_A_NUMBER,
     )

def get_reflection__Set__Set__bool() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=_module_types.Set__bool,
        kind=__NumberType.NOT_A_NUMBER,
     )

def get_reflection__Set__Set__Set__bool() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=_module_types.Set__Set__bool,
        kind=__NumberType.NOT_A_NUMBER,
     )

def get_reflection__Set__List__i32() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=_module_types.List__i32,
        kind=__NumberType.NOT_A_NUMBER,
     )

def get_reflection__Set__string() -> __SetSpec:
    return __SetSpec._fbthrift_create(
        value=str,
        kind=__NumberType.NOT_A_NUMBER,
     )

def get_reflection__List__Set__string() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=_module_types.Set__string,
        kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Map__List__Set__string_string() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=_module_types.List__Set__string,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=str,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__Map__Set__List__i32_Map__List__Set__string_string() -> __MapSpec:
    return __MapSpec._fbthrift_create(
        key=_module_types.Set__List__i32,
        key_kind=__NumberType.NOT_A_NUMBER,
        value=_module_types.Map__List__Set__string_string,
        value_kind=__NumberType.NOT_A_NUMBER,
    )

def get_reflection__List__Foo__i64() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=int,
        kind=__NumberType.I64,
    )

def get_reflection__List__Bar__double() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=float,
        kind=__NumberType.DOUBLE,
    )

def get_reflection__List__Baz__i32() -> __ListSpec :
    return __ListSpec._fbthrift_create(
        value=int,
        kind=__NumberType.I32,
    )

