class_docstr: Interact with AWS CloudFormation.
  
  Provide thin wrapper around
  :external+boto3:py:class:`boto3.client("cloudformation") <CloudFormation.Client>`.
  
  Additional arguments (such as ``aws_conn_id``) may be specified and
  are passed down to the underlying AwsBaseHook.
  
  .. seealso::
      - :class:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`
docstr: Get stack status from CloudFormation.
  
  .. seealso::
      - :external+boto3:py:meth:`CloudFormation.Client.describe_stacks`
code: def get_stack_status(
      self, stack_name: client | resource
  ) -> dict | None:
      """
      Get stack status from CloudFormation.
  
      .. seealso::
          - :external+boto3:py:meth:`CloudFormation.Client.describe_stacks`
  
      """
      self.log.info("Poking for stack %s", stack_name)
  
      try:
          stacks = self.get_conn().describe_stacks(
              StackName=stack_name
          )["Stacks"]
          return stacks[0]["StackStatus"]
      except ClientError as e:
          if "does not exist" in str(e):
              return None
          else:
              raise e
  
file_path: airflow/airflow/providers/amazon/aws/hooks/cloud_formation.py
imports: from __future__ import annotations
  from typing import TYPE_CHECKING
  from botocore.exceptions import ClientError
  from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
label_desc: Use image node_id 2 for calling the CloudFormationHook obj's underlying member method code with example usage: obj.get_stack_status(stack_name) and returns: stacks, None