Skip to content

Commit

Permalink
Remove unnecessary _add_prefix call and simplify as much as possible. (
Browse files Browse the repository at this point in the history
…#846)

Co-authored-by: Bradley Dice <bdice@bradleydice.com>
  • Loading branch information
vyasr and bdice committed Nov 6, 2022
1 parent 7f2297d commit bd65753
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 18 deletions.
33 changes: 17 additions & 16 deletions signac/contrib/filterparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,23 +193,24 @@ def parse_filter_arg(args):
return query


def _add_prefix(prefix, filter):
"""Add desired prefix (e.g. 'sp.' or 'doc.') to a (possibly nested) filter."""
if filter:
for key, value in filter.items():
if key in ("$and", "$or"):
if isinstance(value, list) or isinstance(value, tuple):
yield key, [dict(_add_prefix(prefix, item)) for item in value]
else:
raise ValueError(
"The argument to a logical operator must be a list or a tuple!"
)
elif "." in key and key.split(".", 1)[0] in ("sp", "doc"):
yield key, value
elif key in ("sp", "doc"):
yield key, value
def _add_prefix(filter):
"""Add prefix "sp." to a (possibly nested) filter."""
for key, value in filter.items():
if key in ("$and", "$or"):
if isinstance(value, list) or isinstance(value, tuple):
yield key, [dict(_add_prefix(item)) for item in value]
else:
yield prefix + key, value
raise ValueError(
"The argument to a logical operator must be a list or a tuple!"
)
elif "." in key and key.split(".", 1)[0] in ("sp", "doc"):
yield key, value
elif key in ("sp", "doc"):
yield key, value
else:
# This line guarantees that all filter keys with no prefix
# default to state point key searches.
yield "sp." + key, value


def _root_keys(filter):
Expand Down
6 changes: 4 additions & 2 deletions signac/contrib/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ def _find_job_ids(self, filter=None):
"""
if not filter:
return list(self._job_dirs())
filter = dict(parse_filter(_add_prefix("sp.", filter)))
filter = dict(parse_filter(_add_prefix(filter)))
index = _SearchIndexer(
self._build_index(include_job_document="doc" in _root_keys(filter))
)
Expand Down Expand Up @@ -675,7 +675,9 @@ def find_jobs(self, filter=None):
If the filters are invalid.
"""
return JobsCursor(self, dict(parse_filter(_add_prefix("sp.", filter))))
if not filter:
filter = {}
return JobsCursor(self, dict(parse_filter(filter)))

def __iter__(self):
return iter(self.find_jobs())
Expand Down

0 comments on commit bd65753

Please sign in to comment.