From 23bedf0b57ac06fbee12af000f42c992d3227dd1 Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani Date: Mon, 1 Feb 2021 10:06:56 -0500 Subject: [PATCH] Clean up pickle implementation --- lightcards/display.py | 4 +--- lightcards/lightcards.py | 13 +++---------- lightcards/parse.py | 3 +-- lightcards/progress.py | 39 +++++++++++++++++++-------------------- 4 files changed, 24 insertions(+), 35 deletions(-) diff --git a/lightcards/display.py b/lightcards/display.py index a1a2c21..a2a97c3 100644 --- a/lightcards/display.py +++ b/lightcards/display.py @@ -24,9 +24,7 @@ class Display(): self.get_key() def leave(self): - progress.dump(self.obj, "status", self.stack) - progress.dump(self.stack, "stack", self.stack) - progress.dump(self.headers, "headers", self.stack) + progress.dump((self.obj, self.stack, self.headers), self.stack) sys.exit(0) def disp_bar(self): diff --git a/lightcards/lightcards.py b/lightcards/lightcards.py index ecd18d2..768ac68 100644 --- a/lightcards/lightcards.py +++ b/lightcards/lightcards.py @@ -25,6 +25,7 @@ def parse_args(): parser.add_argument("-p", "--purge", action='store_true', help="don't check cached info before starting") + # TODO: don't require input file when using -P parser.add_argument("-P", "--purge-all", action='store_true', help="don't check cached info before starting") @@ -52,20 +53,12 @@ def show(args, stack, headers): progress.purge_all() # Check for caches - ida = progress.dive("status", stack) + ida = progress.dive(stack) if ida: - idx = ida + (idx, stack, headers) = ida else: idx = Status() - stackb = progress.dive("stack", stack) - if stackb: - stack = stackb - - headerb = progress.dive("headers", stack) - if headerb: - headers = headerb - # Manipulate deck if args.flip: for x in stack: diff --git a/lightcards/parse.py b/lightcards/parse.py index 9b1820a..d70c4e9 100644 --- a/lightcards/parse.py +++ b/lightcards/parse.py @@ -11,8 +11,7 @@ from .deck import Card def md2html(file): """Use the markdown module to convert input to HTML""" try: - with open(file, "r", encoding="utf-8") as input_file: - return markdown.markdown(input_file.read(), extensions=['tables']) + return markdown.markdown(open(file, "r").read(), extensions=['tables']) except FileNotFoundError: print(f"lightcards: \"{file}\": No such file or directory") exit(1) diff --git a/lightcards/progress.py b/lightcards/progress.py index b721a49..665ae31 100644 --- a/lightcards/progress.py +++ b/lightcards/progress.py @@ -6,29 +6,29 @@ import os import pickle import shutil +global dired +dired = f"{os.path.expanduser('~')}/.cache/lightcards/" -def gen_hash(inp): +def name_gen(stra): hasher = hashlib.md5() - hasher.update(inp) - + hasher.update(str(stra).encode("utf-8")) return(hasher.hexdigest()) -def name_gen(stra): - return gen_hash(str(stra).encode("utf-8")) - - -def dump(obj, typer, stra): - dired = f"{os.path.expanduser('~')}/.cache/lightcards/{name_gen(stra)}/" +def make_dirs(dired): if not os.path.exists(dired): os.makedirs(dired) - pickle.dump(obj, open(f"{dired}/{typer}.p", "wb")) +def dump(obj, stra): + make_dirs(dired) -def dive(typer, stra): - file = f"{os.path.expanduser('~')}/.cache/lightcards/{name_gen(stra)}/" + \ - f"{typer}.p" + pickle.dump(obj, open(f"{dired}/{name_gen(stra)}.p", "wb")) + + +def dive(stra): + file = f"{dired}/{name_gen(stra)}.p" + make_dirs(dired) if os.path.exists(file): return pickle.load(open(file, "rb")) else: @@ -36,15 +36,14 @@ def dive(typer, stra): def purge(stra): - dired = f"{os.path.expanduser('~')}/.cache/lightcards/{name_gen(stra)}/" - shutil.rmtree(dired) + file = f"{dired}/{name_gen(stra)}/" + if os.path.exists(file): + shutil.rmtree(file) -def purge_all(): - dired = f"{os.path.expanduser('~')}/.cache/lightcards/" - shutil.rmtree(dired) -def main(): - pass +def purge_all(): + if os.path.exists(dired): + shutil.rmtree(dired) if __name__ == "__main__": -- 2.39.2