From a3db189e9ff35db0e3371198eafab11f142e366b Mon Sep 17 00:00:00 2001 From: rachmadaniHaryono Date: Sun, 10 Jan 2021 19:54:20 +0800 Subject: [PATCH] chg: dev: delete_rec - examples - parameter requirement check - TypeError when non integer parameter given --- buku | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/buku b/buku index b7ff693..727230b 100755 --- a/buku +++ b/buku @@ -1460,17 +1460,17 @@ class BukuDb: def delete_rec( self, - index: int, + index: int = None, low: int = 0, high: int = 0, is_range: bool = False, delay_commit: bool = False ) -> bool: - """Delete a single record or remove the table if index is None. + """Delete a single record or remove the table if index is 0. Parameters ---------- - index : int + index : int, optional DB index of deleted entry. low : int, optional Actual lower index of range. @@ -1478,8 +1478,7 @@ class BukuDb: Actual higher index of range. is_range : bool, optional A range is passed using low and high arguments. - An index is ignored if is_range is True (use dummy index). - Default is False. + An index is ignored if is_range is True. delay_commit : bool, optional True if record should not be committed to the DB, leaving commit responsibility to caller. Default is False. @@ -1493,7 +1492,54 @@ class BukuDb: ------- bool True on success, False on failure. + + Examples + -------- + >>> from tempfile import NamedTemporaryFile + >>> import buku + >>> sdb = buku.BukuDb(dbfile=NamedTemporaryFile().name) # single record database + >>> sdb.add_rec('https://example.com') + >>> sdb.delete_rec(1) + Index 1 deleted + True + + Delete record with default range. + + >>> sdb = buku.BukuDb(dbfile=NamedTemporaryFile().name) + >>> sdb.add_rec('https://example.com') + >>> sdb.delete_rec(is_range=True) + Remove ALL bookmarks? (y/n): y + All bookmarks deleted + True + + Running the function without any parameter will raise TypeError. + + >>> sdb = buku.BukuDb(dbfile=NamedTemporaryFile().name) + >>> sdb.add_rec('https://example.com') + >>> sdb.delete_rec() + TypeError: index, low, or high variable is not integer + + Negative number on `high` and `low` paramaters when is_range is True + will log error and return False + + >>> edb = buku.BukuDb(dbfile=NamedTemporaryFile().name) + >>> edb.delete_rec(low=-1, high=-1, is_range=True) + Negative range boundary + False + + Remove the table + + >>> sdb = buku.BukuDb(dbfile=NamedTemporaryFile().name) + >>> sdb.delete_rec(0) + Remove ALL bookmarks? (y/n): y + All bookmarks deleted + True """ + params = [low, high] + if not is_range: + params.append(index) + if any(map(lambda x: not isinstance(x, int), params)): + raise TypeError('index, low, or high variable is not integer') if is_range: # Delete a range of indices if low < 0 or high < 0: