Skip to content

Commit 556cc79

Browse files
igalicgronke
authored andcommitted
complete typing for destroy functions
This patch is an addendum to #157 (Resource is an abstract class, be clear about it)
1 parent cc14958 commit 556cc79

File tree

4 files changed

+25
-23
lines changed

4 files changed

+25
-23
lines changed

iocage/cli/destroy.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ def cli(ctx,
6464
logger.error("No filter specified - cannot select a target to delete")
6565
exit(1)
6666

67-
resources_class: typing.Type[iocage.lib.Resource.Resource]
67+
resources_class: typing.Union[
68+
typing.Type[iocage.lib.Releases.ReleasesGenerator],
69+
typing.Type[iocage.lib.Jails.JailsGenerator]
70+
]
6871
if release is True:
6972
resources_class = iocage.lib.Releases.ReleasesGenerator
7073
else:

iocage/cli/list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def _print_table(
135135
],
136136
columns: list,
137137
show_header: bool,
138-
sort_key: str=None
138+
sort_key: typing.Optional[str]=None
139139
) -> None:
140140

141141
table = texttable.Texttable(max_width=0)

iocage/lib/Releases.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def _create_resource_instance(
7676
dataset: libzfs.ZFSDataset,
7777
*args,
7878
**kwargs
79-
) -> 'iocage.lib.Release.ReleaseGenerator':
79+
) -> iocage.lib.Release.ReleaseGenerator:
8080

8181
kwargs["name"] = self._get_asset_name_from_dataset(dataset)
8282
kwargs["logger"] = self.logger

iocage/lib/Resource.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,10 @@ def __init__(
9292
self,
9393
dataset: typing.Optional[libzfs.ZFSDataset]=None,
9494
dataset_name: typing.Optional[str]=None,
95-
config_type: typing.Optional[str]="auto", # auto, json, zfs, ucl
96-
config_file: str=None, # 'config.json', 'config', etc
97-
logger: 'iocage.lib.Logger.Logger'=None,
98-
zfs: 'iocage.lib.ZFS.ZFS'=None
95+
config_type: str="auto", # auto, json, zfs, ucl
96+
config_file: typing.Optional[str]=None, # 'config.json', 'config', etc
97+
logger: typing.Optional[iocage.lib.Logger.Logger]=None,
98+
zfs: typing.Optional[iocage.lib.ZFS.ZFS]=None
9999
) -> None:
100100

101101
self.logger = iocage.lib.helpers.init_logger(self, logger)
@@ -310,9 +310,9 @@ class DefaultResource(Resource):
310310

311311
def __init__(
312312
self,
313-
dataset: libzfs.ZFSDataset=None,
314-
logger: 'iocage.lib.Logger.Logger'=None,
315-
zfs: 'iocage.lib.ZFS.ZFS'=None
313+
dataset: typing.Optional[libzfs.ZFSDataset]=None,
314+
logger: typing.Optional[iocage.lib.Logger.Logger]=None,
315+
zfs: typing.Optional[iocage.lib.ZFS.ZFS]=None
316316
) -> None:
317317

318318
Resource.__init__(
@@ -335,21 +335,20 @@ def save(self) -> None:
335335

336336
class ListableResource(list, Resource):
337337

338-
_filters: 'iocage.lib.Filter.Terms' = None
338+
_filters: typing.Optional[iocage.lib.Filter.Terms] = None
339339

340340
def __init__(
341341
self,
342-
dataset: libzfs.ZFSDataset=None,
343-
filters: 'iocage.lib.Filter.Terms'=None,
344-
logger: 'iocage.lib.Logger.Logger'=None,
345-
zfs: 'iocage.lib.ZFS.ZFS'=None,
342+
dataset: typing.Optional[libzfs.ZFSDataset]=None,
343+
filters: typing.Optional[iocage.lib.Filter.Terms]=None,
344+
logger: typing.Optional[iocage.lib.Logger.Logger]=None,
345+
zfs: typing.Optional[iocage.lib.ZFS.ZFS]=None,
346346
) -> None:
347347

348348
list.__init__(self, [])
349349

350350
Resource.__init__(
351351
self,
352-
config_type=None,
353352
dataset=dataset,
354353
logger=logger,
355354
zfs=zfs
@@ -367,13 +366,15 @@ def __iter__(
367366
for child_dataset in self.dataset.children:
368367

369368
name = self._get_asset_name_from_dataset(child_dataset)
370-
if self._filters.match_key("name", name) is not True:
369+
if self._filters is not None and \
370+
self._filters.match_key("name", name) is not True:
371371
# Skip all jails that do not even match the name
372372
continue
373373

374374
# ToDo: Do not load jail if filters do not require to
375375
resource = self._get_resource_from_dataset(child_dataset)
376-
if self._filters.match_resource(resource):
376+
if self._filters is not None and \
377+
self._filters.match_resource(resource):
377378
yield resource
378379

379380
def _get_asset_name_from_dataset(
@@ -403,21 +404,19 @@ def filters(self):
403404
@filters.setter
404405
def filters(
405406
self,
406-
value: typing.Iterable[typing.Union['iocage.lib.Filter.Term', str]]
407+
value: typing.Iterable[typing.Union[iocage.lib.Filter.Term, str]]
407408
):
408409

409410
if isinstance(value, iocage.lib.Filter.Terms):
410411
self._filters = value
411412
else:
412413
self._filters = iocage.lib.Filter.Terms(value)
413414

415+
@abc.abstractmethod
414416
def _create_resource_instance(
415417
self,
416418
dataset: libzfs.ZFSDataset,
417419
*args,
418420
**kwargs
419421
):
420-
421-
raise NotImplementedError(
422-
"This needs to be implemented by the inheriting class"
423-
)
422+
pass

0 commit comments

Comments
 (0)