From ed79780d7ac34e2c941974d4a8b77c6d5fbb8323 Mon Sep 17 00:00:00 2001 From: Luc Peterson Date: Fri, 4 Feb 2022 10:19:44 -0800 Subject: [PATCH] Release Version 1.8.4 (#356) * Create python-publish.yml (#353) * Workflows Community Initiative Metadata (#355) --- .github/workflows/python-publish.yml | 36 ++++++++++++++++++ .wci.yml | 12 ++++++ CHANGELOG.md | 8 +++- LICENSE | 2 +- Makefile | 6 +-- README.md | 4 +- docs/images/merlin_icon.png | Bin 0 -> 75969 bytes docs/source/modules/contribute.rst | 2 +- merlin/__init__.py | 6 +-- merlin/ascii_art.py | 4 +- merlin/celery.py | 4 +- merlin/common/__init__.py | 4 +- merlin/common/abstracts/__init__.py | 4 +- merlin/common/abstracts/enums/__init__.py | 4 +- merlin/common/openfilelist.py | 4 +- merlin/common/opennpylib.py | 4 +- merlin/common/sample_index.py | 4 +- merlin/common/sample_index_factory.py | 4 +- merlin/common/security/__init__.py | 4 +- merlin/common/security/encrypt.py | 4 +- .../security/encrypt_backend_traffic.py | 4 +- merlin/common/tasks.py | 4 +- merlin/common/util_sampling.py | 4 +- merlin/config/__init__.py | 4 +- merlin/config/broker.py | 4 +- merlin/config/configfile.py | 4 +- merlin/config/results_backend.py | 4 +- merlin/data/celery/__init__.py | 4 +- merlin/display.py | 4 +- merlin/examples/__init__.py | 4 +- merlin/examples/examples.py | 4 +- merlin/examples/generator.py | 4 +- .../workflows/feature_demo/scripts/pgen.py | 2 +- .../null_spec/scripts/launch_jobs.py | 4 +- .../workflows/openfoam_wf/scripts/learn.py | 2 +- .../openfoam_wf_no_docker/scripts/learn.py | 2 +- .../optimization/scripts/test_functions.py | 6 +-- .../remote_feature_demo/scripts/pgen.py | 2 +- merlin/exceptions/__init__.py | 4 +- merlin/log_formatter.py | 4 +- merlin/main.py | 4 +- merlin/merlin_templates.py | 4 +- merlin/router.py | 4 +- merlin/spec/__init__.py | 4 +- merlin/spec/all_keys.py | 4 +- merlin/spec/defaults.py | 4 +- merlin/spec/expansion.py | 4 +- merlin/spec/specification.py | 4 +- merlin/study/__init__.py | 4 +- merlin/study/batch.py | 4 +- merlin/study/celeryadapter.py | 4 +- merlin/study/dag.py | 4 +- merlin/study/script_adapter.py | 4 +- merlin/study/step.py | 4 +- merlin/study/study.py | 4 +- merlin/utils.py | 4 +- requirements/dev.txt | 1 + setup.py | 5 ++- tests/integration/run_tests.py | 4 +- 59 files changed, 162 insertions(+), 106 deletions(-) create mode 100644 .github/workflows/python-publish.yml create mode 100644 .wci.yml create mode 100644 docs/images/merlin_icon.png diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 000000000..3bfabfc12 --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,36 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Upload Python Package + +on: + release: + types: [published] + +jobs: + deploy: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build + - name: Build package + run: python -m build + - name: Publish package + uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.wci.yml b/.wci.yml new file mode 100644 index 000000000..0ced2c93b --- /dev/null +++ b/.wci.yml @@ -0,0 +1,12 @@ +name: Merlin + +icon: https://raw.githubusercontent.com/LLNL/merlin/main/docs/images/merlin_icon.png + +headline: Enabling Machine Learning HPC Workflows + +description: The Merlin workflow framework targets large-scale scientific machine learning (ML) workflows in High Performance Computing (HPC) environments. Merlin is a producer-consumer workflow model that enables multi-machine, cross-batch job, dynamically allocated yet persistent workflows capable of utilizing surge-compute resources. Key features are a flexible and intuitive HPC-centric interface, low per-task overhead, multi-tiered fault recovery, and a hierarchical sampling algorithm that allows for highly scalable task execution and queuing to ensembles of millions of tasks. + +documentation: + general: https://merlin.readthedocs.io/ + installation: https://merlin.readthedocs.io/en/latest/modules/installation/installation.html + tutorial: https://merlin.readthedocs.io/en/latest/tutorial.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 010dbd254..b44333f52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,13 @@ All notable changes to Merlin will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [1.8.4] +### Added +- Auto-release of pypi packages +- Workflows Community Initiative metadata file + +### Fixed +- Old references to stale branches ## [1.8.3] ### Added diff --git a/LICENSE b/LICENSE index 494069b61..746aac58b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Lawrence Livermore National Laboratory +Copyright (c) 2022 Lawrence Livermore National Laboratory Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 2f5086ce9..d1e441a87 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # @@ -191,7 +191,7 @@ reqlist: release: - $(PYTHON) setup.py sdist bdist_wheel + $(PYTHON) -m build . clean-release: diff --git a/README.md b/README.md index dbbd57707..fad1de93f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Issues](https://img.shields.io/github/issues/LLNL/merlin)](https://github.com/LLNL/merlin/issues) [![Pull requests](https://img.shields.io/github/issues-pr/LLNL/merlin)](https://github.com/LLNL/merlin/pulls) -![Merlin](https://raw.githubusercontent.com/LLNL/merlin/master/docs/images/merlin.png) +![Merlin](https://raw.githubusercontent.com/LLNL/merlin/main/docs/images/merlin.png) ## A brief introduction to Merlin Merlin is a tool for running machine learning based workflows. The goal of @@ -133,6 +133,6 @@ the Merlin community, you agree to abide by its rules. ## License -Merlin is distributed under the terms of the [MIT LICENSE](https://github.com/LLNL/merlin/blob/master/LICENSE). +Merlin is distributed under the terms of the [MIT LICENSE](https://github.com/LLNL/merlin/blob/main/LICENSE). LLNL-CODE-797170 diff --git a/docs/images/merlin_icon.png b/docs/images/merlin_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..664ed465570859ce4a609e658757dc243f56a3e4 GIT binary patch literal 75969 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

6|5QEpQ&^#d~<7^c=x<^CRjF! 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 from your fork. Before you send it, summarize your change in the ``[Unreleased]`` section of ``CHANGELOG.md`` and make sure develop is the destination branch. We also appreciate `squash commits `_ before pull requests are merged. -Merlin uses a rough approximation of the Git Flow branching model. The develop branch contains the latest contributions, and master is always tagged and points to the latest stable release. +Merlin uses a rough approximation of the Git Flow branching model. The develop branch contains the latest contributions, and main is always tagged and points to the latest stable release. If you're a contributor, try to test and run on develop. That's where all the magic is happening (and where we hope bugs stop). diff --git a/merlin/__init__.py b/merlin/__init__.py index 75513329f..b99002f88 100644 --- a/merlin/__init__.py +++ b/merlin/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # @@ -38,7 +38,7 @@ import sys -__version__ = "1.8.3" +__version__ = "1.8.4" VERSION = __version__ PATH_TO_PROJ = os.path.join(os.path.dirname(__file__), "") diff --git a/merlin/ascii_art.py b/merlin/ascii_art.py index 8acd698b4..2b3366693 100644 --- a/merlin/ascii_art.py +++ b/merlin/ascii_art.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/celery.py b/merlin/celery.py index c2e98f3a3..a2e1de2bd 100644 --- a/merlin/celery.py +++ b/merlin/celery.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/__init__.py b/merlin/common/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/common/__init__.py +++ b/merlin/common/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/abstracts/__init__.py b/merlin/common/abstracts/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/common/abstracts/__init__.py +++ b/merlin/common/abstracts/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/abstracts/enums/__init__.py b/merlin/common/abstracts/enums/__init__.py index e16c45498..c6357ef4b 100644 --- a/merlin/common/abstracts/enums/__init__.py +++ b/merlin/common/abstracts/enums/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/openfilelist.py b/merlin/common/openfilelist.py index 4c87bb978..beb8a69aa 100644 --- a/merlin/common/openfilelist.py +++ b/merlin/common/openfilelist.py @@ -1,14 +1,14 @@ #!/usr/bin/env python ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/opennpylib.py b/merlin/common/opennpylib.py index bcb298035..793a869b6 100644 --- a/merlin/common/opennpylib.py +++ b/merlin/common/opennpylib.py @@ -1,14 +1,14 @@ #!/usr/bin/env python ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/sample_index.py b/merlin/common/sample_index.py index 6d4511307..8f6d4f9bf 100644 --- a/merlin/common/sample_index.py +++ b/merlin/common/sample_index.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/sample_index_factory.py b/merlin/common/sample_index_factory.py index e23fb9081..5161821b2 100644 --- a/merlin/common/sample_index_factory.py +++ b/merlin/common/sample_index_factory.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/security/__init__.py b/merlin/common/security/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/common/security/__init__.py +++ b/merlin/common/security/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/security/encrypt.py b/merlin/common/security/encrypt.py index 7c12a70d4..c76eb0688 100644 --- a/merlin/common/security/encrypt.py +++ b/merlin/common/security/encrypt.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/security/encrypt_backend_traffic.py b/merlin/common/security/encrypt_backend_traffic.py index 1c566a377..b5f9953bc 100644 --- a/merlin/common/security/encrypt_backend_traffic.py +++ b/merlin/common/security/encrypt_backend_traffic.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/tasks.py b/merlin/common/tasks.py index 0737bd887..a3b63e0c3 100644 --- a/merlin/common/tasks.py +++ b/merlin/common/tasks.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/common/util_sampling.py b/merlin/common/util_sampling.py index 2c71cee2d..e11721cae 100644 --- a/merlin/common/util_sampling.py +++ b/merlin/common/util_sampling.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/config/__init__.py b/merlin/config/__init__.py index 47945b01b..f7c96c35e 100644 --- a/merlin/config/__init__.py +++ b/merlin/config/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/config/broker.py b/merlin/config/broker.py index 4084d13c2..5a0430dc4 100644 --- a/merlin/config/broker.py +++ b/merlin/config/broker.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/config/configfile.py b/merlin/config/configfile.py index 2d5141ae3..e237d741a 100644 --- a/merlin/config/configfile.py +++ b/merlin/config/configfile.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/config/results_backend.py b/merlin/config/results_backend.py index 01c210a7f..ad1504754 100644 --- a/merlin/config/results_backend.py +++ b/merlin/config/results_backend.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/data/celery/__init__.py b/merlin/data/celery/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/data/celery/__init__.py +++ b/merlin/data/celery/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/display.py b/merlin/display.py index 2ad038034..9d58acbd0 100644 --- a/merlin/display.py +++ b/merlin/display.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/examples/__init__.py b/merlin/examples/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/examples/__init__.py +++ b/merlin/examples/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/examples/examples.py b/merlin/examples/examples.py index bbbad64d9..059e0ae9c 100644 --- a/merlin/examples/examples.py +++ b/merlin/examples/examples.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/examples/generator.py b/merlin/examples/generator.py index d1ce08b4e..31ab74c5d 100644 --- a/merlin/examples/generator.py +++ b/merlin/examples/generator.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/examples/workflows/feature_demo/scripts/pgen.py b/merlin/examples/workflows/feature_demo/scripts/pgen.py index 99b9b105d..6ffb3ed37 100644 --- a/merlin/examples/workflows/feature_demo/scripts/pgen.py +++ b/merlin/examples/workflows/feature_demo/scripts/pgen.py @@ -5,7 +5,7 @@ def get_custom_generator(env, **kwargs): p_gen = ParameterGenerator() params = { "X2": {"values": [1 / i for i in range(3, 6)], "label": "X2.%%"}, - "N_NEW": {"values": [2 ** i for i in range(1, 4)], "label": "N_NEW.%%"}, + "N_NEW": {"values": [2**i for i in range(1, 4)], "label": "N_NEW.%%"}, } for key, value in params.items(): diff --git a/merlin/examples/workflows/null_spec/scripts/launch_jobs.py b/merlin/examples/workflows/null_spec/scripts/launch_jobs.py index bb5ba8a4d..99c3c3d6a 100644 --- a/merlin/examples/workflows/null_spec/scripts/launch_jobs.py +++ b/merlin/examples/workflows/null_spec/scripts/launch_jobs.py @@ -21,8 +21,8 @@ # launch n_samples * n_conc merlin workflow jobs submit_path: str = os.path.abspath(os.path.dirname(os.path.abspath(__file__))) -concurrencies: List[int] = [2 ** 0, 2 ** 1, 2 ** 2, 2 ** 3, 2 ** 4, 2 ** 5, 2 ** 6] -samples: List[int] = [10 ** 1, 10 ** 2, 10 ** 3, 10 ** 4, 10 ** 5] +concurrencies: List[int] = [2**0, 2**1, 2**2, 2**3, 2**4, 2**5, 2**6] +samples: List[int] = [10**1, 10**2, 10**3, 10**4, 10**5] nodes: List = [] c: int for c in concurrencies: diff --git a/merlin/examples/workflows/openfoam_wf/scripts/learn.py b/merlin/examples/workflows/openfoam_wf/scripts/learn.py index 1a4ba7c00..b7c40f6d3 100644 --- a/merlin/examples/workflows/openfoam_wf/scripts/learn.py +++ b/merlin/examples/workflows/openfoam_wf/scripts/learn.py @@ -26,7 +26,7 @@ U = outputs["arr_0"] enstrophy = outputs["arr_1"] -energy_byhand = np.sum(np.sum(U ** 2, axis=3), axis=2) / U.shape[2] / 2 +energy_byhand = np.sum(np.sum(U**2, axis=3), axis=2) / U.shape[2] / 2 enstrophy_all = np.sum(enstrophy, axis=2) X = np.load(inputs_dir + "/samples.npy") diff --git a/merlin/examples/workflows/openfoam_wf_no_docker/scripts/learn.py b/merlin/examples/workflows/openfoam_wf_no_docker/scripts/learn.py index 1a4ba7c00..b7c40f6d3 100644 --- a/merlin/examples/workflows/openfoam_wf_no_docker/scripts/learn.py +++ b/merlin/examples/workflows/openfoam_wf_no_docker/scripts/learn.py @@ -26,7 +26,7 @@ U = outputs["arr_0"] enstrophy = outputs["arr_1"] -energy_byhand = np.sum(np.sum(U ** 2, axis=3), axis=2) / U.shape[2] / 2 +energy_byhand = np.sum(np.sum(U**2, axis=3), axis=2) / U.shape[2] / 2 enstrophy_all = np.sum(enstrophy, axis=2) X = np.load(inputs_dir + "/samples.npy") diff --git a/merlin/examples/workflows/optimization/scripts/test_functions.py b/merlin/examples/workflows/optimization/scripts/test_functions.py index d6f391a0a..ab1a3ae4a 100644 --- a/merlin/examples/workflows/optimization/scripts/test_functions.py +++ b/merlin/examples/workflows/optimization/scripts/test_functions.py @@ -17,14 +17,14 @@ def rosenbrock(X): def rastrigin(X, A=10): first_term = A * len(inputs) - return first_term + sum([(x ** 2 - A * np.cos(2 * math.pi * x)) for x in X]) + return first_term + sum([(x**2 - A * np.cos(2 * math.pi * x)) for x in X]) def ackley(X): firstSum = 0.0 secondSum = 0.0 for x in X: - firstSum += x ** 2.0 + firstSum += x**2.0 secondSum += np.cos(2.0 * np.pi * x) n = float(len(X)) @@ -32,7 +32,7 @@ def ackley(X): def griewank(X): - term_1 = (1.0 / 4000.0) * sum(X ** 2) + term_1 = (1.0 / 4000.0) * sum(X**2) term_2 = 1.0 for i, x in enumerate(X): term_2 *= np.cos(x) / np.sqrt(i + 1) diff --git a/merlin/examples/workflows/remote_feature_demo/scripts/pgen.py b/merlin/examples/workflows/remote_feature_demo/scripts/pgen.py index ad13cc50b..5332d5b93 100644 --- a/merlin/examples/workflows/remote_feature_demo/scripts/pgen.py +++ b/merlin/examples/workflows/remote_feature_demo/scripts/pgen.py @@ -10,7 +10,7 @@ def get_custom_generator(env, **kwargs) -> ParameterGenerator: p_gen: ParameterGenerator = ParameterGenerator() params: Dict[str, Union[List[float], str]] = { "X2": {"values": [1 / i for i in range(3, 6)], "label": "X2.%%"}, - "N_NEW": {"values": [2 ** i for i in range(1, 4)], "label": "N_NEW.%%"}, + "N_NEW": {"values": [2**i for i in range(1, 4)], "label": "N_NEW.%%"}, } key: str value: Union[List[float], str] diff --git a/merlin/exceptions/__init__.py b/merlin/exceptions/__init__.py index 8fac45395..20a32755f 100644 --- a/merlin/exceptions/__init__.py +++ b/merlin/exceptions/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/log_formatter.py b/merlin/log_formatter.py index cbb285618..4e3969c2c 100644 --- a/merlin/log_formatter.py +++ b/merlin/log_formatter.py @@ -1,14 +1,14 @@ """This module handles setting up the extensive logging system in Merlin.""" ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/main.py b/merlin/main.py index 8a7b5d302..9f6c90a73 100644 --- a/merlin/main.py +++ b/merlin/main.py @@ -1,14 +1,14 @@ """The top level main function for invoking Merlin.""" ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/merlin_templates.py b/merlin/merlin_templates.py index f9885b242..94c57445e 100644 --- a/merlin/merlin_templates.py +++ b/merlin/merlin_templates.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/router.py b/merlin/router.py index 85e298510..c559883fa 100644 --- a/merlin/router.py +++ b/merlin/router.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/spec/__init__.py b/merlin/spec/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/spec/__init__.py +++ b/merlin/spec/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/spec/all_keys.py b/merlin/spec/all_keys.py index cd4bf238c..3a344a98e 100644 --- a/merlin/spec/all_keys.py +++ b/merlin/spec/all_keys.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/spec/defaults.py b/merlin/spec/defaults.py index ef3f6da3e..74dc0be46 100644 --- a/merlin/spec/defaults.py +++ b/merlin/spec/defaults.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/spec/expansion.py b/merlin/spec/expansion.py index 6d4ec0329..30a71b25c 100644 --- a/merlin/spec/expansion.py +++ b/merlin/spec/expansion.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/spec/specification.py b/merlin/spec/specification.py index eb77c3157..122b8f002 100644 --- a/merlin/spec/specification.py +++ b/merlin/spec/specification.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/__init__.py b/merlin/study/__init__.py index f78f9c91a..da4ad9f74 100644 --- a/merlin/study/__init__.py +++ b/merlin/study/__init__.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/batch.py b/merlin/study/batch.py index dec4cfac4..0be2e8739 100644 --- a/merlin/study/batch.py +++ b/merlin/study/batch.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/celeryadapter.py b/merlin/study/celeryadapter.py index eef29aa63..b7045bc46 100644 --- a/merlin/study/celeryadapter.py +++ b/merlin/study/celeryadapter.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/dag.py b/merlin/study/dag.py index 31ef0f08b..6821d486e 100644 --- a/merlin/study/dag.py +++ b/merlin/study/dag.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/script_adapter.py b/merlin/study/script_adapter.py index 07c4622b9..63a11d0c7 100644 --- a/merlin/study/script_adapter.py +++ b/merlin/study/script_adapter.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/step.py b/merlin/study/step.py index af331c3cf..649610ab6 100644 --- a/merlin/study/step.py +++ b/merlin/study/step.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/study/study.py b/merlin/study/study.py index 1cf1e2adc..d98a31419 100644 --- a/merlin/study/study.py +++ b/merlin/study/study.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/merlin/utils.py b/merlin/utils.py index b35ef2b77..657349fed 100644 --- a/merlin/utils.py +++ b/merlin/utils.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # diff --git a/requirements/dev.txt b/requirements/dev.txt index c66854a61..9321694f8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,4 +1,5 @@ # Development dependencies. +build black dep-license flake8 diff --git a/setup.py b/setup.py index e9ed37693..68e4b8ed7 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. # @@ -100,6 +100,7 @@ def extras_require(): "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ], keywords="machine learning workflow", url="https://github.com/LLNL/merlin", diff --git a/tests/integration/run_tests.py b/tests/integration/run_tests.py index f92f20354..c7d3745b1 100644 --- a/tests/integration/run_tests.py +++ b/tests/integration/run_tests.py @@ -1,12 +1,12 @@ ############################################################################### -# Copyright (c) 2019, Lawrence Livermore National Security, LLC. +# Copyright (c) 2022, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory # Written by the Merlin dev team, listed in the CONTRIBUTORS file. # # # LLNL-CODE-797170 # All rights reserved. -# This file is part of Merlin, Version: 1.8.3. +# This file is part of Merlin, Version: 1.8.4. # # For details, see https://github.com/LLNL/merlin. #