From 76b859c62938ede6e4098cfcec1b5fa5909251b4 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 10 Jul 2021 14:21:56 +0200 Subject: [PATCH] libs.faults: add ensure_fault_or_none() and join_faults() --- libs/faults.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/libs/faults.py b/libs/faults.py index 2995249..ad3735c 100644 --- a/libs/faults.py +++ b/libs/faults.py @@ -1,6 +1,39 @@ from json import loads, dumps from bundlewrap.metadata import metadata_to_json +from bundlewrap.utils import Fault + def resolve_faults(dictionary: dict) -> dict: return loads(metadata_to_json(dictionary)) + + +def ensure_fault_or_none(maybe_fault): + if maybe_fault is None or isinstance(maybe_fault, Fault): + return maybe_fault + + return Fault(maybe_fault, lambda f: f, f=maybe_fault) + + +def join_faults(faults, by=' '): + result = [] + id_list = [] + + for item in faults: + result.append(ensure_fault_or_none(item)) + + if isinstance(item, Fault): + id_list += item.id_list + else: + id_list.append(item) + + id_list += [ + 'joined_by', + by, + ] + + return Fault( + id_list, + lambda o: by.join([i.value for i in o]), + o=result, + )