def _get_status_chain_and_states()

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