diff options
Diffstat (limited to 'autoimport.py')
-rwxr-xr-x | autoimport.py | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/autoimport.py b/autoimport.py index 0f518c6..d4e03d0 100755 --- a/autoimport.py +++ b/autoimport.py @@ -11,6 +11,7 @@ import sqlite3 import subprocess import sys import tempfile +import typing import urllib.parse import concurrent.futures from debian.debian_support import version_compare @@ -19,7 +20,13 @@ from dedup.utils import iterate_packages from readyaml import readyaml -def process_http(pkgs, url, addhash=True): + +PkgDict = typing.Dict[str, str] + + +def process_http( + pkgs: typing.Dict[str, PkgDict], url: str, addhash: bool = True +) -> None: for pkg in iterate_packages(url, "amd64"): name = pkg["Package"] if name in pkgs and \ @@ -31,7 +38,10 @@ def process_http(pkgs, url, addhash=True): inst["sha256hash"] = pkg["SHA256"] pkgs[name] = inst -def process_file(pkgs, filename): + +def process_file( + pkgs: typing.Dict[str, PkgDict], filename: pathlib.Path +) -> None: if filename.suffix != ".deb": raise ValueError("filename does not end in .deb") parts = filename.name.split("_") @@ -43,14 +53,15 @@ def process_file(pkgs, filename): return pkgs[name] = dict(version=version, filename=str(filename)) -def process_dir(pkgs, d): + +def process_dir(pkgs: typing.Dict[str, PkgDict], d: pathlib.Path) -> None: for entry in d.iterdir(): try: process_file(pkgs, entry) except ValueError: pass -def process_pkg(name, pkgdict, outpath): +def process_pkg(name: str, pkgdict: PkgDict, outpath: pathlib.Path) -> None: filename = pkgdict["filename"] print("importing %s" % filename) importcmd = [sys.executable, "importpkg.py"] @@ -67,7 +78,7 @@ def process_pkg(name, pkgdict, outpath): close_fds=True) print("preprocessed %s" % name) -def main(): +def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("-n", "--new", action="store_true", help="avoid reimporting same versions") @@ -86,7 +97,7 @@ def main(): cur = db.cursor() cur.execute("PRAGMA foreign_keys = ON;") e = concurrent.futures.ThreadPoolExecutor(multiprocessing.cpu_count()) - pkgs = {} + pkgs: typing.Dict[str, PkgDict] = {} for d in args.files: print("processing %s" % d) if d.startswith(("http://", "https://", "ftp://", "file://")): |