def _handle_prop()

in tools/resource.py [0:0]


    def _handle_prop(self, prop: dict):
        for k in list(prop):
            if k == "required" and prop.get("type") == "object":
                nk = ".RequiredList"
            else:
                nk = "{}{}".format(k[0].upper(), k[1:])
            prop[nk] = prop.pop(k)

        t = prop.get("Type")
        if isinstance(t, list):
            if "object" in t:
                t = "object"
            elif "array" in t:
                t = "array"
            else:
                t = t[-1]
            prop["Type"] = t

        if t == "array":
            prop["Type"] = "list"
            item_schema = prop.get("Items")
            self._handle_prop(item_schema)
            prop["Schema"] = {"*": item_schema}
        elif t == "object":
            prop["Type"] = "map"
            props = prop.get("Properties")
            if props:
                required_names = prop.pop(".RequiredList", None)
                self._handle_props(props, required_names)
                prop["Schema"] = props
        elif not t and "oneof" in prop:
            for each_prop in prop["oneof"]:
                self._handle_prop(each_prop)