github.com/aws-cloudformation/cloudformation-cli-go-plugin@v1.2.0/python/rpdk/go/resolver.py (about) 1 from rpdk.core.jsonutils.resolver import UNDEFINED, ContainerType 2 3 PRIMITIVE_TYPES = { 4 "string": "string", 5 "integer": "int", 6 "boolean": "bool", 7 "number": "float64", 8 UNDEFINED: "interface{}", 9 } 10 11 12 def translate_item_type(resolved_type): 13 """ 14 translate_item_type converts JSON schema item types into Go types 15 """ 16 17 # Another model 18 if resolved_type.container == ContainerType.MODEL: 19 return resolved_type.type 20 21 # Primitive type 22 if resolved_type.container == ContainerType.PRIMITIVE: 23 return PRIMITIVE_TYPES[resolved_type.type] 24 25 # Something more complex 26 return translate_type(resolved_type) 27 28 29 def translate_type(resolved_type): 30 """ 31 translate_type converts JSON schema types into Go types 32 """ 33 34 # Another model 35 if resolved_type.container == ContainerType.MODEL: 36 return "*" + resolved_type.type 37 38 # Primitive type 39 if resolved_type.container == ContainerType.PRIMITIVE: 40 return "*" + PRIMITIVE_TYPES[resolved_type.type] 41 42 # Composite type 43 item_type = translate_item_type(resolved_type.type) 44 45 # A dict 46 if resolved_type.container == ContainerType.DICT: 47 return f"map[string]{item_type}" 48 49 # A list 50 if resolved_type.container in (ContainerType.LIST, ContainerType.SET): 51 return f"[]{item_type}" 52 53 raise ValueError(f"Unknown container type {resolved_type.container}")