Merlin

Latest version: v1.12.2

Safety actively analyzes 688931 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 9

1.10.2

Fixed
- A bug where the .orig, .partial, and .expanded file names were using the study name rather than the original file name
- A bug where the openfoam_wf_singularity example was not being found
- Some build warnings in the docs (unknown targets, duplicate targets, title underlines too short, etc.)
- A bug where when the output path contained a variable that was overridden, the overridden variable was not changed in the output_path
- A bug where permission denied errors happened when checking for system scheduler

Added
- Tests for ensuring `$(MERLIN_SPEC_ORIGINAL_TEMPLATE)`, `$(MERLIN_SPEC_ARCHIVED_COPY)`, and `$(MERLIN_SPEC_EXECUTED_RUN)` are stored correctly
- A pdf download format for the docs
- Tests for cli substitutions

Changed
- The ProvenanceYAMLFileHasRegex condition for integration tests now saves the study name and spec file name as attributes instead of just the study name
- This lead to minor changes in 3 tests ("local override feature demo", "local pgen feature demo", and "remote feature demo") with what we pass to this specific condition
- Updated scikit-learn requirement for the openfoam_wf_singularity example
- Uncommented Latex support in the docs configuration to get pdf builds working

1.10.1

Fixed
- A bug where assigning a worker all steps also assigned steps to the default worker

Added
- Tests to make sure the default worker is being assigned properly

Changed
- Requirement name in examples/workflows/remote_feature_demo/requirements.txt and examples/workflows/feature_demo/requirements.txt from sklearn to scikit-learn since sklearn is now deprecated

1.10.0

Fixed
- Pip wheel wasn't including .sh files for merlin examples
- The learn.py script in the openfoam_wf* examples will now create the missing Energy v Lidspeed plot
- Fixed the flags associated with the `stop-workers` command (--spec, --queues, --workers)
- Fixed the --step flag for the `run-workers` command
- Fixed most of the pylint errors that we're showing up when you ran `make check-style`
- Some errors have been disabled rather than fixed. These include:
- Any pylint errors in merlin_template.py since it's deprecated now
- A "duplicate code" instance between a function in `expansion.py` and a method in `study.py`
- The function is explicitly not creating a MerlinStudy object so the code *must* be duplicate here
- Invalid-name (C0103): These errors typically relate to the names of short variables (i.e. naming files something like f or errors e)
- Unused-argument (W0613): These have been disabled for celery-related functions since celery *does* use these arguments behind the scenes
- Broad-exception (W0718): Pylint wants a more specific exception but sometimes it's ok to have a broad exception
- Import-outside-toplevel (C0415): Sometimes it's necessary for us to import inside a function. Where this is the case, these errors are disabled
- Too-many-statements (R0915): This is disabled for the `setup_argparse` function in `main.py` since it's necessary to be big. It's disabled in `tasks.py` and `celeryadapter.py` too until we can get around to refactoring some code there
- No-else-return (R1705): These are disabled in `router.py` until we refactor the file
- Consider-using-with (R1732): Pylint wants us to consider using with for calls to subprocess.run or subprocess.Popen but it's not necessary
- Too-many-arguments (R0913): These are disabled for functions that I believe *need* to have several arguments
- Note: these could be fixed by using *args and **kwargs but it makes the code harder to follow so I'm opting to not do that
- Too-many-local-variables (R0914): These are disabled for functions that have a lot of variables
- It may be a good idea at some point to go through these and try to find ways to shorten the number of variables used or split the functions up
- Too-many-branches (R0912): These are disabled for certain functions that require a good amount of branching
- Might be able to fix this in the future if we split functions up more
- Too-few-public-methods (R0903): These are disabled for classes we may add to in the future or "wrapper" classes
- Attribute-defined-outside-init (W0201): These errors are only disabled in `specification.py` as they occur in class methods so init() won't be called
- Fixed an issue where the walltime value in the batch block was being converted to an integer instead of remaining in HH:MM:SS format

Added
- Now loads np.arrays of dtype='object', allowing mix-type sample npy
- Added a singularity container openfoam_wf example
- Added flux native worker launch support
- Added PBS flux launch support
- Added check_for_flux, check_for_slurm, check_for_lsf, and check_for_pbs utility functions
- Tests for the `stop-workers` command
- A function in `run_tests.py` to check that an integration test definition is formatted correctly
- A new dev_workflow example `multiple_workers.yaml` that's used for testing the `stop-workers` command
- Ability to start 2 subprocesses for a single test
- Added the --distributed and --display-tests flags to run_tests.py
- --distributed: only run distributed tests
- --display-tests: displays a table of all existing tests and the id associated with each test
- Added the --disable-logs flag to the `run-workers` command
- Merlin will now assign `default_worker` to any step not associated with a worker
- Added `get_step_worker_map()` as a method in `specification.py`
- Added `tabulate_info()` function in `display.py` to help with table formatting
- Added get_flux_alloc function for new flux version >= 0.48.x interface change
- New flags to the `query-workers` command
- `--queues`: query workers based on the queues they're associated with
- `--workers`: query workers based on a regex of the names you're looking for
- `--spec`: query workers based on the workers defined in a spec file

Changed
- Changed celery_regex to celery_slurm_regex in test_definitions.py
- Reformatted how integration tests are defined and part of how they run
- Test values are now dictionaries rather than tuples
- Stopped using `subprocess.Popen()` and `subprocess.communicate()` to run tests and now instead use `subprocess.run()` for simplicity and to keep things up-to-date with the latest subprocess release (`run()` will call `Popen()` and `communicate()` under the hood so we don't have to handle that anymore)
- Rewrote the README in the integration tests folder to explain the new integration test format
- Reformatted `start_celery_workers()` in `celeryadapter.py` file. This involved:
- Modifying `verify_args()` to return the arguments it verifies/updates
- Changing `launch_celery_worker()` to launch the subprocess (no longer builds the celery command)
- Creating `get_celery_cmd()` to do what `launch_celery_worker()` used to do and build the celery command to run
- Creating `_get_steps_to_start()`, `_create_kwargs()`, and `_get_workers_to_start()` as helper functions to simplify logic in `start_celery_workers()`
- Modified the `merlinspec.json` file:
- the minimum `gpus per task` is now 0 instead of 1
- variables defined in the `env` block of a spec file can now be arrays
- Refactored `batch.py`:
- Merged 4 functions (`check_for_slurm`, `check_for_lsf`, `check_for_flux`, and `check_for_pbs`) into 1 function named `check_for_scheduler`
- Modified `get_batch_type` to accommodate this change
- Added a function `parse_batch_block` to handle all the logic of reading in the batch block and storing it in one dict
- Added a function `get_flux_launch` to help decrease the amount of logic taking place in `batch_worker_launch`
- Modified `batch_worker_launch` to use the new `parse_batch_block` function
- Added a function `construct_scheduler_legend` to build a dict that keeps as much information as we need about each scheduler stored in one place
- Cleaned up the `construct_worker_launch_command` function to utilize the newly added functions and decrease the amount of repeated code
- Changed get_flux_cmd for new flux version >=0.48.x interface
- The `query-workers` command now prints a table as its' output
- Each row of the `Workers` column has the name of an active worker
- Each row of the `Queues` column has a list of queues associated with the active worker

1.9.1

Fixed
- Added merlin/spec/merlinspec.json to MANIFEST.in so pip will actually install it when ran
- Fixed a bug where "from celery import Celery" was failing on python 3.7
- Numpy error about numpy.str not existing from a new numpy release
- Made merlin server configurations into modules that can be loaded and written to users

1.9.0

Added
- Added support for Python 3.11
- Update docker docs for new rabbitmq and redis server versions
- Added lgtm.com Badge for README.md
- More fixes for lgtm checks.
- Added merlin server command as a container option for broker and results_backend servers.
- Added new documentation for merlin server in docs and tutorial
- Added the flux_exec batch argument to allow for flux exec arguments,
e.g. flux_exec: flux exec -r "0-1" to run celery workers only on
ranks 0 and 1 of a multi-rank allocation
- Additional argument in test definitions to allow for a post "cleanup" command
- Capability for non-user block in yaml
- .readthedocs.yaml and requirements.txt files for docs
- Small modifications to the Tutorial, Getting Started, Command Line, and Contributing pages in the docs
- Compatibility with the newest version of Maestro (v. 1.1.9dev1)
- JSON schema validation for Merlin spec files
- New tests related to JSON schema validation
- Instructions in the "Contributing" page of the docs on how to add new blocks/fields to the spec file
- Brief explanation of the $(LAUNCHER) variable in the "Variables" page of the docs

Changed
- Removed support for Python 3.6
- Rename lgtm.yml to .lgtm.yml
- New shortcuts in specification file (sample_vector, sample_names, spec_original_template, spec_executed_run, spec_archived_copy)
- Update requirements to require redis 4.3.4 for acl user channel support
- Added ssl to the broker and results backend server checks when "merlin info" is called
- Removed theme_override.css from docs/_static/ since it is no longer needed with the updated version of sphinx
- Updated docs/Makefile to include a pip install for requirements and a clean command
- Update to the Tutorial and Contributing pages in the docs
- Changed what is stored in a Merlin DAG
- We no longer store the entire Maestro ExecutionGraph object
- We now only store the adjacency table and values obtained from the ExecutionGraph object
- Modified spec verification
- Update to require maestrowf 1.9.1dev1 or later

Fixed
- Fixed return values from scripts with main() to fix testing errors.
- CI test for CHANGELOG modifcations
- Typo "cert_req" to "cert_reqs" in the merlin config docs
- Removed emoji from issue templates that were breaking doc builds
- Including .temp template files in MANIFEST
- Styling in the footer for docs
- Horizontal scroll overlap in the variables page of the docs
- Reordered small part of Workflow Specification page in the docs in order to put "samples" back in the merlin block

1.8.5

Added
- Code updates to satisfy lgtm CI security checker

Fixed
- A bug in the ssl config was not returning the proper values

Page 2 of 9

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.