doc/tests/manpage-urls.py: Add type annotations

nicoo 38e912ea ba387f0a

Changed files
+7 -5
doc
+7 -5
doc/tests/manpage-urls.py
···
#! /usr/bin/env nix-shell
#! nix-shell -i "python3 -I" -p "python3.withPackages(p: with p; [ aiohttp rich structlog ])"
-
from argparse import ArgumentParser
+
from argparse import ArgumentParser, Namespace
from collections import defaultdict
+
from collections.abc import Mapping, Sequence
from enum import IntEnum
from http import HTTPStatus
from pathlib import Path
+
from typing import Optional
import asyncio, json, logging
import aiohttp, structlog
···
HTTPStatus.NOT_FOUND,
))
-
async def check(session, manpage: str, url: str) -> HTTPStatus:
+
async def check(session: aiohttp.ClientSession, manpage: str, url: str) -> HTTPStatus:
with log_context(manpage=manpage, url=url):
logger.debug("Checking")
async with session.head(url) as resp:
···
return st
-
async def main(urls_path):
+
async def main(urls_path: Path) -> Mapping[HTTPStatus, int]:
logger.info(f"Parsing {urls_path}")
with urls_path.open() as urls_file:
urls = json.load(urls_file)
-
count = defaultdict(lambda: 0)
+
count: defaultdict[HTTPStatus, int] = defaultdict(lambda: 0)
logger.info(f"Checking URLs from {urls_path}")
async with aiohttp.ClientSession() as session:
···
return count
-
def parse_args(args=None):
+
def parse_args(args: Optional[Sequence[str]] = None) -> Namespace:
parser = ArgumentParser(
prog = 'check-manpage-urls',
description = 'Check the validity of the manpage URLs linked in the nixpkgs manual',