code: def calculate_cidr(start_address, end_address):
      
  
      tmp_addrs = []
  
      try:
  
          tmp_addrs.extend(summarize_address_range(
              ip_address(start_address),
              ip_address(end_address)))
  
      except (KeyError, ValueError, TypeError):  # pragma: no cover
  
          try:
  
              tmp_addrs.extend(summarize_address_range(
                  ip_network(start_address).network_address,
                  ip_network(end_address).network_address))
  
          except AttributeError:  # pragma: no cover
  
              tmp_addrs.extend(summarize_address_range(
                  ip_network(start_address).ip,
                  ip_network(end_address).ip))
  
      return [i.__str__() for i in collapse_addresses(tmp_addrs)]
docs: The function to calculate a CIDR range(s) from a start and end IP address.
  
      Args:
          start_address (:obj:`str`): The starting IP address.
          end_address (:obj:`str`): The ending IP address.
  
      Returns:
          list of str: The calculated CIDR ranges.