From c4c4a08bd44159825f553647348a2a85c7dd7a3f Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 25 Dec 2023 17:24:22 +0000
Subject: [PATCH 1/2] [pre-commit.ci] pre-commit autoupdate
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

updates:
- [github.com/pre-commit/mirrors-prettier: v3.1.0 → v4.0.0-alpha.8](https://github.com/pre-commit/mirrors-prettier/compare/v3.1.0...v4.0.0-alpha.8)
- [github.com/pre-commit/mirrors-clang-format: v17.0.5 → v17.0.6](https://github.com/pre-commit/mirrors-clang-format/compare/v17.0.5...v17.0.6)
---
 .pre-commit-config.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5d452a3d..9e4b4439 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,7 +16,7 @@ repos:
       - id: dockerfile_lint
         args: [--rulefile, ./config/docker_rules.yml, --dockerfile]
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: v3.1.0
+    rev: v4.0.0-alpha.8
     hooks:
       - id: prettier
   - repo: https://github.com/Lucas-C/pre-commit-hooks
@@ -47,7 +47,7 @@ repos:
       - id: end-of-file-fixer
       - id: check-shebang-scripts-are-executable
   - repo: https://github.com/pre-commit/mirrors-clang-format
-    rev: v17.0.5
+    rev: v17.0.6
     hooks:
       - id: clang-format
         types:

From 524989a525707878c04913f9aaed12b69556156e Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 25 Dec 2023 17:24:45 +0000
Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
---
 .ci/azure-build.yml     |   4 +-
 .ci/azure-cmake.yml     |   4 +-
 .ci/azure-steps.yml     |   6 +-
 .ci/azure-test.yml      |   6 +-
 .circleci/config.yml    |  14 ++--
 .github/dependabot.yml  |   6 +-
 config/docker_rules.yml | 172 ++++++++++++++++++++--------------------
 7 files changed, 106 insertions(+), 106 deletions(-)

diff --git a/.ci/azure-build.yml b/.ci/azure-build.yml
index ff9442bb..a10e0ad4 100644
--- a/.ci/azure-build.yml
+++ b/.ci/azure-build.yml
@@ -2,10 +2,10 @@ steps:
   - task: CMake@1
     inputs:
       cmakeArgs: .. -DCMAKE_CXX_STANDARD=$(units.std) -DUNITS_HEADER_ONLY=$(units.header) -DCMAKE_BUILD_TYPE=$(units.build_type) $(units.options)
-    displayName: 'Configure'
+    displayName: "Configure"
     env:
       GIT_SSL_NO_VERIFY: 1
 
   - script: cmake --build .
-    displayName: 'Build'
+    displayName: "Build"
     workingDirectory: build
diff --git a/.ci/azure-cmake.yml b/.ci/azure-cmake.yml
index 1a12a722..ee547a7b 100644
--- a/.ci/azure-cmake.yml
+++ b/.ci/azure-cmake.yml
@@ -7,8 +7,8 @@ steps:
 
   - task: ExtractFiles@1
     inputs:
-      archiveFilePatterns: 'cmake*.tar.gz'
-      destinationFolder: 'cmake_program'
+      archiveFilePatterns: "cmake*.tar.gz"
+      destinationFolder: "cmake_program"
       displayName: Extract CMake
 
   - bash: echo "##vso[task.prependpath]$(Build.SourcesDirectory)/cmake_program/cmake-3.14.3-Linux-x86_64/bin"
diff --git a/.ci/azure-steps.yml b/.ci/azure-steps.yml
index 7ce9732d..cf58d684 100644
--- a/.ci/azure-steps.yml
+++ b/.ci/azure-steps.yml
@@ -6,12 +6,12 @@ steps:
   - task: CMake@1
     inputs:
       cmakeArgs: .. -DCMAKE_BUILD_TYPE=Debug
-    displayName: 'Configure'
+    displayName: "Configure"
 
   - script: cmake --build . -j
-    displayName: 'Build'
+    displayName: "Build"
     workingDirectory: build
 
   - script: ctest --output-on-failure -C Debug
-    displayName: 'Test'
+    displayName: "Test"
     workingDirectory: build
diff --git a/.ci/azure-test.yml b/.ci/azure-test.yml
index 87b6e1d7..0714747c 100644
--- a/.ci/azure-test.yml
+++ b/.ci/azure-test.yml
@@ -1,9 +1,9 @@
 steps:
   - script: ctest --output-on-failure -C $(units.build_type) -T test
-    displayName: 'Test'
+    displayName: "Test"
     workingDirectory: build
 
   - task: PublishTestResults@2
     inputs:
-      testResultsFormat: 'cTest'
-      testResultsFiles: '**/Test.xml'
+      testResultsFormat: "cTest"
+      testResultsFiles: "**/Test.xml"
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 23574115..64f375dd 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -42,7 +42,7 @@ jobs:
       - image: helics/buildenv:sanitizers-14
     environment:
       CMAKE_FLAGS: '-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="-fsanitize=thread -nostdinc++ -nostdlib++ -L/root/develop/libcxx_tsan/lib -lc++ -lc++abi -I/root/develop/libcxx_tsan/include -I/root/develop/libcxx_tsan/include/c++/v1 -Wno-unused-command-line-argument -fno-omit-frame-pointer -g -O2 -Wl,-rpath,/root/develop/libcxx_tsan/lib"  '
-      TSAN_OPTIONS: 'second_deadlock_stack=1'
+      TSAN_OPTIONS: "second_deadlock_stack=1"
 
     steps:
       - checkout
@@ -53,9 +53,9 @@ jobs:
       - image: helics/buildenv:sanitizers-14
     environment:
       CMAKE_FLAGS: '-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_FLAGS="-fsanitize=undefined,address -lc++ -lc++abi -fsanitize-address-use-after-scope -Wno-unused-command-line-argument -fno-omit-frame-pointer -g -O1  -fsanitize-blacklist=/root/project/.circleci/asan_blacklist.txt"  '
-      LSAN_OPTIONS: 'suppressions=/root/project/.circleci/leak_suppression.txt'
-      UBSAN_OPTIONS: 'print_stacktrace=1'
-      ASAN_OPTIONS: 'alloc_dealloc_mismatch=0'
+      LSAN_OPTIONS: "suppressions=/root/project/.circleci/leak_suppression.txt"
+      UBSAN_OPTIONS: "print_stacktrace=1"
+      ASAN_OPTIONS: "alloc_dealloc_mismatch=0"
 
     steps:
       - checkout
@@ -77,7 +77,7 @@ jobs:
 
     environment:
       CMAKE_FLAGS: '-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_COMPILER_FORCED=ON -DCMAKE_CXX_FLAGS="-g -O1 -fsanitize=fuzzer,undefined,address" '
-      UBSAN_OPTIONS: 'print_stacktrace=1'
+      UBSAN_OPTIONS: "print_stacktrace=1"
     steps:
       - checkout
       - run: *run_fuzz
@@ -90,7 +90,7 @@ jobs:
     docker:
       - image: helics/buildenv:builder
     environment:
-      CMAKE_FLAGS: '-DUNITS_ENABLE_TESTS=ON -DUNITS_INSTALL_PACKAGE_TESTS=ON -DUNITS_BUILD_SHARED_LIBRARY=ON'
+      CMAKE_FLAGS: "-DUNITS_ENABLE_TESTS=ON -DUNITS_INSTALL_PACKAGE_TESTS=ON -DUNITS_BUILD_SHARED_LIBRARY=ON"
     steps:
       - checkout
       - run: *setup_units
@@ -100,7 +100,7 @@ jobs:
     docker:
       - image: helics/buildenv:builder
     environment:
-      CMAKE_FLAGS: '-DUNITS_ENABLE_TESTS=ON -DUNITS_INSTALL_PACKAGE_TESTS=ON -DUNITS_BUILD_SHARED_LIBRARY=ON -DUNITS_CMAKE_PROJECT_NAME=LLNL-UNITS'
+      CMAKE_FLAGS: "-DUNITS_ENABLE_TESTS=ON -DUNITS_INSTALL_PACKAGE_TESTS=ON -DUNITS_BUILD_SHARED_LIBRARY=ON -DUNITS_CMAKE_PROJECT_NAME=LLNL-UNITS"
     steps:
       - checkout
       - run: *setup_units
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 82f96106..90e05c40 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,7 +5,7 @@
 
 version: 2
 updates:
-  - package-ecosystem: 'github-actions' # See documentation for possible values
-    directory: '/' # Location of package manifests
+  - package-ecosystem: "github-actions" # See documentation for possible values
+    directory: "/" # Location of package manifests
     schedule:
-      interval: 'weekly'
+      interval: "weekly"
diff --git a/config/docker_rules.yml b/config/docker_rules.yml
index e56a3d55..dd867482 100644
--- a/config/docker_rules.yml
+++ b/config/docker_rules.yml
@@ -1,7 +1,7 @@
 ---
 profile:
-  name: 'helics docker images'
-  description: 'HELICS Profile. Checks basic syntax and required labels'
+  name: "helics docker images"
+  description: "HELICS Profile. Checks basic syntax and required labels"
   includes:
     #- recommended_label_rules.yaml
 line_rules:
@@ -18,147 +18,147 @@ line_rules:
       Name:
         valueRegex: /[\w]+/
         message: "Label 'Name' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: true
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Version:
         valueRegex: /[\w.${}()"'\\\/~<>\-?\%:]+/
         message: "Label 'Version' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: true
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Release:
         valueRegex: /[\w.${}()"'\\\/~<>\-?\%:]+/
         message: "Label 'Release' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: false
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Architecture:
         valueRegex: /[\w]*[6,8][4,6]|[.]*86[.]*64/
         message: "Label 'Architecture' is missing or has invalid format: x86, i386, x86_64"
-        level: 'info'
+        level: "info"
         required: false
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Vendor:
         valueRegex: /([\w]+).+/
         message: "Label 'Vendor' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: false
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Url:
         valueRegex: /([\w]+).+/
         message: "Label 'Url' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: false
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
       Help:
         valueRegex: /([\w]+).+/
         message: "Label 'Help' is missing or has invalid format"
-        level: 'warn'
+        level: "warn"
         required: false
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_recommended_labels_for_your_project'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_recommended_labels_for_your_project"
 
   FROM:
     paramSyntaxRegex: /^[\w./\-:]+(:[${}\w.]+)?(-[${}\w.]+)?( as \w+)?$/i
     rules:
-      - label: 'no_tag'
+      - label: "no_tag"
         regex: /^[:]/
-        level: 'error'
-        message: 'No tag is used'
-        description: 'lorem ipsum tar'
+        level: "error"
+        message: "No tag is used"
+        description: "lorem ipsum tar"
         reference_url:
-          - 'https://docs.docker.com/engine/reference/builder/'
-          - '#from'
+          - "https://docs.docker.com/engine/reference/builder/"
+          - "#from"
   MAINTAINER:
     paramSyntaxRegex: /.+/
     rules: []
   RUN:
     paramSyntaxRegex: /.+/
     rules:
-      - label: 'no_yum_clean_all'
+      - label: "no_yum_clean_all"
         regex: /yum(?!.+clean all|.+\.repo|-config|\.conf)/
-        level: 'warn'
-        message: 'yum clean all is not used'
-        description: 'the yum cache will remain in this layer making the layer unnecessarily large'
+        level: "warn"
+        message: "yum clean all is not used"
+        description: "the yum cache will remain in this layer making the layer unnecessarily large"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'yum_update_all'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "yum_update_all"
         regex: /yum(.+update all|.+upgrade|.+update)/
-        level: 'info'
-        message: 'updating the entire base image may add unnecessary size to the container'
-        description: 'update the entire base image may add unnecessary size to the container'
+        level: "info"
+        message: "updating the entire base image may add unnecessary size to the container"
+        description: "update the entire base image may add unnecessary size to the container"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'no_dnf_clean_all'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "no_dnf_clean_all"
         regex: /dnf(?!.+clean all|.+\.repo)/g
-        level: 'warn'
-        message: 'dnf clean all is not used'
-        description: 'the dnf cache will remain in this layer making the layer unnecessarily large'
+        level: "warn"
+        message: "dnf clean all is not used"
+        description: "the dnf cache will remain in this layer making the layer unnecessarily large"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'no_rvm_cleanup_all'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "no_rvm_cleanup_all"
         regex: /rvm install(?!.+cleanup all)/g
-        level: 'warn'
-        message: 'rvm cleanup is not used'
-        description: 'the rvm cache will remain in this layer making the layer unnecessarily large'
+        level: "warn"
+        message: "rvm cleanup is not used"
+        description: "the rvm cache will remain in this layer making the layer unnecessarily large"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'no_gem_clean_all'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "no_gem_clean_all"
         regex: /gem install(?!.+cleanup|.+\rvm cleanup all)/g
-        level: 'warn'
-        message: 'gem cleanup all is not used'
-        description: 'the gem cache will remain in this layer making the layer unnecessarily large'
+        level: "warn"
+        message: "gem cleanup all is not used"
+        description: "the gem cache will remain in this layer making the layer unnecessarily large"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'no_apt-get_clean'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "no_apt-get_clean"
         regex: /apt-get install(?!.+clean)/g
-        level: 'info'
-        message: 'apt-get clean is not used'
-        description: 'the apt-get cache will remain in this layer making the layer unnecessarily large'
+        level: "info"
+        message: "apt-get clean is not used"
+        description: "the apt-get cache will remain in this layer making the layer unnecessarily large"
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '_clear_packaging_caches_and_temporary_package_downloads'
-      - label: 'privileged_run_container'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "_clear_packaging_caches_and_temporary_package_downloads"
+      - label: "privileged_run_container"
         regex: /privileged/
-        level: 'warn'
-        message: 'a privileged run container is allowed access to host devices'
-        description: 'Does this run need to be privileged?'
+        level: "warn"
+        message: "a privileged run container is allowed access to host devices"
+        description: "Does this run need to be privileged?"
         reference_url:
-          - 'http://docs.docker.com/engine/reference/run/#'
-          - 'runtime-privilege-and-linux-capabilities'
-      - label: 'installing_ssh'
+          - "http://docs.docker.com/engine/reference/run/#"
+          - "runtime-privilege-and-linux-capabilities"
+      - label: "installing_ssh"
         regex: /openssh-server/
-        level: 'warn'
-        message: 'installing SSH in a container is not recommended'
-        description: 'Do you really need SSH in this image?'
-        reference_url: 'https://github.com/jpetazzo/nsenter'
-      - label: 'no_ampersand_usage'
+        level: "warn"
+        message: "installing SSH in a container is not recommended"
+        description: "Do you really need SSH in this image?"
+        reference_url: "https://github.com/jpetazzo/nsenter"
+      - label: "no_ampersand_usage"
         regex: / ; /
-        level: 'info'
-        message: 'using ; instead of &&'
-        description: 'RUN do_1 && do_2: The ampersands change the resulting evaluation into do_1 and then do_2 only if do_1 was successful.'
+        level: "info"
+        message: "using ; instead of &&"
+        description: "RUN do_1 && do_2: The ampersands change the resulting evaluation into do_1 and then do_2 only if do_1 was successful."
         reference_url:
-          - 'http://docs.projectatomic.io/container-best-practices/#'
-          - '#_using_semi_colons_vs_double_ampersands'
+          - "http://docs.projectatomic.io/container-best-practices/#"
+          - "#_using_semi_colons_vs_double_ampersands"
   EXPOSE:
     paramSyntaxRegex: /^[\d-\s\w/\\]+$/
     rules: []
@@ -187,10 +187,10 @@ line_rules:
     rules: []
 required_instructions:
   - count: 1
-    description: 'Labels are needed to identify information about the docker image'
+    description: "Labels are needed to identify information about the docker image"
     instruction: LABEL
     level: error
-    message: 'No LABELs are defined'
+    message: "No LABELs are defined"
     reference_url:
-      - 'https://docs.docker.com/engine/reference/builder/'
-      - '#label'
+      - "https://docs.docker.com/engine/reference/builder/"
+      - "#label"