pmb.helpers.logging: wrap logging module (MR 2252)

We use a custom verbose log level in pmbootstrap, unfortunately it isn't
possible to correctly type this due to some limitations in the logging
library [1], [2].

Given that our usecase is fairly simple, we can just wrap the module
with our own so we only have to tell mypy to ignore the error once
instead of at every callsite.

[1]: https://github.com/cryptax/droidlysis/issues/15
[2]: https://github.com/python/typing/discussions/980

Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
This commit is contained in:
Caleb Connolly 2024-04-04 04:05:53 +02:00 committed by Oliver Smith
parent 4b6c198ca4
commit 71e7af57e6
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
65 changed files with 110 additions and 69 deletions

View file

@ -13,7 +13,7 @@ from . import config
from . import parse from . import parse
from .config import init as config_init from .config import init as config_init
from .helpers import frontend from .helpers import frontend
from .helpers import logging as pmb_logging from .helpers import logging
from .helpers import mount from .helpers import mount
from .helpers import other from .helpers import other
from .core import Chroot from .core import Chroot
@ -98,7 +98,8 @@ def main() -> int:
except Exception as e: except Exception as e:
# Dump log to stdout when args (and therefore logging) init failed # Dump log to stdout when args (and therefore logging) init failed
if not args: if not args:
logging.getLogger().setLevel(logging.DEBUG) import logging as pylogging
pylogging.getLogger().setLevel(logging.DEBUG)
logging.info("ERROR: " + str(e)) logging.info("ERROR: " + str(e))
logging.info("See also: <https://postmarketos.org/troubleshooting>") logging.info("See also: <https://postmarketos.org/troubleshooting>")

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
import pmb.aportgen.busybox_static import pmb.aportgen.busybox_static
import pmb.aportgen.device import pmb.aportgen.device
import pmb.aportgen.gcc import pmb.aportgen.gcc

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import fnmatch import fnmatch
import logging from pmb.helpers import logging
import re import re
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.git import pmb.helpers.git

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.cli import pmb.helpers.cli

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import datetime import datetime
import enum import enum
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import pmb.build import pmb.build

View file

@ -1,8 +1,8 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pathlib import Path
import os from pmb.helpers import logging
from typing import Dict from typing import Dict, Optional
import pmb.config import pmb.config
import pmb.chroot.apk import pmb.chroot.apk

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path

View file

@ -1,6 +1,6 @@
# Copyright 2023 Robert Yang # Copyright 2023 Robert Yang
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import re import re

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
import pathlib import pathlib

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any, Dict

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import pmb.chroot.user import pmb.chroot.user
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import shlex import shlex

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import shlex import shlex
from typing import List from typing import List

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
import shutil import shutil
import tarfile import tarfile
import tempfile import tempfile

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.run import pmb.helpers.run

View file

@ -2,8 +2,8 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import enum import enum
import filecmp import filecmp
import glob from typing import List
import logging from pmb.helpers import logging
import os import os
import filecmp import filecmp

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import pmb.chroot.initfs_hooks import pmb.chroot.initfs_hooks
import pmb.chroot.other import pmb.chroot.other

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import glob import glob
import logging from pmb.helpers import logging
import pmb.config import pmb.config
import pmb.chroot.apk import pmb.chroot.apk

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
from typing import Dict from typing import Dict

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import pmb.chroot.apk import pmb.chroot.apk
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import socket import socket
from contextlib import closing from contextlib import closing

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import glob import glob
import logging from pmb.helpers import logging
import os import os
import pmb.chroot import pmb.chroot

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import collections import collections
import glob import glob
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import pmb.chroot import pmb.chroot

View file

@ -1,6 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.core.chroot import Chroot
from pmb.helpers import logging
import glob import glob
import json import json
import os import os

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import configparser import configparser
import os import os
import sys import sys

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import configparser import configparser
import logging from pmb.helpers import logging
import os import os
import sys import sys

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,4 +1,4 @@
import logging from pmb.helpers import logging
import os import os
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import pmb.build import pmb.build

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
from typing import List from typing import List

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import pmb.config import pmb.config
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import datetime import datetime
import fnmatch import fnmatch
import logging from pmb.helpers import logging
import os import os
import re import re
import urllib.parse import urllib.parse

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import datetime import datetime
import logging from pmb.helpers import logging
import os import os
import re import re
import readline import readline

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import json import json
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import sys import sys

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import configparser import configparser
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import hashlib import hashlib
import json import json
import logging from pmb.helpers import logging
import os import os
import shutil import shutil
import urllib.request import urllib.request

View file

@ -1,6 +1,6 @@
# Copyright 2023 Danct12 <danct12@disroot.org> # Copyright 2023 Danct12 <danct12@disroot.org>
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
import pmb.chroot import pmb.chroot

View file

@ -130,3 +130,38 @@ def init(args: PmbArgs):
def disable(): def disable():
logger = logging.getLogger() logger = logging.getLogger()
logger.disabled = True logger.disabled = True
# We have our own logging wrappers so we can make mypy happy
# by not calling the (undefined) logging.verbose() function.
def critical(msg: object, *args, **kwargs):
logging.critical(msg, *args, **kwargs)
def fatal(msg: object, *args, **kwargs):
logging.fatal(msg, *args, **kwargs)
def error(msg: object, *args, **kwargs):
logging.error(msg, *args, **kwargs)
def warning(msg: object, *args, **kwargs):
logging.warning(msg, *args, **kwargs)
def info(msg: object, *args, **kwargs):
logging.info(msg, *args, **kwargs)
def debug(msg: object, *args, **kwargs):
logging.debug(msg, *args, **kwargs)
def verbose(msg: object, *args, **kwargs):
logging.verbose(msg, *args, **kwargs) # type: ignore[attr-defined]
def log(level: int, msg: object, *args, **kwargs):
logging.log(level, msg, *args, **kwargs)

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import re import re

View file

@ -9,7 +9,7 @@ See also:
- pmb/helpers/repo.py (work with binary package repos) - pmb/helpers/repo.py (work with binary package repos)
""" """
import copy import copy
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.pmaports import pmb.helpers.pmaports

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.file import pmb.helpers.file

View file

@ -7,7 +7,7 @@ See also:
- pmb/helpers/package.py (work with both) - pmb/helpers/package.py (work with both)
""" """
import glob import glob
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
from typing import Optional, Sequence, Dict from typing import Optional, Sequence, Dict

View file

@ -9,7 +9,7 @@ See also:
""" """
import os import os
import hashlib import hashlib
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
from typing import List from typing import List

View file

@ -1,6 +1,6 @@
# Copyright 2024 Oliver Smith # Copyright 2024 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import glob import glob
import pmb.config.pmaports import pmb.config.pmaports

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import pmb.build import pmb.build
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import fcntl import fcntl
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import selectors import selectors

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
import re import re
import glob import glob

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
import glob import glob
from pathlib import Path from pathlib import Path

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import pmb.chroot import pmb.chroot
from pmb.core import Chroot from pmb.core import Chroot
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import glob import glob
import json import json
import logging from pmb.helpers import logging
import os import os
import time import time

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
import time import time
import pmb.chroot import pmb.chroot

View file

@ -1,6 +1,6 @@
# Copyright 2023 Attila Szollosi # Copyright 2023 Attila Szollosi
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import pmb.chroot import pmb.chroot
import pmb.config.pmaports import pmb.config.pmaports

View file

@ -1,6 +1,6 @@
# Copyright 2023 Dylan Van Assche # Copyright 2023 Dylan Van Assche
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.pmaports import pmb.helpers.pmaports

View file

@ -1,6 +1,6 @@
# Copyright 2023 Mark Hargreaves, Luca Weiss # Copyright 2023 Mark Hargreaves, Luca Weiss
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import socket import socket
import time import time

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# mypy: disable-error-code="attr-defined" # mypy: disable-error-code="attr-defined"
import logging from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import re import re

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import collections import collections
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
import tarfile import tarfile
import pmb.chroot.apk import pmb.chroot.apk

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import pmb.config import pmb.config
# Get magic and mask from binfmt info file # Get magic and mask from binfmt info file

View file

@ -1,7 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from pmb.helpers import logging
from pathlib import Path from pathlib import Path
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pmb.helpers.run import pmb.helpers.run

View file

@ -1,6 +1,7 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from typing import Dict, List, Sequence, Set
from pmb.helpers import logging
import pmb.chroot import pmb.chroot
import pmb.chroot.apk import pmb.chroot.apk
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,7 +1,8 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import copy import copy
import logging from typing import Dict
from pmb.helpers import logging
import os import os
import pmb.config import pmb.config
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs

View file

@ -1,7 +1,7 @@
# Copyright 2023 Attila Szollosi # Copyright 2023 Attila Szollosi
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import glob from pathlib import Path
import logging from pmb.helpers import logging
import re import re
import os import os

View file

@ -1,6 +1,7 @@
# Copyright 2023 Pablo Castellano, Oliver Smith # Copyright 2023 Pablo Castellano, Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from typing import Sequence
from pmb.helpers import logging
import os import os
from pathlib import Path from pathlib import Path
import re import re

View file

@ -1,7 +1,8 @@
# Copyright 2023 Martijn Braam # Copyright 2023 Martijn Braam
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import os import os
import logging from typing import List
from pmb.helpers import logging
import shlex import shlex
from argparse import Namespace from argparse import Namespace

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pytest import pytest
import sys import sys

View file

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith # Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import logging from pmb.helpers import logging
import os import os
from pmb.core.types import PmbArgs from pmb.core.types import PmbArgs
import pytest import pytest