parameters: (addresses)
return_statement: return ret_array
docstring: Loops through the addresses, collapsing concurrent netblocks.
  
      Example:
  
          ip1 = IPv4Network('1.1.0.0/24')
          ip2 = IPv4Network('1.1.1.0/24')
          ip3 = IPv4Network('1.1.2.0/24')
          ip4 = IPv4Network('1.1.3.0/24')
          ip5 = IPv4Network('1.1.4.0/24')
          ip6 = IPv4Network('1.1.0.1/22')
  
          _collapse_address_list_recursive([ip1, ip2, ip3, ip4, ip5, ip6]) ->
            [IPv4Network('1.1.0.0/22'), IPv4Network('1.1.4.0/24')]
  
          This shouldn't be called directly; it is called via
            collapse_address_list([]).
  
      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_address_list_recursive(addresses):
      """Loops through the addresses, collapsing concurrent netblocks.
  
      Example:
  
          ip1 = IPv4Network('1.1.0.0/24')
          ip2 = IPv4Network('1.1.1.0/24')
          ip3 = IPv4Network('1.1.2.0/24')
          ip4 = IPv4Network('1.1.3.0/24')
          ip5 = IPv4Network('1.1.4.0/24')
          ip6 = IPv4Network('1.1.0.1/22')
  
          _collapse_address_list_recursive([ip1, ip2, ip3, ip4, ip5, ip6]) ->
            [IPv4Network('1.1.0.0/22'), IPv4Network('1.1.4.0/24')]
  
          This shouldn't be called directly; it is called via
            collapse_address_list([]).
  
      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.
  
      """
      ret_array = []
      optimized = False
  
      for cur_addr in addresses:
          if not ret_array:
              ret_array.append(cur_addr)
              continue
          if cur_addr in ret_array[-1]:
              optimized = True
          elif cur_addr == ret_array[-1].supernet().subnet()[1]:
              ret_array.append(ret_array.pop().supernet())
              optimized = True
          else:
              ret_array.append(cur_addr)
  
      if optimized:
          return _collapse_address_list_recursive(ret_array)
  
      return ret_array
function_tokens: def _collapse_address_list_recursive ( addresses ) : ret_array = [ ] optimized = False for cur_addr in addresses : if not ret_array : ret_array . append ( cur_addr ) continue if cur_addr in ret_array [ - 1 ] : optimized = True elif cur_addr == ret_array [ - 1 ] . supernet ( ) . subnet ( ) [ 1 ] : ret_array . append ( ret_array . pop ( ) . supernet ( ) ) optimized = True else : ret_array . append ( cur_addr ) if optimized : return _collapse_address_list_recursive ( ret_array ) return ret_array