From 6d93764b9e093193783da94eced2a27b1c33b1aa Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 31 Jul 2018 19:05:14 +0200 Subject: o Ignore power flags too, they're not real components. o Fixing digikey product lookup. --- src/ee/ds/__init__.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) (limited to 'src/ee/ds/__init__.py') diff --git a/src/ee/ds/__init__.py b/src/ee/ds/__init__.py index e48cab6..adf741f 100644 --- a/src/ee/ds/__init__.py +++ b/src/ee/ds/__init__.py @@ -80,8 +80,38 @@ class Object(object): for k in other._ot.fields: self.set(k, other.get(k)) - def has(self, *keys: str): - return self.object_type.has(*keys) + def has_values(self, *keys: str) -> bool: + return all([len(value) > 0 for value in [self.get(key) for key in keys] if value is not None]) + + def values(self, *keys: str, strip: bool = False, required: bool = True) -> List[Optional[str]]: + """Looks up all values for all keys. + + If required=True, strip is also set to True + + + If strip is True, all values are stripped with str.strip(). None values are preserved. + + If required=True, all values has to have a len() > 0. If any fails the requirement, a list with only None values + is returned. + """ + + values = [] + + strip = True if required else strip + + for key in keys: + v = self.get(key) + + if strip: + v = v.strip() if v else v + + if required: + if v is None or len(v) == 0: + return [None] * len(keys) + + values.append(v) + + return values def get(self, key: str) -> Optional[str]: idx = self._ot.index_of(key) @@ -437,6 +467,6 @@ class LazyRwDataSet(object): def create_message(data_set: DataSet, message: str, level: str): - return data_set.create_object("message", "message-{}".format(str(hash(message)))). \ + return data_set.create_object("message", "message-{}".format(str(abs(hash(message))))). \ set("message", message). \ set("level", level) -- cgit v1.2.3