From e2f359f814805285e7ece3c9edba2cc93c958540 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Tue, 11 Jun 2024 22:40:29 +0200 Subject: improve typing linuxnamespaces/__init__.py: * linuxnamespaces.filedescriptor only exports FileDescriptor. By importing *, we re-export it implicitly. linuxnamespaces/atlocation.py: * PathLike should be parameterized and we no longer allow bytes there. linuxnamespaces/tarutils.py: * Resolve dict vs Mapping. tests/test_simple.py: * Establish expected type to mypy. examples/unschroot.py: * pidfd is first an int and later a FileDescriptor, but we always use it as int. * Also tell mypy that we cannot get NULL from waitid. --- linuxnamespaces/__init__.py | 2 +- linuxnamespaces/atlocation.py | 2 +- linuxnamespaces/tarutils.py | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'linuxnamespaces') diff --git a/linuxnamespaces/__init__.py b/linuxnamespaces/__init__.py index 65dfc8d..5a9ef39 100644 --- a/linuxnamespaces/__init__.py +++ b/linuxnamespaces/__init__.py @@ -16,7 +16,7 @@ import stat import subprocess import typing -from .filedescriptor import FileDescriptor +from .filedescriptor import * from .atlocation import * from .syscalls import * diff --git a/linuxnamespaces/atlocation.py b/linuxnamespaces/atlocation.py index 8a38650..20d402a 100644 --- a/linuxnamespaces/atlocation.py +++ b/linuxnamespaces/atlocation.py @@ -21,7 +21,7 @@ from .filedescriptor import FileDescriptor AT_FDCWD = FileDescriptor(-100) -PathConvertible = typing.Union[str, os.PathLike] +PathConvertible = typing.Union[str, os.PathLike[str]] class AtFlags(enum.IntFlag): diff --git a/linuxnamespaces/tarutils.py b/linuxnamespaces/tarutils.py index facb537..6285d5a 100644 --- a/linuxnamespaces/tarutils.py +++ b/linuxnamespaces/tarutils.py @@ -19,7 +19,11 @@ TarPath = str | bytes | os.PathLike[str] | os.PathLike[bytes] class ZstdTarFile(tarfile.TarFile): """Subclass of tarfile.TarFile that can read zstd compressed archives.""" - OPEN_METH = {"zst": "zstopen"} | tarfile.TarFile.OPEN_METH + # mypy types OPEN_METH as Mapping rather than dict while it really is a + # dict. Hence, it complains that there is no __or__ for dict and Mapping. + OPEN_METH = { + "zst": "zstopen", + } | tarfile.TarFile.OPEN_METH # type: ignore[operator] @classmethod def zstopen( -- cgit v1.2.3