From cec7b11b3207c70415445e06546ac17fefb046be Mon Sep 17 00:00:00 2001 From: Hardik Ojha <44747868+kidrahahjo@users.noreply.github.com> Date: Wed, 13 Jan 2021 17:50:24 +0530 Subject: [PATCH 1/6] Remove the use of argument --- flow/project.py | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/flow/project.py b/flow/project.py index 429c1ed13..5f3a62ca9 100644 --- a/flow/project.py +++ b/flow/project.py @@ -2643,7 +2643,6 @@ def print_status( file=None, err=None, ignore_errors=False, - no_parallelize=False, template=None, profile=False, eligible_jobs_max_lines=None, @@ -2697,8 +2696,6 @@ def print_status( output_format : str Status output format, supports: 'terminal' (default), 'markdown' or 'html'. - no_parallelize : bool - Disable parallelization. (Default value = False) Returns ------- @@ -2720,19 +2717,7 @@ def print_status( "eligible_jobs_max_lines" ) - if no_parallelize: - print( - "WARNING: " - "The no_parallelize argument is deprecated as of 0.10 " - "and will be removed in 0.12. " - "Instead, set the status_parallelization configuration value to 'none'. " - "In order to do this from the CLI, execute " - "`signac config set flow.status_parallelization 'none'`\n", - file=sys.stderr, - ) - status_parallelization = "none" - else: - status_parallelization = self.config["flow"]["status_parallelization"] + status_parallelization = self.config["flow"]["status_parallelization"] # initialize jinja2 template environment and necessary filters template_environment = self._template_environment() @@ -4282,14 +4267,6 @@ def _add_print_status_args(cls, parser): action="store_true", help="Ignore errors that might occur when querying the scheduler.", ) - parser.add_argument( - "--no-parallelize", - action="store_true", - help="Do not parallelize the status determination. " - "The '--no-parallelize' argument is deprecated. " - "Please use the status_parallelization configuration " - "instead (see above).", - ) view_group.add_argument( "-o", "--output-format", From db1ca865e01311dde151b9fa5c765b57159d9100 Mon Sep 17 00:00:00 2001 From: Hardik Ojha <44747868+kidrahahjo@users.noreply.github.com> Date: Wed, 13 Jan 2021 19:35:47 +0530 Subject: [PATCH 2/6] Remove the use of env attribute while submit --- flow/project.py | 28 ++++------------------- tests/generate_template_reference_data.py | 3 +-- tests/test_templates.py | 4 ++-- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/flow/project.py b/flow/project.py index 5f3a62ca9..44d0674e3 100644 --- a/flow/project.py +++ b/flow/project.py @@ -3722,7 +3722,6 @@ def _submit_operations( self, operations, _id=None, - env=None, parallel=False, flags=None, force=False, @@ -3768,14 +3767,6 @@ def _submit_operations( """ if _id is None: _id = self._store_bundled(operations) - if env is None: - env = self._environment - else: - warnings.warn( - "The env argument is deprecated as of 0.10 and will be removed in 0.12. " - "Instead, set the environment when constructing a FlowProject.", - DeprecationWarning, - ) print(f"Submitting cluster job '{_id}':", file=sys.stderr) @@ -3789,7 +3780,7 @@ def _msg(group): operations=map(_msg, operations), template=template, show_template_help=show_template_help, - env=env, + env=self._environment, parallel=parallel, force=force, **kwargs, @@ -3826,14 +3817,15 @@ def _msg(group): print(script) else: - return env.submit(_id=_id, script=script, flags=flags, **kwargs) + return self._environment.submit( + _id=_id, script=script, flags=flags, **kwargs + ) @deprecated(deprecated_in="0.11", removed_in="0.13", current_version=__version__) def submit_operations( self, operations, _id=None, - env=None, parallel=False, flags=None, force=False, @@ -3880,7 +3872,6 @@ def submit_operations( return self._submit_operations( operations, _id, - env, parallel, flags, force, @@ -3899,7 +3890,6 @@ def submit( parallel=False, force=False, walltime=None, - env=None, ignore_conditions=IgnoreConditions.NONE, ignore_conditions_on_execution=IgnoreConditions.NONE, **kwargs, @@ -3949,14 +3939,7 @@ def submit( "The 'names' argument must be a sequence of strings, however " f"a single string was provided: {names}." ) - if env is None: - env = self._environment - else: - warnings.warn( - "The env argument is deprecated as of 0.10 and will be removed in 0.12. " - "Instead, set the environment when constructing a FlowProject.", - DeprecationWarning, - ) + if walltime is not None: try: walltime = datetime.timedelta(hours=walltime) @@ -3995,7 +3978,6 @@ def submit( for bundle in _make_bundles(operations, bundle_size): status = self._submit_operations( operations=bundle, - env=env, parallel=parallel, force=force, walltime=walltime, diff --git a/tests/generate_template_reference_data.py b/tests/generate_template_reference_data.py index 3b10cd0f8..cdd1140a2 100755 --- a/tests/generate_template_reference_data.py +++ b/tests/generate_template_reference_data.py @@ -183,6 +183,7 @@ def main(args): with job: kwargs = job.statepoint() env = get_nested_attr(flow, kwargs["environment"]) + fp._environment = env parameters = kwargs["parameters"] if "bundle" in parameters: bundle = parameters.pop("bundle") @@ -191,7 +192,6 @@ def main(args): with redirect_stdout(tmp_out): try: fp.submit( - env=env, jobs=[job], names=bundle, pretend=True, @@ -224,7 +224,6 @@ def main(args): with redirect_stdout(tmp_out): try: fp.submit( - env=env, jobs=[job], names=[op], pretend=True, diff --git a/tests/test_templates.py b/tests/test_templates.py index ee7385217..c825ea4f8 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -37,6 +37,8 @@ def test_env(env, monkeypatch): # Must import the data into the project. with signac.TemporaryProject(name=gen.PROJECT_NAME) as p: fp = gen.get_masked_flowproject(p) + # Set the environment attribute of the FlowProject to current environment + fp._environment = env # Here we set the appropriate executable for all the operations. This # is necessary as otherwise the default executable between submitting # and running could look different depending on the environment. @@ -62,7 +64,6 @@ def test_env(env, monkeypatch): with redirect_stderr(devnull): with redirect_stdout(tmp_out): fp.submit( - env=env, jobs=[job], names=bundle, pretend=True, @@ -93,7 +94,6 @@ def test_env(env, monkeypatch): with redirect_stderr(devnull): with redirect_stdout(tmp_out): fp.submit( - env=env, jobs=[job], names=[op], pretend=True, From 4e0ae52d707a6ed5fc118692b0d03d7346b8339c Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 15 Jan 2021 16:33:21 -0600 Subject: [PATCH 3/6] Pass environment as keyword argument. --- tests/generate_template_reference_data.py | 4 ++-- tests/test_templates.py | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/generate_template_reference_data.py b/tests/generate_template_reference_data.py index cdd1140a2..8dfd4262a 100755 --- a/tests/generate_template_reference_data.py +++ b/tests/generate_template_reference_data.py @@ -143,12 +143,12 @@ def _store_bundled(self, operations): return bid -def get_masked_flowproject(p): +def get_masked_flowproject(p, **kwargs): """Mock environment-dependent attributes and functions. Need to mock sys.executable before the FlowProject is instantiated, and then modify the root_directory and project_dir elements after creation.""" sys.executable = "/usr/local/bin/python" - fp = TestProject.get_project(root=p.root_directory()) + fp = TestProject.get_project(root=p.root_directory(), **kwargs) fp._entrypoint.setdefault("path", "generate_template_reference_data.py") fp.root_directory = lambda: PROJECT_DIRECTORY fp.config.project_dir = PROJECT_DIRECTORY diff --git a/tests/test_templates.py b/tests/test_templates.py index c825ea4f8..1750c5ce5 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -36,9 +36,7 @@ def test_env(env, monkeypatch): # Must import the data into the project. with signac.TemporaryProject(name=gen.PROJECT_NAME) as p: - fp = gen.get_masked_flowproject(p) - # Set the environment attribute of the FlowProject to current environment - fp._environment = env + fp = gen.get_masked_flowproject(p, environment=env) # Here we set the appropriate executable for all the operations. This # is necessary as otherwise the default executable between submitting # and running could look different depending on the environment. From c51648e55598999d85e11aadddacc4b01f1bfcb8 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 15 Jan 2021 17:46:44 -0600 Subject: [PATCH 4/6] Remove env argument in a few missed places. --- flow/project.py | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/flow/project.py b/flow/project.py index 44d0674e3..278415a7e 100644 --- a/flow/project.py +++ b/flow/project.py @@ -3691,14 +3691,14 @@ def script( return self._script(operations, parallel, template, show_template_help) def _generate_submit_script( - self, _id, operations, template, show_template_help, env, **kwargs + self, _id, operations, template, show_template_help, **kwargs ): """Generate submission script to submit the execution of operations to a scheduler.""" if template is None: - template = env.template + template = self._environment.template assert _id is not None - template_environment = self._template_environment(env) + template_environment = self._template_environment(self._environment) template = template_environment.get_template(template) context = self._get_standard_template_context() # The flow 'script.sh' file simply extends the base script @@ -3707,10 +3707,10 @@ def _generate_submit_script( # with signac-flow unless additional environment information is # detected. - logger.info("Use environment '%s'.", env) - logger.info("Set 'base_script=%s'.", env.template) - context["base_script"] = env.template - context["environment"] = env + logger.info("Set 'base_script=%s'.", self._environment.template) + logger.info("Use environment '%s'.", self._environment) + context["base_script"] = self._environment.template + context["environment"] = self._environment context["id"] = _id context["operations"] = list(operations) context.update(kwargs) @@ -3738,9 +3738,6 @@ def _submit_operations( The operations to submit. _id : str The _id to be used for this submission. (Default value = None) - env : :class:`~.ComputeEnvironment` - The environment to use for submission. Uses the environment defined - by the :class:`~.FlowProject` if None (Default value = None). parallel : bool Execute all bundled operations in parallel. (Default value = False) flags : list @@ -3780,7 +3777,6 @@ def _msg(group): operations=map(_msg, operations), template=template, show_template_help=show_template_help, - env=self._environment, parallel=parallel, force=force, **kwargs, @@ -3842,9 +3838,6 @@ def submit_operations( The operations to submit. _id : str The _id to be used for this submission. (Default value = None) - env : :class:`~.ComputeEnvironment` - The environment to use for submission. Uses the environment defined - by the :class:`~.FlowProject` if None (Default value = None). parallel : bool Execute all bundled operations in parallel. (Default value = False) flags : list @@ -3924,9 +3917,6 @@ def submit( Specify if preconditions and/or postconditions are to be ignored when determining eligibility after submitting. The default is :class:`IgnoreConditions.NONE`. - env : :class:`~.ComputeEnvironment` - The environment to use for submission. Uses the environment defined - by the :class:`~.FlowProject` if None (Default value = None). \*\*kwargs Additional keyword arguments forwarded to :meth:`~.ComputeEnvironment.submit`. @@ -3939,7 +3929,6 @@ def submit( "The 'names' argument must be a sequence of strings, however " f"a single string was provided: {names}." ) - if walltime is not None: try: walltime = datetime.timedelta(hours=walltime) From 69f87546249fb8468ba91880bcf2f41bb032c225 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 15 Jan 2021 18:39:52 -0600 Subject: [PATCH 5/6] Fix template reference data. It was using mpiexec (default) and should use the cluster-specific MPI commands. I don't know why the reference data was wrong. --- tests/template_reference_data.tar.gz | Bin 16365 -> 16845 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/template_reference_data.tar.gz b/tests/template_reference_data.tar.gz index f62d42d67785bd834a98f562bad23809b7c4bd7f..d057f8e8b9a76caad1ac19b0de54e7f9ab851e25 100644 GIT binary patch literal 16845 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 b5OEPMYauoN*FUa~FmzvxL!0FoC(Hi>*O}ED From 8d8ec81c807c40c9b483437a43e0dd10395583bd Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 15 Jan 2021 18:51:14 -0600 Subject: [PATCH 6/6] Remove extra comment about status parallelization. --- changelog.txt | 2 ++ flow/project.py | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/changelog.txt b/changelog.txt index 44863c7a9..731d290fa 100644 --- a/changelog.txt +++ b/changelog.txt @@ -39,6 +39,8 @@ Removed +++++++ - Removed the deprecated method ``flow.util.misc.write_human_readable_statepoints`` (#397). +- Removed the deprecated argument ``--no-parallelize`` (#424). +- Removed the deprecated ``env`` argument from submission methods (#424). Version 0.11 ============ diff --git a/flow/project.py b/flow/project.py index 278415a7e..c64d539e1 100644 --- a/flow/project.py +++ b/flow/project.py @@ -2421,13 +2421,6 @@ def _fetch_status( operations, labels, and any errors caught. """ - # The argument status_parallelization is used so that _fetch_status method - # gets to know whether the deprecated argument no_parallelization passed - # while calling print_status is True or False. This can also be done by - # setting self.config['flow']['status_parallelization']='none' if the argument - # is True. But the later functionality will last the rest of the session but in order - # to do proper deprecation, it is not required for now. - # Update the project's status cache self._fetch_scheduler_status(aggregates, err, ignore_errors) # Get project status cache