def build_resources(self): resources = [] if has_rest_dict(self.buildobj): self._path_chain.append(get_rest_dict(self.buildobj))# search chain for v in vars(self.buildobj).values(): if isinstance(v, type): resources.extend(ResourceBuilder(v, self._path_chain).build_resources()) elif isinstance(v, FunctionType): if has_rest_dict(v): resources.append(self.build_resource(target=v, host=self.buildobj)) return resources
def build_all(resources): resources = set(resources) #Select the top level class. Top means at the root of 'path' tree for c in [c for c in resources if isinstance(c, type)]: for v in [v for v in vars(c).values() if isinstance(v, (type, FunctionType))]: if has_rest_dict(v): resources.discard(v) resources = sum(map(lambda resource : ResourceBuilder(resource).build(), resources), []) return resources
def build(self): if isinstance(self.buildobj, type): return self.build_resources() elif isinstance(self.buildobj, FunctionType) and has_rest_dict(self.buildobj): return [self.build_resource(target=self.buildobj)] return []