parameters: (addresses)
docstring: Loops through the addresses, collapsing concurrent netblocks.
  
      Example:
  
          ip1 = IPv4Network('192.0.2.0/26')
          ip2 = IPv4Network('192.0.2.64/26')
          ip3 = IPv4Network('192.0.2.128/26')
          ip4 = IPv4Network('192.0.2.192/26')
  
          _collapse_addresses_recursive([ip1, ip2, ip3, ip4]) ->
            [IPv4Network('192.0.2.0/24')]
  
          This shouldn't be called directly; it is called via
            collapse_addresses([]).
  
      Args:
          addresses: A list of IPv4Network's or IPv6Network's
  
      Returns:
          A list of IPv4Network's or IPv6Network's depending on what we were
          passed.
docstring_summary: Loops through the addresses, collapsing concurrent netblocks.
docstring_tokens: Loops through the addresses collapsing concurrent netblocks .
function: def _collapse_addresses_recursive(addresses):
      """Loops through the addresses, collapsing concurrent netblocks.
  
      Example:
  
          ip1 = IPv4Network('192.0.2.0/26')
          ip2 = IPv4Network('192.0.2.64/26')
          ip3 = IPv4Network('192.0.2.128/26')
          ip4 = IPv4Network('192.0.2.192/26')
  
          _collapse_addresses_recursive([ip1, ip2, ip3, ip4]) ->
            [IPv4Network('192.0.2.0/24')]
  
          This shouldn't be called directly; it is called via
            collapse_addresses([]).
  
      Args:
          addresses: A list of IPv4Network's or IPv6Network's
  
      Returns:
          A list of IPv4Network's or IPv6Network's depending on what we were
          passed.
  
      """
      while True:
          last_addr = None
          ret_array = []
          optimized = False
  
          for cur_addr in addresses:
              if not ret_array:
                  last_addr = cur_addr
                  ret_array.append(cur_addr)
              elif (cur_addr.network_address >= last_addr.network_address and
                    cur_addr.broadcast_address <= last_addr.broadcast_address):
                  optimized = True
              elif cur_addr == list(last_addr.supernet().subnets())[1]:
                  ret_array[-1] = last_addr = last_addr.supernet()
                  optimized = True
              else:
                  last_addr = cur_addr
                  ret_array.append(cur_addr)
  
          addresses = ret_array
          if not optimized:
              return addresses
function_tokens: def _collapse_addresses_recursive ( addresses ) : while True : last_addr = None ret_array = [ ] optimized = False for cur_addr in addresses : if not ret_array : last_addr = cur_addr ret_array . append ( cur_addr ) elif ( cur_addr . network_address >= last_addr . network_address and cur_addr . broadcast_address <= last_addr . broadcast_address ) : optimized = True elif cur_addr == list ( last_addr . supernet ( ) . subnets ( ) ) [ 1 ] : ret_array [ - 1 ] = last_addr = last_addr . supernet ( ) optimized = True else : last_addr = cur_addr ret_array . append ( cur_addr ) addresses = ret_array if not optimized : return addresses