def remove(zipname, *filenames):
    """
    Remove the specified file from the named zip archive.

    Elements of `filenames` may be strings or
    :py:class:`zipfile.ZipInfo` objects. In the latter case, only the
    :py:attr:`~zipfile.ZipInfo.filename` attribute is used to identify
    matches. The other metadata is ignored.

    Raise a warning for any file names that are not found. Actual
    removal is done by recreating the archive minus the filtered
    elements in a temporary file, then overwriting the original with it.
    """
    return filter(zipname, *filenames, filter=None)
