From 9841e74fd88b98368ba76c466397c4febc788a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=B6nke?= Date: Tue, 10 Apr 2018 08:15:22 +0000 Subject: [PATCH 1/2] explicit send() arguments --- libzfs.pyx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/libzfs.pyx b/libzfs.pyx index f925ad6..5b41729 100644 --- a/libzfs.pyx +++ b/libzfs.pyx @@ -2401,19 +2401,16 @@ cdef class ZFSDataset(ZFSObject): for i in self.children: i.umount_recursive(force) - def send(self, fd, **kwargs): + def send(self, fd, fromname=None, toname=None, flags=set()): cdef int cfd = fd cdef int err cdef char *ctoname cdef char *cfromname = NULL cdef libzfs.sendflags_t cflags - toname = kwargs.get('toname') - fromname = kwargs.get('fromname') - flags = kwargs.get('flags') memset(&cflags, 0, cython.sizeof(libzfs.sendflags_t)) - if not toname: + if isinstance(toname, str) is False: raise ValueError('toname argument is required') ctoname = toname @@ -2631,9 +2628,7 @@ cdef class ZFSSnapshot(ZFSObject): self.root.write_history('zfs destroy', '-r' if recursive else '', self.name) - def send(self, fd, **kwargs): - fromname = kwargs.get('fromname') - flags = kwargs.get('flags') + def send(self, fd, fromname, flags=set()): return self.parent.send(fd, toname=self.snapshot_name, fromname=fromname, flags=flags) property snapshot_name: From f51637583241e69efe93aaace068ff2e385f8a15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=B6nke?= Date: Tue, 10 Apr 2018 10:59:57 +0000 Subject: [PATCH 2/2] make default flags argument a non-singleton addresses https://github.com/freenas/py-libzfs/pull/4#pullrequestreview-110777191 --- libzfs.pyx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libzfs.pyx b/libzfs.pyx index 5b41729..0902a88 100644 --- a/libzfs.pyx +++ b/libzfs.pyx @@ -2401,13 +2401,16 @@ cdef class ZFSDataset(ZFSObject): for i in self.children: i.umount_recursive(force) - def send(self, fd, fromname=None, toname=None, flags=set()): + def send(self, fd, fromname=None, toname=None, flags=None): cdef int cfd = fd cdef int err cdef char *ctoname cdef char *cfromname = NULL cdef libzfs.sendflags_t cflags + if isinstance(flags, set) is False: + flags = set() + memset(&cflags, 0, cython.sizeof(libzfs.sendflags_t)) if isinstance(toname, str) is False: @@ -2628,7 +2631,9 @@ cdef class ZFSSnapshot(ZFSObject): self.root.write_history('zfs destroy', '-r' if recursive else '', self.name) - def send(self, fd, fromname, flags=set()): + def send(self, fd, fromname, flags=None): + if isinstance(flags, set) is False: + flags = set() return self.parent.send(fd, toname=self.snapshot_name, fromname=fromname, flags=flags) property snapshot_name: