in google_cloud_automlops/orchestration/base.py [0:0]
def __init__(self,
func: Optional[Callable] = None,
packages_to_install: Optional[List[str]] = None):
"""Initiates a generic Component object created out of a function holding
all necessary code.
Args:
func (Optional[Callable]): The python function to create a component from. The function
should have type annotations for all its arguments, indicating how it is intended to
be used (e.g. as an input/output Artifact object, a plain parameter, or a path to a
file). Defaults to None.
packages_to_install (Optional[List[str]]): A list of optional packages to install before
executing func. These will always be installed at component runtime. Defaults to None.
Raises:
ValueError: The parameter `func` is not an existing function.
"""
# Confirm the input is an existing function
if not inspect.isfunction(func):
raise ValueError(f'{func} must be of type function.')
# Set simple attributes of the component function
self.func = func
self.name = func.__name__
self.packages_to_install = [] if not packages_to_install else packages_to_install
# Parse the docstring for description
self.parsed_docstring = docstring_parser.parse(inspect.getdoc(func))
self.description = self.parsed_docstring.short_description
# Process and extract details from passed function
self.parameters = self._get_function_parameters()
self.return_types = self._get_function_return_types()
self.src_code = get_function_source_definition(self.func)
# Instantiate attributes to be set during build
self.artifact_repo_location = None
self.artifact_repo_name = None
self.project_id = None
self.naming_prefix = None