in src/sagemaker_core/tools/resources_extractor.py [0:0]
def _get_status_chain_and_states(self, shape_name, status_chain: list = None):
"""
Recursively extracts the status chain and states for a given shape.
Args:
shape_name (str): The name of the shape.
status_chain (list): The current status chain.
Returns:
status_chain (list): The status chain for the shape.
resource_states (list): The states associated with the shape.
"""
if status_chain is None:
status_chain = []
member_data = self.shapes[shape_name]["members"]
status_name = next((member for member in member_data if "status" in member.lower()), None)
if status_name is None:
return [], []
status_shape_name = member_data[status_name]["shape"]
status_chain.append({"name": status_name, "shape_name": status_shape_name})
if "enum" in self.shapes[status_shape_name]:
resource_states = self.shapes[status_shape_name]["enum"]
return status_chain, resource_states
else:
status_chain, resource_states = self._get_status_chain_and_states(
status_shape_name, status_chain
)
return status_chain, resource_states