def main()

in scripts/download_typeshed.py [0:0]


def main() -> None:
    parser = argparse.ArgumentParser(
        description="A script to download and trim typeshed zip file."
    )
    parser.add_argument(
        "-u",
        "--url",
        type=str,
        help=(
            "URL from which typeshed zip file is downloaded. "
            + "If not set, default to the current typeshed mater on github."
        ),
    )
    parser.add_argument(
        "-o",
        "--output",
        required=True,
        type=str,
        help="Where to store the downloaded typeshed zip file.",
    )
    parser.add_argument(
        "-p",
        "--patch-directory",
        required=True,
        type=str,
        help="Where the .patch files for amending typeshed are located.",
    )
    arguments = parser.parse_args()
    logging.basicConfig(
        format="[%(asctime)s][%(levelname)s]: %(message)s", level=logging.INFO
    )

    path = Path(arguments.patch_directory)
    url = get_typeshed_url(arguments.url)
    downloaded = download_typeshed(url)
    LOG.info(f"{downloaded.getbuffer().nbytes} bytes downloaded from {url}")
    trimmed_typeshed = trim_typeshed(downloaded)
    log_trim_statistics(trimmed_typeshed.statistics)
    patched_typeshed = _apply_patches(path, trimmed_typeshed)
    write_output(patched_typeshed, arguments.output)
    LOG.info(f"Zip file written to {arguments.output}")