Skip to content

Commit 68cf3b0

Browse files
committed
complete typing for destroy functions
This is an addendum to #157 (Resource is an abstract class, be clear about it)
1 parent 169d475 commit 68cf3b0

File tree

5 files changed

+22
-10
lines changed

5 files changed

+22
-10
lines changed

iocage/cli/destroy.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@
2323
# POSSIBILITY OF SUCH DAMAGE.
2424
"""stop module for the cli."""
2525
import click
26+
import typing
2627

28+
import iocage.lib.Filter
2729
import iocage.lib.Jail
2830
import iocage.lib.Jails
29-
import iocage.lib.Releases
3031
import iocage.lib.Logger
32+
import iocage.lib.Releases
3133
import iocage.lib.Resource
3234

3335
__rootcmd__ = True
@@ -45,18 +47,24 @@
4547
help="Destroy the download dataset of the specified RELEASE as"
4648
" well.")
4749
@click.argument("filters", nargs=-1)
48-
def cli(ctx, force, release, recursive, download, filters):
50+
def cli(ctx,
51+
force: bool=False,
52+
release: bool=False,
53+
recursive: bool=False,
54+
download: bool=False,
55+
filters: typing.Optional[iocage.lib.Filter.Terms]=None) -> None:
4956
"""
5057
Looks for the jail supplied and passes the uuid, path and configuration
5158
location to stop_jail.
5259
"""
5360
logger = ctx.parent.logger
5461
host = iocage.lib.Host.Host(logger=logger)
5562

56-
if len(filters) == 0:
63+
if filters is None or len(filters) == 0:
5764
logger.error("No filter specified - cannot select a target to delete")
5865
exit(1)
5966

67+
resources_class: typing.Type[iocage.lib.Resource.Resource]
6068
if release is True:
6169
resources_class = iocage.lib.Releases.ReleasesGenerator
6270
else:

iocage/lib/Jails.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2323
# POSSIBILITY OF SUCH DAMAGE.
2424
import libzfs
25+
import typing
2526

2627
import iocage.lib.Jail
2728
import iocage.lib.Filter
@@ -44,7 +45,7 @@ class JailsGenerator(iocage.lib.Resource.ListableResource):
4445

4546
def __init__(
4647
self,
47-
filters: iocage.lib.Filter.Terms=None,
48+
filters: typing.Optional[iocage.lib.Filter.Terms]=None,
4849
host=None,
4950
logger=None,
5051
zfs=None

iocage/lib/Release.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ def _check_tar_info(self, tar_info, asset_name):
941941
def __str__(self):
942942
return self.name
943943

944-
def destroy(self):
944+
def destroy(self, force: bool=False) -> None:
945945
self.storage.delete_dataset_recursive(self.dataset)
946946

947947

iocage/lib/Releases.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@
2323
# POSSIBILITY OF SUCH DAMAGE.
2424
import iocage.lib.Release
2525
import iocage.lib.Resource
26+
import iocage.lib.Filter
2627
import iocage.lib.helpers
2728

29+
import typing
30+
2831
# MyPy
2932
import libzfs
3033

@@ -35,7 +38,7 @@ class ReleasesGenerator(iocage.lib.Resource.ListableResource):
3538

3639
def __init__(
3740
self,
38-
filters: 'iocage.lib.Filter.Terms'=None,
41+
filters: typing.Optional[iocage.lib.Filter.Terms]=None,
3942
host=None,
4043
zfs=None,
4144
logger=None

iocage/lib/Resource.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def __init__(
126126
self.dataset = dataset
127127

128128
@abc.abstractmethod
129-
def destroy(self):
129+
def destroy(self, force: bool=False) -> None:
130130
pass
131131

132132
@property
@@ -326,7 +326,7 @@ def __init__(
326326
logger=logger
327327
)
328328

329-
def destroy(self):
329+
def destroy(self, force: bool=False) -> None:
330330
raise NotImplementedError("destroy unimplemented for DefaultResource")
331331

332332
def save(self) -> None:
@@ -357,12 +357,12 @@ def __init__(
357357

358358
self.filters = filters
359359

360-
def destroy(self):
360+
def destroy(self, force: bool=False) -> None:
361361
raise NotImplementedError("destroy unimplemented for ListableResource")
362362

363363
def __iter__(
364364
self
365-
) -> typing.Generator['iocage.lib.Resource.Resource', None, None]:
365+
) -> typing.Generator[Resource, None, None]:
366366

367367
for child_dataset in self.dataset.children:
368368

0 commit comments

Comments
 (0)