diff options
| author | jvoisin | 2023-01-28 15:57:20 +0000 |
|---|---|---|
| committer | jvoisin | 2023-01-28 15:57:20 +0000 |
| commit | 39fb254e019c920516bb317d4b48a8de7cac850e (patch) | |
| tree | 5a5397fe318b8b73f6ebfdb9d1d6c0b64bbda0a3 /libmat2/archive.py | |
| parent | 1f73a16ef36d1a8e771a0b3695818d18e095486b (diff) | |
Fix the type annotations
Diffstat (limited to 'libmat2/archive.py')
| -rw-r--r-- | libmat2/archive.py | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/libmat2/archive.py b/libmat2/archive.py index 25ff7f9..cbedcd2 100644 --- a/libmat2/archive.py +++ b/libmat2/archive.py | |||
| @@ -7,7 +7,7 @@ import tempfile | |||
| 7 | import os | 7 | import os |
| 8 | import logging | 8 | import logging |
| 9 | import shutil | 9 | import shutil |
| 10 | from typing import Pattern, Union, Any | 10 | from typing import Pattern, Union, Any, Set, Dict, List |
| 11 | 11 | ||
| 12 | from . import abstract, UnknownMemberPolicy, parser_factory | 12 | from . import abstract, UnknownMemberPolicy, parser_factory |
| 13 | 13 | ||
| @@ -44,16 +44,16 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 44 | def __init__(self, filename): | 44 | def __init__(self, filename): |
| 45 | super().__init__(filename) | 45 | super().__init__(filename) |
| 46 | # We ignore typing here because mypy is too stupid | 46 | # We ignore typing here because mypy is too stupid |
| 47 | self.archive_class = None # type: ignore | 47 | self.archive_class = None # type: ignore |
| 48 | self.member_class = None # type: ignore | 48 | self.member_class = None # type: ignore |
| 49 | 49 | ||
| 50 | # Those are the files that have a format that _isn't_ | 50 | # Those are the files that have a format that _isn't_ |
| 51 | # supported by mat2, but that we want to keep anyway. | 51 | # supported by mat2, but that we want to keep anyway. |
| 52 | self.files_to_keep = set() # type: set[Pattern] | 52 | self.files_to_keep = set() # type: Set[Pattern] |
| 53 | 53 | ||
| 54 | # Those are the files that we _do not_ want to keep, | 54 | # Those are the files that we _do not_ want to keep, |
| 55 | # no matter if they are supported or not. | 55 | # no matter if they are supported or not. |
| 56 | self.files_to_omit = set() # type: set[Pattern] | 56 | self.files_to_omit = set() # type: Set[Pattern] |
| 57 | 57 | ||
| 58 | # what should the parser do if it encounters an unknown file in | 58 | # what should the parser do if it encounters an unknown file in |
| 59 | # the archive? | 59 | # the archive? |
| @@ -72,7 +72,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 72 | # pylint: disable=unused-argument | 72 | # pylint: disable=unused-argument |
| 73 | return True # pragma: no cover | 73 | return True # pragma: no cover |
| 74 | 74 | ||
| 75 | def _specific_get_meta(self, full_path: str, file_path: str) -> dict[str, Any]: | 75 | def _specific_get_meta(self, full_path: str, file_path: str) -> Dict[str, Any]: |
| 76 | """ This method can be used to extract specific metadata | 76 | """ This method can be used to extract specific metadata |
| 77 | from files present in the archive.""" | 77 | from files present in the archive.""" |
| 78 | # pylint: disable=unused-argument | 78 | # pylint: disable=unused-argument |
| @@ -87,7 +87,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 87 | 87 | ||
| 88 | @staticmethod | 88 | @staticmethod |
| 89 | @abc.abstractmethod | 89 | @abc.abstractmethod |
| 90 | def _get_all_members(archive: ArchiveClass) -> list[ArchiveMember]: | 90 | def _get_all_members(archive: ArchiveClass) -> List[ArchiveMember]: |
| 91 | """Return all the members of the archive.""" | 91 | """Return all the members of the archive.""" |
| 92 | 92 | ||
| 93 | @staticmethod | 93 | @staticmethod |
| @@ -97,7 +97,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 97 | 97 | ||
| 98 | @staticmethod | 98 | @staticmethod |
| 99 | @abc.abstractmethod | 99 | @abc.abstractmethod |
| 100 | def _get_member_meta(member: ArchiveMember) -> dict[str, str]: | 100 | def _get_member_meta(member: ArchiveMember) -> Dict[str, str]: |
| 101 | """Return all the metadata of a given member.""" | 101 | """Return all the metadata of a given member.""" |
| 102 | 102 | ||
| 103 | @staticmethod | 103 | @staticmethod |
| @@ -128,8 +128,8 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 128 | # pylint: disable=unused-argument | 128 | # pylint: disable=unused-argument |
| 129 | return member | 129 | return member |
| 130 | 130 | ||
| 131 | def get_meta(self) -> dict[str, Union[str, dict]]: | 131 | def get_meta(self) -> dict[str, Union[str, Dict]]: |
| 132 | meta = dict() # type: dict[str, Union[str, dict]] | 132 | meta = dict() # type: Dict[str, Union[str, Dict]] |
| 133 | 133 | ||
| 134 | with self.archive_class(self.filename) as zin: | 134 | with self.archive_class(self.filename) as zin: |
| 135 | temp_folder = tempfile.mkdtemp() | 135 | temp_folder = tempfile.mkdtemp() |
| @@ -264,6 +264,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): | |||
| 264 | 264 | ||
| 265 | class TarParser(ArchiveBasedAbstractParser): | 265 | class TarParser(ArchiveBasedAbstractParser): |
| 266 | mimetypes = {'application/x-tar'} | 266 | mimetypes = {'application/x-tar'} |
| 267 | |||
| 267 | def __init__(self, filename): | 268 | def __init__(self, filename): |
| 268 | super().__init__(filename) | 269 | super().__init__(filename) |
| 269 | # yes, it's tarfile.open and not tarfile.TarFile, | 270 | # yes, it's tarfile.open and not tarfile.TarFile, |
| @@ -336,7 +337,7 @@ class TarParser(ArchiveBasedAbstractParser): | |||
| 336 | return member | 337 | return member |
| 337 | 338 | ||
| 338 | @staticmethod | 339 | @staticmethod |
| 339 | def _get_member_meta(member: ArchiveMember) -> dict[str, str]: | 340 | def _get_member_meta(member: ArchiveMember) -> Dict[str, str]: |
| 340 | assert isinstance(member, tarfile.TarInfo) # please mypy | 341 | assert isinstance(member, tarfile.TarInfo) # please mypy |
| 341 | metadata = {} | 342 | metadata = {} |
| 342 | if member.mtime != 0: | 343 | if member.mtime != 0: |
| @@ -358,7 +359,7 @@ class TarParser(ArchiveBasedAbstractParser): | |||
| 358 | archive.add(full_path, member.name, filter=TarParser._clean_member) # type: ignore | 359 | archive.add(full_path, member.name, filter=TarParser._clean_member) # type: ignore |
| 359 | 360 | ||
| 360 | @staticmethod | 361 | @staticmethod |
| 361 | def _get_all_members(archive: ArchiveClass) -> list[ArchiveMember]: | 362 | def _get_all_members(archive: ArchiveClass) -> List[ArchiveMember]: |
| 362 | assert isinstance(archive, tarfile.TarFile) # please mypy | 363 | assert isinstance(archive, tarfile.TarFile) # please mypy |
| 363 | return archive.getmembers() # type: ignore | 364 | return archive.getmembers() # type: ignore |
| 364 | 365 | ||
| @@ -391,7 +392,8 @@ class TarXzParser(TarParser): | |||
| 391 | 392 | ||
| 392 | class ZipParser(ArchiveBasedAbstractParser): | 393 | class ZipParser(ArchiveBasedAbstractParser): |
| 393 | mimetypes = {'application/zip'} | 394 | mimetypes = {'application/zip'} |
| 394 | def __init__(self, filename): | 395 | |
| 396 | def __init__(self, filename: str): | ||
| 395 | super().__init__(filename) | 397 | super().__init__(filename) |
| 396 | self.archive_class = zipfile.ZipFile | 398 | self.archive_class = zipfile.ZipFile |
| 397 | self.member_class = zipfile.ZipInfo | 399 | self.member_class = zipfile.ZipInfo |
| @@ -412,7 +414,7 @@ class ZipParser(ArchiveBasedAbstractParser): | |||
| 412 | return member | 414 | return member |
| 413 | 415 | ||
| 414 | @staticmethod | 416 | @staticmethod |
| 415 | def _get_member_meta(member: ArchiveMember) -> dict[str, str]: | 417 | def _get_member_meta(member: ArchiveMember) -> Dict[str, str]: |
| 416 | assert isinstance(member, zipfile.ZipInfo) # please mypy | 418 | assert isinstance(member, zipfile.ZipInfo) # please mypy |
| 417 | metadata = {} | 419 | metadata = {} |
| 418 | if member.create_system == 3: # this is Linux | 420 | if member.create_system == 3: # this is Linux |
| @@ -439,7 +441,7 @@ class ZipParser(ArchiveBasedAbstractParser): | |||
| 439 | compress_type=member.compress_type) | 441 | compress_type=member.compress_type) |
| 440 | 442 | ||
| 441 | @staticmethod | 443 | @staticmethod |
| 442 | def _get_all_members(archive: ArchiveClass) -> list[ArchiveMember]: | 444 | def _get_all_members(archive: ArchiveClass) -> List[ArchiveMember]: |
| 443 | assert isinstance(archive, zipfile.ZipFile) # please mypy | 445 | assert isinstance(archive, zipfile.ZipFile) # please mypy |
| 444 | return archive.infolist() # type: ignore | 446 | return archive.infolist() # type: ignore |
| 445 | 447 | ||
