creates type wrapper for list of given type

def _create_list_of_wrapper(name, t):
    'creates type wrapper for list of given type'
    def __new__(cls, json_data, selection_list=None):
        if json_data is None:
            return None
        return [t(v, selection_list) for v in json_data]

    def __to_graphql_input__(value, indent=0, indent_string='  '):
        r = []
        for v in value:
            r.append(t.__to_graphql_input__(v, indent, indent_string))
        return '[' + ', '.join(r) + ']'

    def __to_json_value__(value):
        if value is None:
            return None
        return [t.__to_json_value__(v) for v in value]

    return type(name, (t,), {
        '__new__': __new__,
        '_%s__auto_register' % name: False,
        '__to_graphql_input__': __to_graphql_input__,
        '__to_json_value__': __to_json_value__,
    })