docs: def _exclude_ipv4_networks(self, networks, networks_to_exclude):
          """
          Exclude the list of networks from another list of networks
          and return a flat list of new networks.
  
          :param networks: List of IPv4 networks to exclude from
          :param networks_to_exclude: List of IPv4 networks to exclude
          :returns: Flat list of IPv4 networks
          """
          for network_to_exclude in networks_to_exclude:
              def _exclude_ipv4_network(network):
                  """
                  Exclude a single network from another single network
                  and return a list of networks. Network to exclude
                  comes from the outer scope.
  
                  :param network: Network to exclude from
                  :returns: Flat list of IPv4 networks after exclusion.
                            If exclude fails because networks do not
                            overlap, a single element list with the
                            orignal network is returned. If it overlaps,
                            even partially, the network is excluded.
                  """
                  try:
                      return list(network.address_exclude(network_to_exclude))
                  except ValueError:
                      # If networks overlap partially, `address_exclude`
                      # will fail, but the network still must not be used
                      # in generation.
                      if network.overlaps(network_to_exclude):
                          return []
                      else:
                          return [network]
  
              networks = list(map(_exclude_ipv4_network, networks))
  
              # flatten list of lists
              networks = [
                  item for nested in networks for item in nested
              ]
  
          return networks