Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove --doc-filter option from CLI. #795

Merged
merged 4 commits into from
Aug 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ Removed
- The ``--workspace`` option for the command line ``job`` subcommand (#752).
- The ability to call ``Project.workspace``, it is strictly a property now (#752).
- ``ProjectSchema.__call__``, ``ProjectSchema.detect`` (#752).
- The ``--doc-filter`` option for several command line subcommands (#613, #795).

Version 1
=========
Expand Down
84 changes: 15 additions & 69 deletions signac/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from . import get_project, init_project
from .common import config
from .common.configobj import Section, flatten_errors
from .contrib.filterparse import _add_prefix, parse_filter_arg
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My guess is that _add_prefix can be removed entirely at this point. I can verify that and create a separate issue for that though.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from .contrib.filterparse import parse_filter_arg
from .contrib.import_export import _SchemaPathEvaluationError, export_jobs
from .contrib.utility import _add_verbosity_argument, _print_err, _query_yes_no
from .core.utility import _safe_relpath
Expand Down Expand Up @@ -135,7 +135,7 @@ def _open_job_by_id(project, job_id):

def find_with_filter_or_none(args):
"""Return a filtered subset of jobs or None."""
if args.job_id or args.filter or args.doc_filter:
if args.job_id or args.filter:
return find_with_filter(args)
else:
return None
Expand All @@ -144,15 +144,13 @@ def find_with_filter_or_none(args):
def find_with_filter(args):
"""Return a filtered subset of jobs."""
if getattr(args, "job_id", None):
if args.filter or args.doc_filter:
if args.filter:
raise ValueError("Can't provide both 'job-id' and filter arguments!")
else:
return args.job_id

project = get_project()
filter_ = parse_filter_arg(args.filter) or {}
if args.doc_filter:
filter_.update(_add_prefix("doc.", parse_filter_arg(args.doc_filter)))
if not filter_:
filter_ = None
return project._find_job_ids(filter=filter_)
Expand All @@ -168,7 +166,7 @@ def main_job(args):
try:
statepoint = json.loads(sp)
except ValueError:
_print_err(f"Error while reading statepoint: '{sp}'")
_print_err(f"Error while reading state point: '{sp}'")
raise
job = project.open_job(statepoint)
if args.create:
Expand Down Expand Up @@ -903,7 +901,7 @@ def main():
nargs="?",
default="-",
type=str,
help="The job's statepoint in JSON format. Omit this argument to read from STDIN.",
help="The job's state point in JSON format. Omit this argument to read from STDIN.",
)
parser_job.add_argument(
"-w",
Expand All @@ -927,7 +925,7 @@ def main():

parser_statepoint = subparsers.add_parser(
"statepoint",
description="Print the statepoint(s) corresponding to one or more job ids.",
description="Print the state point(s) corresponding to one or more job ids.",
)
parser_statepoint.add_argument(
"job_id",
Expand Down Expand Up @@ -993,14 +991,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Limit the diff to jobs matching this state point filter.",
)
parser_diff.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Show documents of jobs matching this document filter.",
help="Limit the diff to jobs matching the filter.",
)
parser_diff.set_defaults(func=main_diff)

Expand Down Expand Up @@ -1043,14 +1034,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Show documents of jobs matching this state point filter.",
)
parser_document.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Show documents of job matching this document filter.",
help="Show documents of jobs matching the filter.",
)
parser_document.set_defaults(func=main_document)

Expand Down Expand Up @@ -1121,10 +1105,7 @@ def main():
"filter",
type=str,
nargs="*",
help="A JSON encoded state point filter (key-value pairs).",
)
parser_find.add_argument(
"-d", "--doc-filter", type=str, nargs="+", help="A document filter."
help="Find jobs matching the filter.",
)
parser_find.add_argument(
"-s",
Expand Down Expand Up @@ -1207,14 +1188,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Limit the view to jobs matching this state point filter.",
)
selection_group.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Limit the view to jobs matching this document filter.",
help="Limit the view to jobs matching the filter.",
)
selection_group.add_argument(
"-j",
Expand Down Expand Up @@ -1260,14 +1234,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Detect schema only for jobs that match the state point filter.",
)
selection_group.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Detect schema only for jobs that match the document filter.",
help="Detect schema only for jobs matching the filter.",
)
selection_group.add_argument(
"-j",
Expand Down Expand Up @@ -1297,21 +1264,14 @@ def main():
"--filter",
type=str,
nargs="+",
help="Reduce selection to jobs that match the given filter.",
)
selection_group.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Reduce selection to jobs that match the given document filter.",
help="Reduce selection to jobs matching the filter.",
)
selection_group.add_argument(
"-j",
"--job-id",
type=str,
nargs="+",
help="Reduce selection to jobs that match the given job ids.",
help="Reduce selection to jobs matching the given job ids.",
)
parser_shell.set_defaults(func=main_shell)

Expand Down Expand Up @@ -1479,14 +1439,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Only synchronize jobs that match the state point filter.",
)
selection_group.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Only synchronize jobs that match the document filter.",
help="Only synchronize jobs matching the filter.",
)
selection_group.add_argument(
"-j",
Expand Down Expand Up @@ -1562,14 +1515,7 @@ def main():
"--filter",
type=str,
nargs="+",
help="Limit the jobs to export to those matching the state point filter.",
)
selection_group.add_argument(
"-d",
"--doc-filter",
type=str,
nargs="+",
help="Limit the jobs to export to those matching this document filter.",
help="Limit the jobs to export to those matching the filter.",
)
selection_group.add_argument(
"-j",
Expand Down
10 changes: 0 additions & 10 deletions tests/test_shell.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ def test_view_incomplete_path_spec(self):
)
assert "duplicate paths" in err

@pytest.mark.filterwarnings("ignore:The doc_filter argument is deprecated")
def test_find(self):
self.call("python -m signac init".split())
project = signac.Project()
Expand Down Expand Up @@ -267,15 +266,6 @@ def test_find(self):
job.document["a"] = job.statepoint()["a"]
job.document["b"] = job.statepoint()["a"] + 1

for i in range(3):
assert (
self.call(
"python -m signac find --doc-filter".split()
+ ['{"a": ' + str(i) + "}"]
).strip()
== next(iter(project.find_jobs({"a": i}))).id
)

for i in range(3):
assert (
self.call(
Expand Down