in google_cloud_automlops/orchestration/base.py [0:0]
def get_pipeline_components(self,
pipeline_func: Callable,
comps_dict: dict) -> list:
"""Returns a list of components used within a given pipeline.
Args:
pipeline_func (Callable): Pipeline function.
comps_dict (dict): List of potential components to use within pipeline.
Returns:
List: Components from comps_dict used within the pipeline_func.
"""
# Retrieves pipeline source code and parses it into an Abstract Syntax Tree (AST)
code = inspect.getsource(pipeline_func)
ast_tree = ast.parse(code)
# Iterates through AST, finds function calls to components that are in comps_dict
comps_list = []
for node in ast.walk(ast_tree):
try:
if isinstance(node, ast.Call) and node.func.id in comps_dict.keys():
comps_list.append(comps_dict[node.func.id])
except Exception:
pass
return comps_list