Add some missing type hints (MR 2338)

Functions with no explicit return type are considered to return `Any`.
This commit is contained in:
Hugo Osvaldo Barrera 2024-06-27 02:43:00 +02:00
parent e6eb0d8795
commit 84c512ea6a
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
8 changed files with 67 additions and 57 deletions

View file

@ -76,7 +76,8 @@ def main() -> int:
# Initialize or require config
if args.action == "init":
return config_init.frontend(args)
config_init.frontend(args)
return 0
elif not os.path.exists(args.config):
if args.config != config.defaults["config"]:
raise NonBugError(f"Couldn't find file passed with --config: {args.config}")

View file

@ -11,7 +11,7 @@ from pmb.core import Chroot
from pmb.core.context import get_context
def generate(pkgname: str):
def generate(pkgname: str) -> None:
arch = pkgname.split("-")[2]
context = get_context()

View file

@ -9,7 +9,7 @@ import pmb.install
from pmb.core import Chroot
def kernel_flavor_installed(chroot: Chroot, autoinstall=True):
def kernel_flavor_installed(chroot: Chroot, autoinstall=True) -> str | None:
"""
Get installed kernel flavor. Optionally install the device's kernel
beforehand.
@ -34,7 +34,7 @@ def kernel_flavor_installed(chroot: Chroot, autoinstall=True):
return glob_result[0].name if glob_result else None
def copy_xauthority(args: PmbArgs):
def copy_xauthority(args: PmbArgs) -> None:
"""
Copy the host system's Xauthority file to the pmos user inside the chroot,
so we can start X11 applications from there.

View file

@ -32,7 +32,7 @@ from pmb.parse.deviceinfo import Deviceinfo
import pmb.parse._apkbuild
def require_programs():
def require_programs() -> None:
missing = []
for program in pmb.config.required_programs:
if not shutil.which(program):
@ -273,7 +273,7 @@ def ask_for_timezone():
return "GMT"
def ask_for_provider_select(apkbuild, providers_cfg):
def ask_for_provider_select(apkbuild, providers_cfg) -> None:
"""Ask for selectable providers that are specified using "_pmb_select" in a APKBUILD.
:param apkbuild: the APKBUILD with the _pmb_select
@ -331,7 +331,7 @@ def ask_for_provider_select(apkbuild, providers_cfg):
)
def ask_for_provider_select_pkg(pkgname, providers_cfg):
def ask_for_provider_select_pkg(pkgname, providers_cfg) -> None:
"""Look up the APKBUILD for the specified pkgname and ask for selectable
providers that are specified using "_pmb_select".
@ -466,7 +466,7 @@ def ask_for_device(context: Context):
return (device, device_path is not None, kernel)
def ask_for_additional_options(config):
def ask_for_additional_options(config) -> None:
context = pmb.core.context.get_context()
# Allow to skip additional options
logging.info(
@ -646,7 +646,7 @@ def get_locales():
return ret
def ask_for_locale(current_locale: str):
def ask_for_locale(current_locale: str) -> str:
locales = get_locales()
logging.info(
"Choose your preferred locale, like e.g. en_US. Only UTF-8"
@ -672,7 +672,7 @@ def ask_for_locale(current_locale: str):
return f"{ret}.UTF-8"
def frontend(args: PmbArgs):
def frontend(args: PmbArgs) -> None:
require_programs()
# Work folder (needs to be first, so we can create chroots early)

View file

@ -1,5 +1,7 @@
# Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import annotations
from pmb.core.context import get_context
from pmb.helpers import logging
@ -17,7 +19,12 @@ import pmb.parse.kconfig
from pmb.core import Chroot, ChrootType
def kernel(deviceinfo: Deviceinfo, method: str, boot: bool = False, autoinstall: bool = False):
def kernel(
deviceinfo: Deviceinfo,
method: str,
boot: bool = False,
autoinstall: bool = False,
) -> None:
# Rebuild the initramfs, just to make sure (see #69)
flavor = pmb.helpers.frontend._parse_flavor(deviceinfo.codename, autoinstall)
if autoinstall:
@ -43,13 +50,13 @@ def kernel(deviceinfo: Deviceinfo, method: str, boot: bool = False, autoinstall:
)
def list_flavors(device: str):
def list_flavors(device: str) -> None:
chroot = Chroot(ChrootType.ROOTFS, device)
logging.info(f"({chroot}) installed kernel flavors:")
logging.info("* " + pmb.chroot.other.kernel_flavor_installed(chroot))
logging.info("* " + str(pmb.chroot.other.kernel_flavor_installed(chroot)))
def rootfs(deviceinfo: Deviceinfo, method: str):
def rootfs(deviceinfo: Deviceinfo, method: str) -> None:
# Generate rootfs, install flasher
suffix = ".img"
if pmb.config.flashers.get(method, {}).get("split", False):
@ -73,11 +80,11 @@ def rootfs(deviceinfo: Deviceinfo, method: str):
pmb.flasher.run(deviceinfo, method, "flash_rootfs")
def list_devices(deviceinfo: Deviceinfo, method: str):
def list_devices(deviceinfo: Deviceinfo, method: str) -> None:
pmb.flasher.run(deviceinfo, method, "list_devices")
def sideload(deviceinfo: Deviceinfo, method: str):
def sideload(deviceinfo: Deviceinfo, method: str) -> None:
# Install depends
pmb.flasher.install_depends(method)
@ -102,7 +109,7 @@ def sideload(deviceinfo: Deviceinfo, method: str):
pmb.flasher.run(deviceinfo, method, "sideload")
def flash_lk2nd(deviceinfo: Deviceinfo, method: str):
def flash_lk2nd(deviceinfo: Deviceinfo, method: str) -> None:
if method == "fastboot":
# In the future this could be expanded to use "fastboot flash lk2nd $img"
# which reflashes/updates lk2nd from itself. For now let the user handle this
@ -141,7 +148,7 @@ def flash_lk2nd(deviceinfo: Deviceinfo, method: str):
pmb.flasher.run(deviceinfo, method, "flash_lk2nd")
def frontend(args: PmbArgs):
def frontend(args: PmbArgs) -> None:
context = get_context()
action = args.action_flasher
device = context.config.device

View file

@ -7,7 +7,7 @@ from pmb.helpers import logging
import os
from pathlib import Path
import sys
from typing import Any
from typing import Any, NoReturn
import pmb.aportgen
import pmb.build
@ -43,7 +43,7 @@ from pmb.core import ChrootType, Chroot
from pmb.core.context import get_context
def _parse_flavor(device: str, autoinstall=True):
def _parse_flavor(device: str, autoinstall=True) -> str:
"""Verify the flavor argument if specified, or return a default value.
:param autoinstall: make sure that at least one kernel flavor is installed
@ -83,7 +83,7 @@ def _parse_suffix(args: PmbArgs) -> Chroot:
return Chroot(ChrootType.NATIVE)
def _install_ondev_verify_no_rootfs(device: str, ondev_cp: list[tuple[str, str]]):
def _install_ondev_verify_no_rootfs(device: str, ondev_cp: list[tuple[str, str]]) -> None:
chroot_dest = "/var/lib/rootfs.img"
dest = Chroot(ChrootType.INSTALLER, device) / chroot_dest
if dest.exists():
@ -103,13 +103,13 @@ def _install_ondev_verify_no_rootfs(device: str, ondev_cp: list[tuple[str, str]]
)
def aportgen(args: PmbArgs):
def aportgen(args: PmbArgs) -> None:
for package in args.packages:
logging.info("Generate aport: " + package)
pmb.aportgen.generate(package, args.fork_alpine)
def build(args: PmbArgs):
def build(args: PmbArgs) -> None:
# Strict mode: zap everything
if args.strict:
pmb.chroot.zap(False)
@ -144,12 +144,12 @@ def build(args: PmbArgs):
)
def build_init(args: PmbArgs):
def build_init(args: PmbArgs) -> None:
chroot = _parse_suffix(args)
pmb.build.init(chroot)
def checksum(args: PmbArgs):
def checksum(args: PmbArgs) -> None:
pmb.chroot.init(Chroot.native())
for package in args.packages:
if args.verify:
@ -158,20 +158,20 @@ def checksum(args: PmbArgs):
pmb.build.checksum.update(package)
def sideload(args: PmbArgs):
def sideload(args: PmbArgs) -> None:
arch = args.arch
user = get_context().config.user
host = args.host
pmb.sideload.sideload(args, user, host, args.port, arch, args.install_key, args.packages)
def netboot(args: PmbArgs):
def netboot(args: PmbArgs) -> None:
if args.action_netboot == "serve":
device = get_context().config.device
pmb.netboot.start_nbd_server(device, args.replace)
def chroot(args: PmbArgs):
def chroot(args: PmbArgs) -> None:
# Suffix
chroot = _parse_suffix(args)
user = args.user
@ -225,7 +225,7 @@ def chroot(args: PmbArgs):
pmb.chroot.root(args.command, chroot, output=args.output, env=env)
def config(args: PmbArgs):
def config(args: PmbArgs) -> None:
keys = Config.keys()
if args.name and args.name not in keys:
logging.info("NOTE: Valid config keys: " + ", ".join(keys))
@ -284,16 +284,16 @@ def config(args: PmbArgs):
pmb.helpers.logging.disable()
def repo_missing(args: PmbArgs):
def repo_missing(args: PmbArgs) -> None:
missing = pmb.helpers.repo_missing.generate(args.arch, args.overview, args.package, args.built)
print(json.dumps(missing, indent=4))
def initfs(args: PmbArgs):
def initfs(args: PmbArgs) -> None:
pmb.chroot.initfs.frontend(args)
def install(args: PmbArgs):
def install(args: PmbArgs) -> None:
config = get_context().config
device = config.device
deviceinfo = pmb.parse.deviceinfo(device)
@ -409,15 +409,15 @@ def install(args: PmbArgs):
pmb.install.install(args)
def flasher(args: PmbArgs):
def flasher(args: PmbArgs) -> None:
pmb.flasher.frontend(args)
def export(args: PmbArgs):
def export(args: PmbArgs) -> None:
pmb.export.frontend(args)
def update(args: PmbArgs):
def update(args: PmbArgs) -> None:
existing_only = not args.non_existing
if not pmb.helpers.repo.update(args.arch, True, existing_only):
logging.info(
@ -432,7 +432,7 @@ def update(args: PmbArgs):
)
def newapkbuild(args: PmbArgs):
def newapkbuild(args: PmbArgs) -> None:
# Check for SRCURL usage
is_url = False
for prefix in ["http://", "https://", "ftp://"]:
@ -466,7 +466,7 @@ def newapkbuild(args: PmbArgs):
pmb.build.newapkbuild(args.folder, pass_through, args.force)
def deviceinfo_parse(args: PmbArgs):
def deviceinfo_parse(args: PmbArgs) -> None:
# Default to all devices
devices = args.devices
if not devices:
@ -479,7 +479,7 @@ def deviceinfo_parse(args: PmbArgs):
print(json.dumps(pmb.parse.deviceinfo(device, kernel), indent=4, sort_keys=True))
def apkbuild_parse(args: PmbArgs):
def apkbuild_parse(args: PmbArgs) -> None:
# Default to all packages
packages: Sequence[str] = args.packages
if not packages:
@ -492,7 +492,7 @@ def apkbuild_parse(args: PmbArgs):
print(json.dumps(pmb.parse.apkbuild(aport), indent=4, sort_keys=True))
def apkindex_parse(args: PmbArgs):
def apkindex_parse(args: PmbArgs) -> None:
result = pmb.parse.apkindex.parse(args.apkindex_path)
if args.package:
if args.package not in result:
@ -501,10 +501,10 @@ def apkindex_parse(args: PmbArgs):
print(json.dumps(result, indent=4))
def pkgrel_bump(args: PmbArgs):
def pkgrel_bump(args: PmbArgs) -> None:
would_bump = True
if args.auto:
would_bump = pmb.helpers.pkgrel_bump.auto(args, args.dry)
would_bump = bool(pmb.helpers.pkgrel_bump.auto(args, args.dry))
else:
# Each package must exist
for package in args.packages:
@ -519,7 +519,7 @@ def pkgrel_bump(args: PmbArgs):
sys.exit(1)
def aportupgrade(args: PmbArgs):
def aportupgrade(args: PmbArgs) -> None:
if args.all or args.all_stable or args.all_git:
pmb.helpers.aportupgrade.upgrade_all(args)
else:
@ -532,11 +532,11 @@ def aportupgrade(args: PmbArgs):
pmb.helpers.aportupgrade.upgrade(args, package)
def qemu(args: PmbArgs):
def qemu(args: PmbArgs) -> None:
pmb.qemu.run(args)
def stats(args: PmbArgs):
def stats(args: PmbArgs) -> None:
# Chroot suffix
chroot = Chroot.buildroot(args.arch or Arch.native())
@ -546,12 +546,12 @@ def stats(args: PmbArgs):
pmb.chroot.user(["ccache", "-s"], chroot, output="stdout")
def work_migrate(args: PmbArgs):
def work_migrate(args: PmbArgs) -> None:
# do nothing (pmb/__init__.py already did the migration)
pmb.helpers.logging.disable()
def zap(args: PmbArgs):
def zap(args: PmbArgs) -> None:
pmb.chroot.zap(
dry=args.dry,
http=args.http,
@ -567,7 +567,7 @@ def zap(args: PmbArgs):
pmb.helpers.logging.disable()
def bootimg_analyze(args: PmbArgs):
def bootimg_analyze(args: PmbArgs) -> None:
bootimg = pmb.parse.bootimg(args.path)
tmp_output = "Put these variables in the deviceinfo file of your device:\n"
for line in pmb.aportgen.device.generate_deviceinfo_fastboot_content(bootimg).split("\n"):
@ -575,7 +575,7 @@ def bootimg_analyze(args: PmbArgs):
logging.info(tmp_output)
def lint(args: PmbArgs):
def lint(args: PmbArgs) -> None:
packages: Sequence[str] = args.packages
if not packages:
packages = pmb.helpers.pmaports.get_list()
@ -583,14 +583,14 @@ def lint(args: PmbArgs):
pmb.helpers.lint.check(packages)
def status(args: PmbArgs) -> None:
def status(args: PmbArgs) -> NoReturn:
pmb.helpers.status.print_status(args)
# Do not print the DONE! line
sys.exit(0)
def ci(args: PmbArgs):
def ci(args: PmbArgs) -> None:
topdir = pmb.helpers.git.get_topdir(Path.cwd())
if not os.path.exists(topdir):
logging.error(

View file

@ -11,7 +11,7 @@ import pmb.parse
import pmb.parse.apkindex
def package(args: PmbArgs, pkgname, reason="", dry=False):
def package(args: PmbArgs, pkgname: str, reason="", dry: bool = False) -> None:
"""Increase the pkgrel in the APKBUILD of a specific package.
:param pkgname: name of the package
@ -54,7 +54,7 @@ def package(args: PmbArgs, pkgname, reason="", dry=False):
)
def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry=False):
def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry: bool = False) -> bool:
"""Bump the pkgrel of a specific package if it is outdated in the given APKINDEX.
:param arch: the architecture, e.g. "armhf"
@ -76,13 +76,13 @@ def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry=False):
f"{pkgname}: skipping, because the aport version {version_aport} is lower"
f" than the binary version {version_apk}"
)
return
return False
if compare == 1:
logging.verbose(
f"{pkgname}: skipping, because the aport version {version_aport} is higher"
f" than the binary version {version_apk}"
)
return
return False
# Find missing depends
depends = apk["depends"]
@ -106,8 +106,10 @@ def auto_apkindex_package(args: PmbArgs, arch, aport, apk, dry=False):
package(args, pkgname, reason=", missing depend(s): " + ", ".join(missing), dry=dry)
return True
return False
def auto(args: PmbArgs, dry=False):
def auto(args: PmbArgs, dry=False) -> list[str]:
""":returns: list of aport names, where the pkgrel needed to be changed"""
ret = []
for arch in Arch.supported():

View file

@ -64,13 +64,13 @@ def ssh_find_arch(args: PmbArgs, user: str, host: str, port: str) -> Arch:
return alpine_architecture
def ssh_install_apks(args: PmbArgs, user, host, port, paths) -> None:
def ssh_install_apks(args: PmbArgs, user, host, port, paths: list) -> None:
"""Copy binary packages via SCP and install them via SSH.
:param user: target device ssh username
:param host: target device ssh hostname
:param port: target device ssh port
:param paths: list of absolute paths to locally stored apks
:type paths: list"""
"""
remote_paths = []
for path in paths: