diff --git a/.detect_secrets_filters/azure_keyword_filter.py b/.detect_secrets_filters/azure_keyword_filter.py index 34693d8bf..c13703ead 100644 --- a/.detect_secrets_filters/azure_keyword_filter.py +++ b/.detect_secrets_filters/azure_keyword_filter.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Filters for `detect-secrets` pre-commit hook for Azure keywords.""" diff --git a/.detect_secrets_filters/ipynb_hash_filter.py b/.detect_secrets_filters/ipynb_hash_filter.py index 40ebd883e..3cd7d449e 100644 --- a/.detect_secrets_filters/ipynb_hash_filter.py +++ b/.detect_secrets_filters/ipynb_hash_filter.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Filters for `detect-secrets` pre-commit hook.""" diff --git a/.flake8 b/.flake8 index 48a9361fc..2c5c89b7a 100644 --- a/.flake8 +++ b/.flake8 @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. [flake8] max-line-length = 99 diff --git a/.github/.gitignore b/.github/.gitignore index 5fbf4d057..01650cfcb 100644 --- a/.github/.gitignore +++ b/.github/.gitignore @@ -2,19 +2,15 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. node_modules/** diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d25dbe6c7..38bcf1532 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # CODEOWNERS diff --git a/.github/actions/changelog/package-lock.json b/.github/actions/changelog/package-lock.json index 3c416683d..64f8eb558 100644 --- a/.github/actions/changelog/package-lock.json +++ b/.github/actions/changelog/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@actions/core": "^1.9.1", "@actions/github": "^5.0.3", - "semver": "^7.3.8" + "semver": "^7.5.2" }, "devDependencies": { "@vercel/ncc": "^0.34.0" @@ -212,9 +212,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -446,9 +446,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "requires": { "lru-cache": "^6.0.0" } diff --git a/.github/actions/changelog/package.json b/.github/actions/changelog/package.json index 8a9016467..e68f52beb 100644 --- a/.github/actions/changelog/package.json +++ b/.github/actions/changelog/package.json @@ -12,7 +12,7 @@ "dependencies": { "@actions/core": "^1.9.1", "@actions/github": "^5.0.3", - "semver": "^7.3.8" + "semver": "^7.5.2" }, "devDependencies": { "@vercel/ncc": "^0.34.0" diff --git a/.github/actions/version/action.yml b/.github/actions/version/action.yml index 793f16944..b07e4d26e 100644 --- a/.github/actions/version/action.yml +++ b/.github/actions/version/action.yml @@ -25,7 +25,7 @@ runs: using: "composite" steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ inputs.head_ref }} diff --git a/.github/workflows/action_build.yml b/.github/workflows/action_build.yml index 56a8a99a0..d8bb22450 100644 --- a/.github/workflows/action_build.yml +++ b/.github/workflows/action_build.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: NCC build @@ -28,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.COVALENT_OPS_BOT_TOKEN }} - name: Install npm, ncc, and jq on Ubuntu diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 7badd494f..c64161661 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: benchmark @@ -42,13 +38,13 @@ jobs: steps: - name: Check out head if: github.event_name == 'schedule' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false - name: Check out SHA if: github.event_name == 'workflow_dispatch' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false fetch-depth: 0 diff --git a/.github/workflows/boilerplate.yml b/.github/workflows/boilerplate.yml index a8e3a79ec..13a2f111a 100644 --- a/.github/workflows/boilerplate.yml +++ b/.github/workflows/boilerplate.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: boilerplate @@ -27,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Get changed files @@ -43,74 +39,62 @@ jobs: # # This file is part of Covalent. # - # Licensed under the GNU Affero General Public License 3.0 (the "License"). - # A copy of the License may be obtained with this software package or at - # - # https://www.gnu.org/licenses/agpl-3.0.en.html - # - # Use of this file is prohibited except in compliance with the License. Any - # modifications or derivative works of this file must retain this copyright - # notice, and modified files must contain a notice indicating that they have - # been altered from the originals. + # Licensed under the Apache License 2.0 (the "License"). A copy of the + # License may be obtained with this software package or at # - # Covalent is distributed in the hope that it will be useful, but WITHOUT - # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - # FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + # https://www.apache.org/licenses/LICENSE-2.0 # - # Relief from the License may be granted by purchasing a commercial license. + # Use of this file is prohibited except in compliance with the License. + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. boilerplate2022: |- # Copyright 2022 Agnostiq Inc. # # This file is part of Covalent. # - # Licensed under the GNU Affero General Public License 3.0 (the "License"). - # A copy of the License may be obtained with this software package or at + # Licensed under the Apache License 2.0 (the "License"). A copy of the + # License may be obtained with this software package or at # - # https://www.gnu.org/licenses/agpl-3.0.en.html + # https://www.apache.org/licenses/LICENSE-2.0 # - # Use of this file is prohibited except in compliance with the License. Any - # modifications or derivative works of this file must retain this copyright - # notice, and modified files must contain a notice indicating that they have - # been altered from the originals. - # - # Covalent is distributed in the hope that it will be useful, but WITHOUT - # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - # FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. - # - # Relief from the License may be granted by purchasing a commercial license. + # Use of this file is prohibited except in compliance with the License. + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. boilerplate2023: |- # Copyright 2023 Agnostiq Inc. # # This file is part of Covalent. # - # Licensed under the GNU Affero General Public License 3.0 (the "License"). - # A copy of the License may be obtained with this software package or at - # - # https://www.gnu.org/licenses/agpl-3.0.en.html - # - # Use of this file is prohibited except in compliance with the License. Any - # modifications or derivative works of this file must retain this copyright - # notice, and modified files must contain a notice indicating that they have - # been altered from the originals. + # Licensed under the Apache License 2.0 (the "License"). A copy of the + # License may be obtained with this software package or at # - # Covalent is distributed in the hope that it will be useful, but WITHOUT - # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - # FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + # https://www.apache.org/licenses/LICENSE-2.0 # - # Relief from the License may be granted by purchasing a commercial license. + # Use of this file is prohibited except in compliance with the License. + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. run: | for file in ${{ steps.changed-files.outputs.all_changed_files }}; do if [[ ! $( cat $file | tr -d '\r' ) =~ "$boilerplate2021" && ! $( cat $file | tr -d '\r' ) =~ "$boilerplate2022" && ! $( cat $file | tr -d '\r' ) =~ "$boilerplate2023" ]] ; then printf "Boilerplate is missing from $file.\n" - printf "The first 20 lines of $file are\n\n" - cat $file | tr -d '\r' | cat -ET | head -n 20 + printf "The first 15 lines of $file are\n\n" + cat $file | tr -d '\r' | cat -ET | head -n 15 printf "\nThe boilerplate should be\n\n" echo "$boilerplate" | cat -ET printf "\nThe diff is\n\n" - diff <(cat $file | tr -d '\r' | head -n 20) <(echo "$boilerplate") | cat -ET + diff <(cat $file | tr -d '\r' | head -n 15) <(echo "$boilerplate") | cat -ET exit 1 fi done diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 78d93d80a..9a3589671 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: changelog @@ -33,7 +29,7 @@ jobs: version: ${{ steps.changelog.outputs.version }} steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.COVALENT_OPS_BOT_TOKEN }} - uses: dorny/paths-filter@v2 diff --git a/.github/workflows/changelog_reminder.yml b/.github/workflows/changelog_reminder.yml index 099810234..4dc8e7a1e 100644 --- a/.github/workflows/changelog_reminder.yml +++ b/.github/workflows/changelog_reminder.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. on: pull_request_target diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1fe6ea2cc..0bf25eb03 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: CodeQL @@ -53,7 +49,7 @@ jobs: language: javascript steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: AgnostiqHQ/${{ matrix.repo }} - name: Initialize CodeQL diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 788caa0c2..831a9f6e4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: docker @@ -37,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out SHA - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false fetch-depth: 0 diff --git a/.github/workflows/hotfix.yml b/.github/workflows/hotfix.yml index 0ab91425a..0ed3eae5d 100644 --- a/.github/workflows/hotfix.yml +++ b/.github/workflows/hotfix.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: hotfix @@ -46,7 +42,7 @@ jobs: branch: ${{ github.event.ref }} stable: false - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - name: Hotfix version diff --git a/.github/workflows/license.yml b/.github/workflows/license.yml index a1c0f9995..b3af2577e 100644 --- a/.github/workflows/license.yml +++ b/.github/workflows/license.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: license @@ -29,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 8497d4f60..0a94e2bb2 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -2,27 +2,23 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: nightly on: schedule: - - cron: "0 4 * * *" + - cron: "0 */4 * * *" jobs: license: @@ -65,7 +61,7 @@ jobs: echo "::set-output name=tag::${latest_tag}" - name: Checkout default branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false @@ -105,7 +101,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: "master" diff --git a/.github/workflows/release-merge.yml b/.github/workflows/release-merge.yml index 59e3a3d87..85672e079 100644 --- a/.github/workflows/release-merge.yml +++ b/.github/workflows/release-merge.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: release-merge diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3495af411..86bbf065d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: release diff --git a/.github/workflows/release_candidate.yml b/.github/workflows/release_candidate.yml index 9679965fb..49197fee2 100644 --- a/.github/workflows/release_candidate.yml +++ b/.github/workflows/release_candidate.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: Prepare Release Candidate diff --git a/.github/workflows/requirements.yml b/.github/workflows/requirements.yml index d9bb5e71a..3ab5ffabe 100644 --- a/.github/workflows/requirements.yml +++ b/.github/workflows/requirements.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: requirements @@ -27,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false @@ -43,7 +39,7 @@ jobs: run: python -m pip install pip-check-reqs - name: Check extra core requirements - run: pip-extra-reqs -r werkzeug covalent covalent_dispatcher covalent_ui + run: pip-extra-reqs -r werkzeug covalent covalent_dispatcher covalent_ui --ignore-requirement=qiskit --ignore-requirement=qiskit-ibm-provider --ignore-requirement=amazon-braket-pennylane-plugin - name: Check missing SDK requirements run: > @@ -54,6 +50,7 @@ jobs: --ignore-file=covalent/executor/** --ignore-file=covalent/triggers/** --ignore-file=covalent/cloud_resource_manager/** + --ignore-file=covalent/quantum/qserver/** covalent - name: Check missing dispatcher requirements diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index c88bc74c2..1d93e40f9 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: stale diff --git a/.github/workflows/test_matrix.json b/.github/workflows/test_matrix.json index 7edb7a3bf..a6d1ddaf9 100644 --- a/.github/workflows/test_matrix.json +++ b/.github/workflows/test_matrix.json @@ -7,7 +7,8 @@ "experimental": false, "trigger": [ "schedule", - "workflow_dispatch" + "workflow_dispatch", + "pull_request" ] }, { diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7674fd121..a9befb923 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: tests @@ -44,7 +40,7 @@ jobs: matrix: ${{ steps.filter-matrix.outputs.matrix }} steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false @@ -72,7 +68,7 @@ jobs: steps: - name: Check out head if: github.event_name != 'workflow_dispatch' - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false @@ -80,7 +76,7 @@ jobs: if: > github.event_name == 'workflow_dispatch' && github.event.inputs.commit_sha - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: persist-credentials: false fetch-depth: 0 @@ -164,6 +160,12 @@ jobs: pip install --no-cache-dir -r ./requirements.txt pip install --no-cache-dir -r ./tests/requirements.txt + - name: Set up Node + if: env.NEED_FRONTEND || env.BUILD_AND_RUN_ALL + uses: actions/setup-node@v3 + with: + node-version-file: 'covalent_ui/webapp/.nvmrc' + - name: Build webapp if: env.NEED_FRONTEND || env.BUILD_AND_RUN_ALL uses: nick-fields/retry@v2 @@ -209,9 +211,9 @@ jobs: run: | covalent db migrate if [ "${{ matrix.backend }}" = 'dask' ] ; then - covalent start + covalent start -d elif [ "${{ matrix.backend }}" = 'local' ] ; then - covalent start --no-cluster + covalent start --no-cluster -d else echo "Invalid backend specified in test matrix." exit 1 @@ -219,12 +221,22 @@ jobs: env: COVALENT_EXECUTOR_DIR: doc/source/how_to/execution/custom_executors + - name: Run functional tests and measure coverage + id: functional-tests + if: env.BUILD_AND_RUN_ALL + run: PYTHONPATH=$PWD/ pytest -vvs --reruns=5 tests/functional_tests --cov=covalent --cov=covalent_dispatcher --cov-config=.coveragerc + + - name: Generate functional test coverage report + id: functional-coverage + if: steps.functional-tests.outcome == 'success' + run: coverage xml -o functional_tests_coverage.xml + - name: Run SDK tests and measure coverage id: sdk-tests if: > steps.modified-files.outputs.sdk == 'true' || env.BUILD_AND_RUN_ALL - run: PYTHONPATH=$PWD/ pytest -vv --reruns=5 tests/covalent_tests --cov=covalent --cov-config=.coveragerc + run: PYTHONPATH=$PWD/ pytest -vvs --reruns=5 tests/covalent_tests --cov=covalent --cov-config=.coveragerc - name: Generate SDK coverage report id: sdk-coverage @@ -236,29 +248,19 @@ jobs: if: > steps.modified-files.outputs.dispatcher == 'true' || env.BUILD_AND_RUN_ALL - run: PYTHONPATH=$PWD/ pytest -vv --reruns=5 tests/covalent_dispatcher_tests --cov=covalent_dispatcher --cov-config=.coveragerc + run: PYTHONPATH=$PWD/ pytest -vvs --reruns=5 tests/covalent_dispatcher_tests --cov=covalent_dispatcher --cov-config=.coveragerc - name: Generate dispatcher coverage report id: dispatcher-coverage if: steps.dispatcher-tests.outcome == 'success' run: coverage xml -o dispatcher_coverage.xml - - name: Run functional tests and measure coverage - id: functional-tests - if: env.BUILD_AND_RUN_ALL - run: PYTHONPATH=$PWD/ pytest -vv --reruns=5 tests/functional_tests --cov=covalent --cov=covalent_dispatcher --cov-config=.coveragerc - - - name: Generate functional test coverage report - id: functional-coverage - if: steps.functional-tests.outcome == 'success' - run: coverage xml -o functional_tests_coverage.xml - - name: Run UI backend tests and measure coverage id: ui-backend-tests if: > steps.modified-files.outputs.ui_backend == 'true' || env.BUILD_AND_RUN_ALL - run: PYTHONPATH=$PWD/ pytest -vv --reruns=5 tests/covalent_ui_backend_tests --cov=covalent_ui --cov-config=.coveragerc + run: PYTHONPATH=$PWD/ pytest -vvs --reruns=5 tests/covalent_ui_backend_tests --cov=covalent_ui --cov-config=.coveragerc - name: Generate UI backend coverage report id: ui-backend-coverage @@ -277,11 +279,7 @@ jobs: - name: Dump Covalent logs if: > steps.covalent_start.outcome == 'success' - && (steps.sdk-tests.outcome == 'failed' - || steps.dispatcher-tests.outcome == 'failed' - || steps.functional-tests.outcome == 'failed' - || steps.ui-backend-tests.outcome == 'failed' - || steps.ui-frontend-tests.outcome == 'failed') + && failure() run: covalent logs - name: Upload SDK report to Codecov diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 2263cb307..ed736356d 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. name: version @@ -27,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out head - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Validate Version diff --git a/.gitignore b/.gitignore index bc406e096..37729a0a9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Ignore everything * @@ -83,3 +79,12 @@ covalent_ui/api/sonar.sh # Ignore node dependencies node_modules/ + +# Yarn ignored and allowed files and folders +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7d50c7623..967ce5d72 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. exclude: ^(.git/|.tox/|CHANGELOG.md|VERSION) default_stages: [commit] diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 92b6f750c..ae9249b5c 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # .readthedocs.yml # Read the Docs configuration file diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d3c13ba1..7a382a245 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,120 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [UNRELEASED] +### Fixed + +- Contributing guidelines steps for installing for the first time +- Updated gitignore to ignore yarn files and folders for latest version of yarn + +### Operations + +- Changed `actions/checkout@v3` to `actions/checkout@v4` in CI +- Dependabot update to npm in changelog action +- Update tough-cookie to 4.1.3 version + +### Changed + +- Changed license to Apache + +## [0.229.0-rc.0] - 2023-09-22 + +### Authors + +- Andrew S. Rosen +- Alejandro Esquivel +- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> +- Co-authored-by: mpvgithub <107603631+mpvgithub@users.noreply.github.com> +- Co-authored-by: Manjunath PV +- Co-authored-by: Ara Ghukasyan +- Co-authored-by: Sankalp Sanand +- Co-authored-by: jackbaker1001 +- Co-authored-by: Santosh kumar <29346072+santoshkumarradha@users.noreply.github.com> +- Co-authored-by: Ara Ghukasyan <38226926+araghukas@users.noreply.github.com> +- Co-authored-by: Will Cunningham +- Co-authored-by: sriranjani venkatesan +- Co-authored-by: ArunPsiog +- Co-authored-by: Prasy12 +- Co-authored-by: Prasanna Venkatesh <54540812+Prasy12@users.noreply.github.com> +- FilipBolt + + +### Fixed + +- Formatted executor block under Qelectron job details to handle any class-type values +- Fixed test-cases to handle latest pydantic version changes +- Rsync command fixed to recursively copy files when using SSH +- Removed accidentally added migrations build files +- Updated migration script to add a default value for `qelectron_data_exists` in the `electrons` table since it cannot be nullable + +### Changed + +- Raised the minimum version of Pydantic from 1.10.1 to 2.1.1 in `requirements.txt` +- Electron DAL to use Covalent server's data instead of QServer's data. +- Renamed QCluster's `selector_serialized` attribute so it gets propagated to the qserver. +- Removed `orm_mode = True` in `covalent_ui/api/v1/models/dispatch_model.py` as it is deprecated in Pydantic 2 + +### Added + +- Added a `py.typed` file to support type-checking +- Corrected support from distributed Hamiltonian expval calculations +- Exposed qelectron db in sdk result object +- UI changes added for qelectrons and fix for related config file corruption +- UI fix regarding Qelectron not showing up +- Performance optimisation of UI for large Qelectrons + +## Tests + +- Changed the method for startup and shutdown events for pytest to work with fastapi version 0.93.0 +- Fixed test cases to adapt changes to SQLAlchemy version 1.4.49 +- Add tests for GUI frontend and backend. +- Skipped `tests/covalent_ui_backend_tests/end_points/summary_test.py::test_overview` until it gets fixed. + +### Docs + +- Fix autodoc for SSH, Slurm, AWS Braket, AWS Lambda, AWS EC2, AWS Batch, Google Batch +- Updated documentation links in README +- Added tutorial for redispatching workflows with Streamlit + +## [0.228.0-rc.0] - 2023-08-31 + +### Authors + +- Andrew S. Rosen +- Co-authored-by: Sankalp Sanand +- Will Cunningham +- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> +- Co-authored-by: Casey Jao +- WingCode +- Nick Tyler +- Co-authored-by: Alejandro Esquivel +- Aravind <100823292+Aravind-psiog@users.noreply.github.com> +- Co-authored-by: Manjunath PV +- Co-authored-by: ArunPsiog +- Co-authored-by: RaviPsiog +- Co-authored-by: Prasy12 +- Co-authored-by: mpvgithub <107603631+mpvgithub@users.noreply.github.com> +- Co-authored-by: Will Cunningham +- dwelsch-esi <116022979+dwelsch-esi@users.noreply.github.com> +- Co-authored-by: dwelsch-memverge +- Co-authored-by: kessler-frost +- Faiyaz Hasan +- Santosh kumar <29346072+santoshkumarradha@users.noreply.github.com> + +### Fixed + +- Fixed dispatcher address not showing when covalent server starts. +- Fixed the failing tests in the `nightly` workflow. + ### Operations +- Respecting node version as specified in `.nvmrc` file for tests workflow - Bumped versions in pre-commit config - Added prettier for markdown files. - Reduce the number of pinned version numbers in the `setup.py`, `requirements.txt`, and `requirements-client.txt` - Updated the `wci.yml` file with new features - Bumped pre-commit versions +- Temporarily running nightly hourly to test whether the fix worked +- Reverted to daily frequency for nightly ### Added @@ -28,8 +135,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enhanced the quickstart with a set of commonly used features - Removed duplicate "stop server" warning in the First Experimemnt page - Fixed typo in quickstart -- Fix autodoc for SSH, Slurm, AWS Braket, AWS Lambda, AWS EC2, AWS Batch, Google Batch -- Fix autodoc for SSH, Slurm, AWS Braket, AWS Lambda, AWS EC2, AWS Batch, Google Batch +- Fix autodoc for SSH, Slurm, AWS Braket, AWS Lambda, AWS EC2, AWS Batch, Google Batch - Updated documentation links in README - Updating and reorganizing RTD API documentation - Adding example links in API documentation @@ -40,7 +146,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - When the server is stopped, any workflows in a non-terminal state are first cancelled - Pinned sqlalchemy version with upper limit <2.0.0. - Added rich support to cli for better printing statements. -- Update tough-cookie to 4.1.3 version +- Performed minor modifications and rearrangementsto fix the broken tests in the `nightly` workflow. ### Tests @@ -50,6 +156,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed test cases to adapt changes to SQLAlchemy version 1.4.49 - Ignored remote file transfer how-to functional tests. - Skipping a UI backend test for now +- Fixed `test_decorated_function` test case in functional tests ### Fixed @@ -72,7 +179,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> - Co-authored-by: Casey Jao - ### Added - File transfer strategy for Azure blob storage @@ -142,7 +248,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Error messages are propagated to stdout when the server is not started. These changes are applied to `dispatch`, `redispatch`, and `get_result`. - ### Docs - Fix typo in GCP Batch executor RTD. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b7825af45..497fb2f89 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,11 +18,17 @@ conda create -n covalent-dev python=3.8 conda activate covalent-dev ``` +We recommend using [Node Version Manager](https://github.com/nvm-sh/nvm) to install and manage Node.js. Please install and activate Node.js version 16 to work with Covalent locally: +```shell +nvm install 16 +nvm use 16 +``` + Install Covalent's core requirements as well as the developer requirements: ```shell conda config --add channels conda-forge conda config --set channel_priority strict -conda install setuptools pip nodejs yarn requests +conda install setuptools pip yarn requests python setup.py webapp pip install -e . pip install -r tests/requirements.txt @@ -50,7 +56,7 @@ Contribution for Covalent UI ## Setup -- Install `node` (v16 or later) and `npm`: +- Install `node` (v16) and `npm`: ```shell # Linux @@ -165,21 +171,17 @@ All files submitted must contain the following before all other lines: # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at -# -# https://www.gnu.org/licenses/agpl-3.0.en.html -# -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. +# https://www.apache.org/licenses/LICENSE-2.0 # -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Single-sentence description of the file.""" ``` diff --git a/Dockerfile b/Dockerfile index 5f6ae5ade..e1562bf5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,21 +3,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. ####################### # Docker Build Options @@ -220,7 +216,7 @@ LABEL org.opencontainers.image.title="Covalent Build Environment" LABEL org.opencontainers.image.vendor="Agnostiq" LABEL org.opencontainers.image.url="https://covalent.xyz" LABEL org.opencontainers.image.documentation="https://covalent.readthedocs.io" -LABEL org.opencontainers.image.licenses="GNU AGPL v3" +LABEL org.opencontainers.image.licenses="Apache License 2.0" LABEL org.opencontainers.image.base.name="${COVALENT_BASE_IMAGE}" COPY --from=covalent_src $BUILDROOT/ $BUILDROOT @@ -259,7 +255,7 @@ LABEL org.opencontainers.image.vendor="Agnostiq" LABEL org.opencontainers.image.url="https://covalent.xyz" LABEL org.opencontainers.image.documentation="https://covalent.readthedocs.io" LABEL org.opencontainers.image.source="https://github.com/AgnostiqHQ/covalent" -LABEL org.opencontainers.image.licenses="GNU AGPL v3" +LABEL org.opencontainers.image.licenses="Apache License 2.0" LABEL org.opencontainers.image.created="${COVALENT_BUILD_DATE}" LABEL org.opencontainers.image.version="${COVALENT_BUILD_VERSION}" LABEL org.opencontainers.image.revision="${COVALENT_COMMIT_SHA}" diff --git a/LICENSE b/LICENSE index be3f7b28e..261eeb9e9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,661 +1,201 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/MANIFEST.in b/MANIFEST.in index dcc69da71..8d2699c53 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,8 @@ include VERSION include requirements.txt include requirements-client.txt -recursive-include covalent/executor/executor_plugins/ * +include covalent/py.typed +recursive-include covalent/executor/ * recursive-include covalent_dispatcher/_service/ * recursive-include covalent_migrations/ * recursive-exclude covalent_ui/webapp/ * diff --git a/README.md b/README.md index fbba2e13a..85cf21d1b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ [![tests](https://github.com/AgnostiqHQ/covalent/actions/workflows/tests.yml/badge.svg)](https://github.com/AgnostiqHQ/covalent/actions/workflows/tests.yml) [![docs](https://readthedocs.org/projects/covalent/badge/?version=latest)](https://covalent.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/AgnostiqHQ/covalent/branch/master/graph/badge.svg?token=YGHCB3DE4P)](https://codecov.io/gh/AgnostiqHQ/covalent) -[![agpl](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0.en.html) +[![apache](https://img.shields.io/badge/License-Apache_License_2.0-blue)](https://www.apache.org/licenses/LICENSE-2.0) @@ -135,7 +135,7 @@ Please use the following citation in any publications: ## 📃 License -Covalent is licensed under the GNU Affero GPL 3.0 License. Covalent may be distributed under other licenses upon request. See the [LICENSE](https://github.com/AgnostiqHQ/covalent/blob/master/LICENSE) file or contact the [support team](mailto:support@agnostiq.ai) for more details. +Covalent is licensed under the Apache 2.0 License. See the [LICENSE](https://github.com/AgnostiqHQ/covalent/blob/master/LICENSE) file or contact the [support team](mailto:support@agnostiq.ai) for more details. >For a detailed history of changes and new features, see the [Changelog](https://github.com/AgnostiqHQ/covalent/blob/master/CHANGELOG.md). diff --git a/VERSION b/VERSION index 2434e02d8..4e60c3cb7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.227.0-rc.0 \ No newline at end of file +0.229.0-rc.0 \ No newline at end of file diff --git a/build/lib/covalent_migrations/README.md b/build/lib/covalent_migrations/README.md deleted file mode 100644 index d9acaf833..000000000 --- a/build/lib/covalent_migrations/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# DB Migration Guide - -## Getting Started & Running Migrations - -Whenever merging other branches into your working branch always remember to run migrations as the database schema may have changed. - -In order to update the DB to reflect the most up to date DB models we run the migrations (that have not yet run) as such: - -```bash -covalent db alembic upgrade head -``` - -To see history of which migrations we have run we can execute - -```bash -covalent db alembic history -``` - -## Autogenerate Migrations - -To generate new migrations as a result of editing our DB model files, we can run the following - -```bash -covalent db alembic revision --autogenerate -m "Description of DB update" -``` - - -You should see a new python file generated under `alembic/versions`. Also, there should be a table name in the database called `alembic_version` which will keep track of which migrations have run corresponding to the filenames in `alembic/versions`. - -> The python files in `alembic/versions` contain an `upgrade()` method which will sync our database schema with our DB models `covalent/_data_store/models.py`. Furthermore, it contains a `downgrade()` command which will undo the operations performed by `upgrade()`. We do not explicitly call these methods, this is done by the alembic cli. - - -## Generate Template Migration - -To create a migration file which will be edited manually, one can run: - -```bash -covalent db alembic revision -m "my custom migration file" -``` - -## Undo Migrations - -To undo the last migration we can run - -```bash -covalent db alembic downgrade -1 -``` - -Alternatively we can specify the exact version which we want to revert to (we can use `alembic history` for this) - -```bash -covalent db alembic downgrade 1ed41b6d3f3f -``` diff --git a/build/lib/covalent_migrations/alembic.ini b/build/lib/covalent_migrations/alembic.ini deleted file mode 100644 index 681429ed9..000000000 --- a/build/lib/covalent_migrations/alembic.ini +++ /dev/null @@ -1,106 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = covalent_migrations - -# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s -# Uncomment the line below if you want the files to be prepended with date and time -# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file -# for all available tokens -# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s - -# sys.path path, will be prepended to sys.path if present. -# defaults to the current working directory. -prepend_sys_path = . - -# timezone to use when rendering the date within the migration file -# as well as the filename. -# If specified, requires the python-dateutil library that can be -# installed by adding `alembic[tz]` to the pip requirements -# string value is passed to dateutil.tz.gettz() -# leave blank for localtime -# timezone = - -# max length of characters to apply to the -# "slug" field -# truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -# version location specification; This defaults -# to alembic/versions. When using multiple version -# directories, initial revisions must be specified with --version-path. -# The path separator used here should be the separator specified by "version_path_separator" below. -# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions - -# version path separator; As mentioned above, this is the character used to split -# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. -# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. -# Valid values for version_path_separator are: -# -# version_path_separator = : -# version_path_separator = ; -# version_path_separator = space -version_path_separator = os # Use os.pathsep. Default configuration used for new projects. - -# the output encoding used when revision files -# are written from script.py.mako -# output_encoding = utf-8 - -# pragma: allowlist nextline secret -# sqlalchemy.url = driver://user:pass@localhost/dbname - - -[post_write_hooks] -# post_write_hooks defines scripts or Python functions that are run -# on newly generated revision scripts. See the documentation for further -# detail and examples - -# format using "black" - use the console_scripts runner, against the "black" entrypoint -# hooks = black -# black.type = console_scripts -# black.entrypoint = black -# black.options = -l 79 REVISION_SCRIPT_FILENAME - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/codecov.yml b/codecov.yml index b8f83e56f..f6077bf75 100644 --- a/codecov.yml +++ b/codecov.yml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. flags: SDK: diff --git a/covalent/.gitignore b/covalent/.gitignore index 03680862f..1c56f7a7a 100644 --- a/covalent/.gitignore +++ b/covalent/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Ignore results folders results/** diff --git a/covalent/__init__.py b/covalent/__init__.py index 613487d1c..66c4736ed 100644 --- a/covalent/__init__.py +++ b/covalent/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Main Covalent public functionality.""" @@ -42,6 +38,9 @@ lattice, ) from ._workflow.electron import wait # nopycln: import +from ._workflow.qelectron import qelectron # nopycln: import +from .executor.utils import get_context # nopycln: import +from .quantum import QCluster # nopycln: import __all__ = [s for s in dir() if not s.startswith("_")] diff --git a/covalent/_dispatcher_plugins/__init__.py b/covalent/_dispatcher_plugins/__init__.py index 83d679e10..d497d7c28 100644 --- a/covalent/_dispatcher_plugins/__init__.py +++ b/covalent/_dispatcher_plugins/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .base import BaseDispatcher from .local import LocalDispatcher diff --git a/covalent/_dispatcher_plugins/base.py b/covalent/_dispatcher_plugins/base.py index 278ac8820..bc6278bc3 100644 --- a/covalent/_dispatcher_plugins/base.py +++ b/covalent/_dispatcher_plugins/base.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from abc import ABC, abstractmethod from typing import Any diff --git a/covalent/_dispatcher_plugins/local.py b/covalent/_dispatcher_plugins/local.py index 02d6dc177..b3a82e296 100644 --- a/covalent/_dispatcher_plugins/local.py +++ b/covalent/_dispatcher_plugins/local.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json from copy import deepcopy diff --git a/covalent/_file_transfer/__init__.py b/covalent/_file_transfer/__init__.py index c63076a5c..f6a54eac0 100644 --- a/covalent/_file_transfer/__init__.py +++ b/covalent/_file_transfer/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .enums import Order from .file import File diff --git a/covalent/_file_transfer/enums.py b/covalent/_file_transfer/enums.py index 6353da085..063ba179a 100644 --- a/covalent/_file_transfer/enums.py +++ b/covalent/_file_transfer/enums.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import enum diff --git a/covalent/_file_transfer/file.py b/covalent/_file_transfer/file.py index 5a867e2e9..9b7d2b709 100644 --- a/covalent/_file_transfer/file.py +++ b/covalent/_file_transfer/file.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import uuid from pathlib import Path diff --git a/covalent/_file_transfer/file_transfer.py b/covalent/_file_transfer/file_transfer.py index 9fa04f07e..712ed2c6e 100644 --- a/covalent/_file_transfer/file_transfer.py +++ b/covalent/_file_transfer/file_transfer.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import Optional, Union diff --git a/covalent/_file_transfer/folder.py b/covalent/_file_transfer/folder.py index 36b526935..2b8c180de 100644 --- a/covalent/_file_transfer/folder.py +++ b/covalent/_file_transfer/folder.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import Optional diff --git a/covalent/_file_transfer/strategies/__init__.py b/covalent/_file_transfer/strategies/__init__.py index c2a7ba0ad..392ac8bd5 100644 --- a/covalent/_file_transfer/strategies/__init__.py +++ b/covalent/_file_transfer/strategies/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .http_strategy import HTTP from .rsync_strategy import Rsync diff --git a/covalent/_file_transfer/strategies/blob_strategy.py b/covalent/_file_transfer/strategies/blob_strategy.py index 1da3366b0..0fb6a2afa 100644 --- a/covalent/_file_transfer/strategies/blob_strategy.py +++ b/covalent/_file_transfer/strategies/blob_strategy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from pathlib import Path from typing import Callable, Tuple diff --git a/covalent/_file_transfer/strategies/gcloud_strategy.py b/covalent/_file_transfer/strategies/gcloud_strategy.py index f98adf7c3..22884d73b 100644 --- a/covalent/_file_transfer/strategies/gcloud_strategy.py +++ b/covalent/_file_transfer/strategies/gcloud_strategy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json from pathlib import Path diff --git a/covalent/_file_transfer/strategies/http_strategy.py b/covalent/_file_transfer/strategies/http_strategy.py index b6c1a259b..3e86dd9e3 100644 --- a/covalent/_file_transfer/strategies/http_strategy.py +++ b/covalent/_file_transfer/strategies/http_strategy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import urllib.request diff --git a/covalent/_file_transfer/strategies/rsync_strategy.py b/covalent/_file_transfer/strategies/rsync_strategy.py index f445260c5..48ab4132f 100644 --- a/covalent/_file_transfer/strategies/rsync_strategy.py +++ b/covalent/_file_transfer/strategies/rsync_strategy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from subprocess import PIPE, CalledProcessError, Popen @@ -58,9 +54,9 @@ def get_rsync_ssh_cmd( remote_filepath = remote_file.filepath args = ["rsync"] if self.private_key_path: - args.append(f'-e "ssh -i {self.private_key_path}"') + args.append(f'-ae "ssh -i {self.private_key_path}"') else: - args.append("-e ssh") + args.append("-ae ssh") remote_source = f"{self.user}@{self.host}:{remote_filepath}" diff --git a/covalent/_file_transfer/strategies/s3_strategy.py b/covalent/_file_transfer/strategies/s3_strategy.py index e49e370f5..7431ad03f 100644 --- a/covalent/_file_transfer/strategies/s3_strategy.py +++ b/covalent/_file_transfer/strategies/s3_strategy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os diff --git a/covalent/_file_transfer/strategies/transfer_strategy_base.py b/covalent/_file_transfer/strategies/transfer_strategy_base.py index 7e80503c7..8d95c6d59 100644 --- a/covalent/_file_transfer/strategies/transfer_strategy_base.py +++ b/covalent/_file_transfer/strategies/transfer_strategy_base.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from abc import ABC, abstractmethod from pathlib import Path diff --git a/covalent/_results_manager/__init__.py b/covalent/_results_manager/__init__.py index 8b525a5e0..b2a49b352 100644 --- a/covalent/_results_manager/__init__.py +++ b/covalent/_results_manager/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from . import results_manager diff --git a/covalent/_results_manager/qresult.py b/covalent/_results_manager/qresult.py new file mode 100644 index 000000000..f77a24fb6 --- /dev/null +++ b/covalent/_results_manager/qresult.py @@ -0,0 +1,110 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Any + +import pennylane as qml +from pennylane.tape import QuantumTape + +from .._shared_files.qresult_utils import re_execute +from ..quantum.qclient.core import middleware + + +class QNodeFutureResult: + """ + A class that stores the `batch_id` of a batch of circuits submitted to the + middleware. The `result` method can then be called to retrieve the results. + + Attributes: + device: The Pennylane device used by the original QNode. + interface: The interface of the original QNode. + diff_method: The differentiation method of the original QNode. + qfunc_output: The return value (measurement definition) of the original QNode. + """ + + def __init__( + self, + batch_id: str, + interface: str, + original_qnode: qml.QNode, + original_tape: QuantumTape, + ): + """ + Initialize a `QNodeFutureResult` instance. + + Args: + batch_id: A UUID that identifies a batch of circuits submitted to + the middleware. + """ + self.batch_id = batch_id + self.interface = interface # NOT the original QNode's interface + + # Required for batch_transforms and correct output typing. + self.device = original_qnode.device + self.qnode = original_qnode + self.tape = original_tape + + self.args = None + self.kwargs = None + self._result = None + + def __call__(self, *args, **kwargs): + """ + Store the arguments and keyword arguments of the original QNode call. + """ + self.args = args + self.kwargs = kwargs + return self + + def result(self) -> Any: + """ + Retrieve the results for the given `batch_id` from middleware. This method + is blocking until the results are available. + + Returns: + The results of the circuit execution. + """ + + if self._result is None: + # Get raw results from the middleware. + results = middleware.get_results(self.batch_id) + + # Required correct gradient post-processing in some cases. + if self.interface == "autograd": + self._result = results + res = results[0] + + if self.interface != "numpy": + interface = self.interface # re-execute with any non-numpy interface + res = results[0] # re-execute with this result + + elif self.qnode.interface is None: + interface = None + res = results[0] + + elif self.qnode.interface == "auto": + interface = "auto" + res = results + + else: + # Skip re-execution. + self._result = results + return results + + args, kwargs = self.args, self.kwargs + self._result = re_execute(res, self.qnode, self.tape)(interface, *args, **kwargs) + + return self._result diff --git a/covalent/_results_manager/result.py b/covalent/_results_manager/result.py index ff8401858..00eacf5b5 100644 --- a/covalent/_results_manager/result.py +++ b/covalent/_results_manager/result.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Result object.""" import os @@ -27,9 +23,11 @@ from .._shared_files.config import get_config from .._shared_files.context_managers import active_lattice_manager from .._shared_files.defaults import postprocess_prefix, prefix_separator, sublattice_prefix +from .._shared_files.qelectron_utils import QE_DB_DIRNAME from .._shared_files.util_classes import RESULT_STATUS, Status from .._workflow.lattice import Lattice from .._workflow.transport import TransportableObject +from ..quantum.qserver import database as qe_db if TYPE_CHECKING: from .._shared_files.util_classes import Status @@ -263,6 +261,7 @@ def get_node_result(self, node_id: int) -> dict: "end_time": self.lattice.transport_graph.get_node_value(node_id, "end_time"), "status": self._get_node_status(node_id), "output": self._get_node_output(node_id), + "qelectron": self._get_node_qelectron_data(node_id), "error": self.lattice.transport_graph.get_node_value(node_id, "error"), "sublattice_result": self.lattice.transport_graph.get_node_value( node_id, "sublattice_result" @@ -372,6 +371,27 @@ def _get_node_output(self, node_id: int) -> Any: """ return self._lattice.transport_graph.get_node_value(node_id, "output") + def _get_node_qelectron_data(self, node_id: int) -> dict: + """ + Return all QElectron data associated with a node. + + Args: + node_id: The node id. + + Returns: + The QElectron data of said node. Will return None if no data exists. + """ + try: + # Checks existence of QElectron data. + self._lattice.transport_graph.get_node_value(node_id, "qelectron_data_exists") + except KeyError: + return None + + results_dir = get_config("dispatcher")["results_dir"] + db_dir = os.path.join(results_dir, self.dispatch_id, QE_DB_DIRNAME) + + return qe_db.Database(db_dir).get_db(dispatch_id=self.dispatch_id, node_id=node_id) + def _get_node_error(self, node_id: int) -> Union[None, str]: """ Return the error of a node. @@ -407,6 +427,7 @@ def _update_node( sublattice_result: "Result" = None, stdout: str = None, stderr: str = None, + qelectron_data_exists: bool = False, ) -> None: """ Update the node result in the transport graph. @@ -423,6 +444,7 @@ def _update_node( sublattice_result: The result of the sublattice if any. stdout: The stdout of the node execution. stderr: The stderr of the node execution. + qelectron_data_exists: Flag indicating presence of Qelectron(s) inside the task Returns: None @@ -464,6 +486,11 @@ def _update_node( if stderr is not None: self.lattice.transport_graph.set_node_value(node_id, "stderr", stderr) + if qelectron_data_exists: + self.lattice.transport_graph.set_node_value( + node_id, "qelectron_data_exists", qelectron_data_exists + ) + app_log.debug("Inside update node - SUCCESS") def _convert_to_electron_result(self) -> Any: diff --git a/covalent/_results_manager/results_manager.py b/covalent/_results_manager/results_manager.py index 2a8577779..bc7175480 100644 --- a/covalent/_results_manager/results_manager.py +++ b/covalent/_results_manager/results_manager.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import codecs diff --git a/covalent/_results_manager/utils.py b/covalent/_results_manager/utils.py index d1910977c..949d0378b 100644 --- a/covalent/_results_manager/utils.py +++ b/covalent/_results_manager/utils.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Utility functions for results manager.""" diff --git a/covalent/_results_manager/wait.py b/covalent/_results_manager/wait.py index cbbb83022..7400fe427 100644 --- a/covalent/_results_manager/wait.py +++ b/covalent/_results_manager/wait.py @@ -1,20 +1,19 @@ -# This file is part of Covalent. -# -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Copyright 2021 Agnostiq Inc. # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# This file is part of Covalent. # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. +# https://www.apache.org/licenses/LICENSE-2.0 # -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import sys from dataclasses import dataclass @@ -28,6 +27,7 @@ def __int__(self) -> int: return self.RETRIES +SHORT = Wait(30) LONG = Wait(3000) VERY_LONG = Wait(60000) EXTREME = Wait(sys.maxsize) diff --git a/covalent/_shared_files/__init__.py b/covalent/_shared_files/__init__.py index 52004d44f..d8cbf8ce7 100644 --- a/covalent/_shared_files/__init__.py +++ b/covalent/_shared_files/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Import shared utils.""" diff --git a/covalent/_shared_files/config.py b/covalent/_shared_files/config.py index 3bc9c16bb..57c5eb4f3 100644 --- a/covalent/_shared_files/config.py +++ b/covalent/_shared_files/config.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os diff --git a/covalent/_shared_files/context_managers.py b/covalent/_shared_files/context_managers.py index 6e1953ef8..05d852127 100644 --- a/covalent/_shared_files/context_managers.py +++ b/covalent/_shared_files/context_managers.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Covalent context managers.""" diff --git a/covalent/_shared_files/defaults.py b/covalent/_shared_files/defaults.py index 0f706e8df..81b4b4e6d 100644 --- a/covalent/_shared_files/defaults.py +++ b/covalent/_shared_files/defaults.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Create custom sentinels and defaults for Covalent""" @@ -90,6 +86,11 @@ def get_default_dispatcher_config(): (os.environ.get("XDG_DATA_HOME") or (os.environ["HOME"] + "/.local/share")) + "/covalent/dispatcher_db.sqlite" ), + "qelectron_db_path": os.environ.get("COVALENT_DATABASE") + or ( + (os.environ.get("XDG_DATA_HOME") or (os.environ["HOME"] + "/.local/share")) + + "/covalent/qelectron_db" + ), "heartbeat_interval": os.environ.get("COVALENT_HEARTBEAT_INTERVAL") or 5, "heartbeat_file": os.environ.get("COVALENT_HEARTBEAT_FILE") or os.path.join( diff --git a/covalent/_shared_files/exceptions.py b/covalent/_shared_files/exceptions.py index c7a097975..25315e1bb 100644 --- a/covalent/_shared_files/exceptions.py +++ b/covalent/_shared_files/exceptions.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. class MissingLatticeRecordError(Exception): diff --git a/covalent/_shared_files/logger.py b/covalent/_shared_files/logger.py index ccf57b5fb..4ddbccd0b 100644 --- a/covalent/_shared_files/logger.py +++ b/covalent/_shared_files/logger.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Module for logging errors, warnings, and debug statements.""" diff --git a/covalent/_shared_files/metrics.py b/covalent/_shared_files/metrics.py index 56e76f0bf..68acfb7aa 100644 --- a/covalent/_shared_files/metrics.py +++ b/covalent/_shared_files/metrics.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import platform diff --git a/covalent/_shared_files/pickling.py b/covalent/_shared_files/pickling.py new file mode 100644 index 000000000..ed4a535ce --- /dev/null +++ b/covalent/_shared_files/pickling.py @@ -0,0 +1,91 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=invalid-name + +"""Hopefully temporary custom tools to handle pickling and/or un-pickling.""" + +from contextlib import contextmanager +from typing import Any, Callable, Tuple + +from pennylane.ops.qubit.observables import Projector + +_PENNYLANE_METHOD_OVERRIDES = ( + # class, method_name, method_func + (Projector, "__reduce__", lambda self: (Projector, (self.data[0], self.wires))), +) + + +def _qml_mods_pickle(func: Callable) -> Callable: + """ + A decorator that applies overrides to select PennyLane objects, making them + pickleable and/or un-pickleable in the local scope. + """ + + def _wrapper(*args, **kwargs): + with _method_overrides(_PENNYLANE_METHOD_OVERRIDES): + return func(*args, **kwargs) + + return _wrapper + + +@contextmanager +def _method_overrides(overrides: Tuple[Any, str, Callable]) -> None: + """ + Creates a context where all `overrides` are applied on entry and un-applied on exit. + """ + + unapply_overrides = None + try: + unapply_overrides = _apply_method_overrides(overrides) + yield + finally: + unapply_overrides() + + +def _apply_method_overrides(overrides: Tuple[Any, str, Callable]) -> Callable: + """ + This function is called by the `_method_overrides()` context manager. + + It applies the overrides in `_METHOD_OVERRIDES` to the corresponding objects + and returns a function that can later restore those objects. + """ + + restoration_list = [] + for cls, method_name, func in overrides: + # Attribute will be deleted later if `attr` is a length-1 tuple. + attr = (method_name,) + if hasattr(cls, method_name): + # Attribute will be restored later to the corresponding method. + attr += (getattr(cls, method_name),) + + # Store attribute information. + restoration_list.append(attr) + + # Use `func` to create or replace the method by name. + setattr(cls, method_name, func) + + def _unapply_overrides(): + for attr in restoration_list: + # Here `attr` is `(method_name,)` or `(method_name, original_func)`. + if len(attr) == 1: + # Delete attribute that did not exist before. + delattr(cls, attr[0]) + else: + # Restore original attribute. + setattr(cls, attr[0], attr[1]) + + return _unapply_overrides diff --git a/covalent/_shared_files/qelectron_utils.py b/covalent/_shared_files/qelectron_utils.py new file mode 100644 index 000000000..4b5e58748 --- /dev/null +++ b/covalent/_shared_files/qelectron_utils.py @@ -0,0 +1,137 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import base64 +import re +from pathlib import Path +from typing import Tuple + +from ..executor.utils.context import get_context +from .config import get_config +from .logger import app_log + +_QE_DB_DATA_MARKER = "<====QELECTRON_DB_DATA====>" +_DATA_FILENAME = "data.mdb" + +QE_DB_DIRNAME = ".database" + + +def print_qelectron_db() -> None: + """ + Check for QElectron database file and dump it into stdout + + Args(s) + None + + Return(s) + None + """ + context = get_context() + node_id, dispatch_id = context.node_id, context.dispatch_id + + db_dir = Path(get_config("dispatcher")["qelectron_db_path"]).resolve() + task_subdir = db_dir / dispatch_id / f"node-{node_id}" + if not task_subdir.exists(): + # qelectron database not found for dispatch_id/node + return + + with open(task_subdir / _DATA_FILENAME, "rb") as data_mdb_file: + data_bytes = base64.b64encode(data_mdb_file.read()) + + output_string = "".join([_QE_DB_DATA_MARKER, data_bytes.decode(), _QE_DB_DATA_MARKER]) + app_log.debug(f"Printing Qelectron data for node_id {node_id}") + print(output_string) + + +def extract_qelectron_db(s: str) -> Tuple[str, bytes]: + """ + Detect Qelectron data in `s` and process into dict if found + + Arg(s): + s: captured stdout string from a node in the transport graph + + Return(s): + s_without_db: captured stdout string without Qelectron data + bytes_data: bytes representing the `data.mdb` file + """ + # do nothing if string is empty or no database bytes found in the `s` + data_pattern = f".*{_QE_DB_DATA_MARKER}(.*){_QE_DB_DATA_MARKER}.*" + if not s or not (_matches := re.findall(data_pattern, s)): + app_log.debug("No Qelectron data detected") + return s, b"" + + # load qelectron data and convert back to bytes + app_log.debug("Detected Qelectron output data") + bytes_data = base64.b64decode(_matches.pop()) + + # remove decoded database bytes from `s` + s_without_db = remove_qelectron_db(s) + + return s_without_db, bytes_data + + +def remove_qelectron_db(output: str): + """ + Replace the Qelectron DB string in `s` with the empty string. + + Arg: + output: captured stdout string + + Return: + the output string without QElectron database removed + """ + output = re.sub(f"{_QE_DB_DATA_MARKER}.*{_QE_DB_DATA_MARKER}", "", output) + return output.strip() + + +def write_qelectron_db( + dispatch_id: str, + node_id: int, + bytes_data: bytes, +) -> None: + """ + Reproduces the Qelectron database inside the results_dir sub-directory for + given dispatch and node IDs. + + That is, creates the tree + + covalent + └── data + └── + └── .database + └── # redundant hierarchy here to mimic QServer DB + └── + └── data.mdb + + inside the `results_dir/dispatch_id`. + """ + results_dir = Path(get_config("dispatcher")["results_dir"]).resolve() + + # create the database directory if it does not exist + qelectron_db_dir = results_dir / dispatch_id / QE_DB_DIRNAME + if not qelectron_db_dir.exists(): + qelectron_db_dir.mkdir() + + # create node subdirectory if it does not exist + node_dir = qelectron_db_dir / dispatch_id / f"node-{node_id}" + if not node_dir.exists(): + node_dir.mkdir(parents=True) + + # write 'data.mdb' file + data_mdb_path = node_dir / _DATA_FILENAME + app_log.debug(f"Writing Qelectron database file {str(data_mdb_path)}") + with open(data_mdb_path, "wb") as data_mdb_file: + data_mdb_file.write(bytes_data) diff --git a/covalent/_shared_files/qinfo.py b/covalent/_shared_files/qinfo.py new file mode 100644 index 000000000..92056173b --- /dev/null +++ b/covalent/_shared_files/qinfo.py @@ -0,0 +1,62 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""QNode and QElectron information containers.""" + +from typing import Any, Dict, Optional, Sequence, Union + +from pydantic import BaseModel # pylint: disable=no-name-in-module + + +class QNodeSpecs(BaseModel): + """ + A container for the specifications of a QNode generated by `qml.specs`. + """ + + gate_sizes: Dict[int, int] + gate_types: Dict[str, int] + num_operations: int + num_observables: int + num_diagonalizing_gates: int + num_used_wires: int + depth: int + num_trainable_params: int = None + num_device_wires: int + device_name: str + diff_method: Optional[str] + expansion_strategy: str + gradient_options: Dict[str, int] + interface: Optional[str] + gradient_fn: Any # can be string or `qml.gradients.gradient_transform` + num_gradient_executions: Any = 0 + num_parameter_shift_executions: int = None + + +class QElectronInfo(BaseModel): + """ + A container for global and QNode device settings. + """ + + name: str + description: Optional[str] = None + device_name: str # name of the original device, e.g. "default.qubit" + device_import_path: str # used to inherit type converters and other methods + device_shots: Union[ + None, int, Sequence[int], Sequence[Union[int, Sequence[int]]] + ] # optional default for execution devices + device_shots_type: Any = None + device_wires: int # this can not be reliably inferred from tapes alone + pennylane_active_return: bool # client-side status of `pennylane.active_return()` diff --git a/covalent/_shared_files/qresult_utils.py b/covalent/_shared_files/qresult_utils.py new file mode 100644 index 000000000..9ffe3c182 --- /dev/null +++ b/covalent/_shared_files/qresult_utils.py @@ -0,0 +1,188 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import warnings +from typing import Any, Callable, List, Optional + +import pennylane as qml +from pennylane import transforms +from pennylane.measurements import ExpectationMP +from pennylane.tape import QuantumTape + +from .._workflow.qdevice import QEDevice +from .utils import get_original_shots + + +def re_execute( + results: Any, + qnode: qml.QNode, + tape: QuantumTape, +) -> Callable: + """ + Send the QElectron QNode's result through a "shell" QNode to achieve correct typing + and shape transformations. + + This is necessary because the QEDevice can not support 'passthru_devices' in + its capabilities, since that would circumvent its custom `batch_execute` method. + """ + + def re_execute_wrapper(interface, *args, **kwargs): + circuit = shell_circuit_factory(results, qnode, tape, interface) + return circuit(*args, **kwargs) + + return re_execute_wrapper + + +def shell_circuit_factory( + results: Any, + qnode: qml.QNode, + tape: QuantumTape, + interface: Optional[str], +) -> qml.QNode: + """ + Returns a circuit that does nothing but transform and return the results. + """ + + dev = shell_device_factory(results, qnode, tape, interface) + + # Define a dummy circuit that returns the original QNode's return value. + @qml.qnode(dev, interface=qnode.interface, diff_method=qnode.diff_method) + def _circuit(*_, **__): + return tape._qfunc_output # pylint: disable=protected-access + + return _circuit + + +def shell_device_factory( + results: Any, + qnode: qml.QNode, + original_tape: QuantumTape, + interface: Optional[str], +) -> qml.Device: + """ + Returns an instance of a new class that inherits from the original QNode's device class. + """ + + default_capabilities = QEDevice.capabilities().copy() + + # Conditional override of the device's capabilities to accommodate interface. + overriden_capabilities = _override_capabilities(results, interface, default_capabilities) + + class _ShellDevice(qnode.device.__class__): + # pylint: disable=too-few-public-methods + + def batch_execute(self, circuits): + """ + Override to return expected result. + """ + return _reshape_for_interface(interface, circuits, results) + + def batch_transform(self, tape): + """ + Ignore blank circuit and run batch transform on original tape. + """ + + # Conditional lifted from `qml.transforms.hamiltonian_expand`. + if not ( + len(original_tape.measurements) != 1 + or not isinstance(original_tape.measurements[0].obs, qml.Hamiltonian) + or not isinstance(original_tape.measurements[0], ExpectationMP) + ): + # Apply batch transform for Hamiltonian expvals. + return transforms.hamiltonian_expand(original_tape) + + if original_tape.output_dim > 1: + res = results if hasattr(results, "__len__") else [[r] for r in results] + return [tape], lambda _, **kw: res + + # Apply identity transform. + return [tape], lambda _, **kw: results + + @classmethod + def capabilities(cls): + """ + Copy the QElectron Device capabilities to avoid passthru devices and + overload using `diff_method="backprop` and associated transform with + default settings. + """ + if overriden_capabilities is None: + return QEDevice.capabilities().copy() + return overriden_capabilities.copy() + + # Recreate device with original number of wires. + dev = _ShellDevice(wires=qnode.device.num_wires, shots=1) + + # Use the `shots` property setter on `qml.Device` to set the shots or shot vector. + dev.shots = get_original_shots(qnode.device) # pylint: disable=attribute-defined-outside-init + + return dev + + +def _override_capabilities( + results: Any, interface: str, default_capabilities: dict +) -> Optional[dict]: + """ + Implements interface-based conditional overrides for device capabilities. + """ + if interface in {None, "auto", "numpy", "autograd"}: + # No override necessary. + return default_capabilities + + # Require passthrough for some interfaces. + if interface == "torch": + if isinstance(results, list) or results.ndim == 0: + return { + "model": "qubit", + "passthru_interface": "torch", + } + return default_capabilities + + if interface == "jax": + return { + "model": "qubit", + "passthru_interface": "jax", + } + + warnings.warn(f"Skipped capabilities override. No logic defined for '{interface}' interface") + return default_capabilities + + +def _reshape_for_interface(interface: str, circuits: List[QuantumTape], results: Any): + """ + Reshape or re-package the return value in an interface-specific way to satisfy + expected shape or type requirements in Pennylane's execution pipeline. + """ + + if interface in {"auto", "numpy"}: + # More than one circuit and more than one result. + if len(circuits) > 1 and hasattr(results, "__len__") and len(results) > 1: + return [[r] for r in results] + + # Results is a 0-dimensional array. + if hasattr(results, "ndim") and results.ndim == 0: + return [results] + + # No reshaping required. + return results + + if interface in {None, "autograd", "torch", "jax"}: + # Ensure result is a list. + if isinstance(results, list): + return results + return [results] + + warnings.warn(f"Skipped reshaping result. No logic defined for '{interface}' interface") + return results diff --git a/covalent/_shared_files/util_classes.py b/covalent/_shared_files/util_classes.py index 1bbdd566a..06ffadc6a 100644 --- a/covalent/_shared_files/util_classes.py +++ b/covalent/_shared_files/util_classes.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from dataclasses import dataclass diff --git a/covalent/_shared_files/utils.py b/covalent/_shared_files/utils.py index dbbb31359..5d6eec796 100644 --- a/covalent/_shared_files/utils.py +++ b/covalent/_shared_files/utils.py @@ -2,31 +2,32 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """General utils for Covalent.""" +import importlib import inspect import socket from datetime import timedelta -from typing import Callable, Dict, Set, Tuple +from typing import Any, Callable, Dict, Set, Tuple + +import cloudpickle +from pennylane._device import Device from . import logger from .config import get_config +from .pickling import _qml_mods_pickle app_log = logger.app_log log_stack_info = logger.log_stack_info @@ -35,6 +36,12 @@ DEFAULT_UI_PORT = get_config("user_interface.port") +# Dictionary to map Dask clients to their scheduler addresses +_address_client_mapper = {} + +_IMPORT_PATH_SEPARATOR = ":" + + def get_ui_url(path): baseUrl = f"http://{DEFAULT_UI_ADDRESS}:{DEFAULT_UI_PORT}" return f"{baseUrl}{path}" @@ -221,5 +228,49 @@ def get_named_params(func, args, kwargs): return (named_args, named_kwargs) -# Dictionary to map Dask clients to their scheduler addresses -_address_client_mapper = {} +@_qml_mods_pickle +def cloudpickle_serialize(obj): + return cloudpickle.dumps(obj) + + +def cloudpickle_deserialize(obj): + return cloudpickle.loads(obj) + + +def select_first_executor(qnode, executors): + """Selects the first executor to run the qnode""" + return executors[0] + + +def get_import_path(obj) -> Tuple[str, str]: + """ + Determine the import path of an object. + """ + module = inspect.getmodule(obj) + if module: + module_path = module.__name__ + class_name = obj.__name__ + return f"{module_path}{_IMPORT_PATH_SEPARATOR}{class_name}" + raise RuntimeError(f"Unable to determine import path for {obj}.") + + +def import_from_path(path: str) -> Any: + """ + Import a class from a path. + """ + module_path, class_name = path.split(_IMPORT_PATH_SEPARATOR) + module = importlib.import_module(module_path) + return getattr(module, class_name) + + +def get_original_shots(dev: Device): + """ + Recreate vector of shots if device has a shot vector. + """ + if not dev.shot_vector: + return dev.shots + + shot_sequence = [] + for shots in dev.shot_vector: + shot_sequence.extend([shots.shots] * shots.copies) + return type(dev.shot_vector)(shot_sequence) diff --git a/covalent/_workflow/__init__.py b/covalent/_workflow/__init__.py index ce7e3cf38..98da8e676 100644 --- a/covalent/_workflow/__init__.py +++ b/covalent/_workflow/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Import workflow utilities.""" diff --git a/covalent/_workflow/deps.py b/covalent/_workflow/deps.py index f662fe6c3..70d8cb990 100644 --- a/covalent/_workflow/deps.py +++ b/covalent/_workflow/deps.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from abc import ABC, abstractmethod from typing import Tuple diff --git a/covalent/_workflow/depsbash.py b/covalent/_workflow/depsbash.py index 1bef3a84e..8746a2012 100644 --- a/covalent/_workflow/depsbash.py +++ b/covalent/_workflow/depsbash.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import subprocess from copy import deepcopy diff --git a/covalent/_workflow/depscall.py b/covalent/_workflow/depscall.py index f0c7a46c2..9e4931c08 100644 --- a/covalent/_workflow/depscall.py +++ b/covalent/_workflow/depscall.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from copy import deepcopy diff --git a/covalent/_workflow/depspip.py b/covalent/_workflow/depspip.py index a23832dbd..4e443e2c3 100644 --- a/covalent/_workflow/depspip.py +++ b/covalent/_workflow/depspip.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import subprocess import tempfile diff --git a/covalent/_workflow/electron.py b/covalent/_workflow/electron.py index 0b217378d..1f5a18941 100644 --- a/covalent/_workflow/electron.py +++ b/covalent/_workflow/electron.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Class corresponding to computation nodes.""" diff --git a/covalent/_workflow/lattice.py b/covalent/_workflow/lattice.py index 13da66992..df5bd8a1b 100644 --- a/covalent/_workflow/lattice.py +++ b/covalent/_workflow/lattice.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Class corresponding to computation workflow.""" diff --git a/covalent/_workflow/lepton.py b/covalent/_workflow/lepton.py index 2e8511615..647ec0a71 100644 --- a/covalent/_workflow/lepton.py +++ b/covalent/_workflow/lepton.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Language translation module for Electron objects.""" diff --git a/covalent/_workflow/postprocessing.py b/covalent/_workflow/postprocessing.py index eb2d06081..fafee577d 100644 --- a/covalent/_workflow/postprocessing.py +++ b/covalent/_workflow/postprocessing.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Module containing post-processing related functions.""" diff --git a/covalent/_workflow/qdevice.py b/covalent/_workflow/qdevice.py new file mode 100644 index 000000000..418c167f9 --- /dev/null +++ b/covalent/_workflow/qdevice.py @@ -0,0 +1,105 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Define the custom Pennylane device that interacts with Covalent's Quantum Executors. +""" + +from typing import Sequence + +from pennylane import QubitDevice +from pennylane import numpy as np +from pennylane.devices.default_qubit import DefaultQubit + +from ..quantum.qclient.core import middleware + + +class QEDevice(QubitDevice): + + """ + The purpose of this device is to redirect circuit execution through Covalent's + Quantum Executors and to enable asynchronous execution. + + All QElectrons (which are QNodes) implicitly use this device. + """ + + name = "QEDevice" + short_name = "qelectron_device" + pennylane_requires = ">=0.29.1" + version = "0.0.1" + author = "aq" + + operations = DefaultQubit.operations + observables = DefaultQubit.observables + + def __init__( + self, + wires=1, + shots=None, + *, + r_dtype=np.float64, # pylint: disable=no-member + c_dtype=np.complex128, # pylint: disable=no-member + analytic=None, + executors=None, + qelectron_info=None, + ): + super().__init__(wires, shots, r_dtype=r_dtype, c_dtype=c_dtype, analytic=analytic) + + self._async_run = False + self._batch_id = None + self.executors = executors + self.qelectron_info = qelectron_info + + # This will be set when the QNodeQE is called with args and kwargs. + self.qnode_specs = None + + def batch_execute(self, circuits): + """ + Submits circuits to QElectron middleware for execution on chosen backend(s). + Retrieves and returns results, or returns a dummy result if running asynchronously. + """ + + # Async submit all circuits to middleware. + batch_id = middleware.run_circuits_async( + circuits, self.executors, self.qelectron_info, self.qnode_specs + ) + + # Relevant when `run_later` is used to run the circuit. + # We will retrieve the result later using the future object and the batch_id. + if self._async_run: + self._batch_id = batch_id + + # Return a (recognizable) dummy result + res = [self._asarray([-123.456] * c.output_dim) for c in circuits] + if isinstance(self.qelectron_info.device_shots, Sequence): + # Replicate the list for shot vector case. + return [[res]] * len(self.qelectron_info.device_shots) + return res + + # Otherwise, get the results from the middleware + results = middleware.get_results(batch_id) + + return results + + def apply(self, *args, **kwargs): + # Dummy implementation of abstractmethod on `QubitDevice` + pass + + @classmethod + def capabilities(cls): + capabilities = super().capabilities().copy() + capabilities.update(supports_broadcasting=True) + return capabilities diff --git a/covalent/_workflow/qelectron.py b/covalent/_workflow/qelectron.py new file mode 100644 index 000000000..e0356723a --- /dev/null +++ b/covalent/_workflow/qelectron.py @@ -0,0 +1,128 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +from typing import Callable, List, Optional, Union + +import pennylane as qml + +from .._shared_files.utils import get_import_path, get_original_shots +from ..quantum.qcluster import QCluster +from ..quantum.qcluster.base import AsyncBaseQCluster, BaseQExecutor +from ..quantum.qcluster.simulator import Simulator +from .qnode import QElectronInfo, QNodeQE + +Selector = Union[str, Callable[[qml.tape.QuantumScript, List[BaseQExecutor]], BaseQExecutor]] + + +def qelectron( + qnode: Optional[qml.QNode] = None, + *, + executors: Union[BaseQExecutor, AsyncBaseQCluster, List[BaseQExecutor]] = None, + name: Optional[str] = None, + description: Optional[str] = None, + selector: Union[str, Selector] = "cyclic", +) -> QNodeQE: + """ + QElectron decorator to be called upon a Pennylane QNode. Adds multi-backend + execution functionality to the original QNode. + + Args: + qnode: The Pennylane :code:`QNode` to wrap. + + Keyword Args: + executors: The quantum executor(s) to use for running the QNode. A single + executor, list of executors, or a :code:`QCluster` instance are accepted. + If a list of multiple executors is passed, a quantum cluster is + initialized from this list automatically and :code:`selector` is used as the + cluster's selector. Defaults to a thread-based :code:`Simulator`. + name: An optional name for the QElectron. Defaults to the circuit function's + name. + description: An optional description for the QElectron. Defaults to the + circuit function's docstring. + selector: A callable that selects an executor, or one of the strings :code:`"cyclic"` + or :code:`"random"`. The :code:`"cyclic"` selector (default) cycles through + :code:`executors` and returns the next executor for each circuit. The + :code:`"random"` selector chooses an executor from :code:`executors` + at random for each circuit. Any user-defined selector must be callable + with two positional arguments, a circuit and a list of executors. + A selector must also return exactly one executor. + + Raises: + ValueError: If any invalid executors are passed. + + Returns: + :code:`QNodeQE`: A sub-type of :code:`QNode` that integrates QElectrons. + """ + + if executors is None: + executors = Simulator() + + # Check if executor is a list of executors. + if isinstance(executors, list): + if not all(isinstance(ex, BaseQExecutor) for ex in executors): + raise ValueError("Invalid executor in executors list.") + if len(executors) > 1: + # Convert to cluster if more than one executor in list. + executors = QCluster(executors=executors, selector=selector) + + # Check if executor is a QCluster. + if isinstance(executors, AsyncBaseQCluster): + # Serialize the cluster's selector function. + executors.serialize_selector() + + # Check if a single executor instance was passed. + if not isinstance(executors, list): + executors = [executors] + + if qnode is None: + # This only happens when `qelectron()` is not used as a decorator. + return functools.partial( + qelectron, executors=executors, name=name, description=description + ) + + # Set default name and description. + if name is None: + name = qnode.func.__name__ + + if description is None: + description = qnode.func.__doc__ + + qelectron_info = get_qinfo(name, description, qnode) + + # Create and return a new `QNodeQE` instance. + return QNodeQE(qnode, executors, qelectron_info) + + +def get_qinfo(name: str, description: str, qnode: qml.QNode) -> QElectronInfo: + """ + Extract useful information about the original QNode. + """ + + device_import_path = get_import_path(type(qnode.device)) + device_shots = get_original_shots(qnode.device) + device_shots_type = None if device_shots is None else type(device_shots) + + return QElectronInfo( + name=name, + description=description, + device_name=qnode.device.short_name, + device_import_path=device_import_path, + device_shots=device_shots, + device_shots_type=device_shots_type, + device_wires=qnode.device.num_wires, + pennylane_active_return=qml.active_return(), + ) diff --git a/covalent/_workflow/qnode.py b/covalent/_workflow/qnode.py new file mode 100644 index 000000000..7e97fee34 --- /dev/null +++ b/covalent/_workflow/qnode.py @@ -0,0 +1,213 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Define the special QNode that replaces Pennylane circuits decorated with `@ct.qelectron`. +""" + +from contextlib import contextmanager +from typing import List + +import pennylane as qml + +from .._results_manager.qresult import QNodeFutureResult +from .._shared_files import logger +from .._shared_files.qinfo import QElectronInfo, QNodeSpecs +from .._shared_files.qresult_utils import re_execute +from .._shared_files.utils import get_original_shots +from ..executor.qbase import BaseQExecutor +from .qdevice import QEDevice + +app_log = logger.app_log +log_stack_info = logger.log_stack_info + +_GRADIENT_ACCESS_MAXES = { + "parameter-shift": 2, +} + + +class QNodeQE(qml.QNode): + """ + A sub-type of Pennylane's QNode that integrates Covalent QElectrons. + + Attributes: + original_qnode: The original QNode that was wrapped. + device: The `QEDevice` instance used for circuit execution instead of the + original QNode's device. + """ + + def __init__( + self, + qnode: qml.QNode, + executors: List[BaseQExecutor], + qelectron_info: QElectronInfo, + ): + """ + Initialize a `QNodeQE` instance. + + Args: + qnode: The Pennylane QNode replaced by this object. + executors: A list of executors to use for circuit execution. + qelectron_info: Settings related to the original QNode. + """ + + self.original_qnode = qnode + + # Private gradient_fn enables overriding the `gradient_fn` attribute. + self._gradient_fn = None + self._gradient_fn_overridden = False + + # Create a new device for every QNodeQE instance + qe_device = QEDevice( + wires=qnode.device.num_wires, + shots=get_original_shots(qnode.device), + executors=executors, + qelectron_info=qelectron_info, + ) + + super().__init__( + func=qnode.func, + device=qe_device, + interface=qnode.interface, + diff_method=qnode.diff_method, + expansion_strategy=qnode.expansion_strategy, + max_expansion=qnode.max_expansion, + ) + + @contextmanager + def mark_call_async(self): + """ + Activates async execution mode for this instance. + """ + # pylint: disable=protected-access + self.device._async_run = True + try: + yield + finally: + self.device._async_run = False + self.device._batch_id = None + + def run_later(self, *args, **kwargs) -> QNodeFutureResult: + """ + Calls this QNode asynchronously. This method returns immediately, without + waiting for the circuit to finish executing. + + Returns: + future_result: An object that can be queried for the execution result. + """ + + # pylint: disable=protected-access + with self.mark_call_async(): + self(*args, **kwargs) + batch_id = self.device._batch_id + + future_result = QNodeFutureResult( + batch_id, + interface=self.device.qnode_specs.interface, + original_qnode=self.original_qnode, + original_tape=self.tape, + ) + + return future_result(*args, **kwargs) + + def __call__(self, *args, **kwargs): + """ + Call QElectrons with args and kwargs suitable for the original QNode. + """ + + self.device.qnode_specs = self._specs(*args, **kwargs) + + # This leads to execution on the QEDevice `self.device`. + retval = super().__call__(*args, **kwargs) + self._update_num_executions() + + if self.device._async_run: + # Do nothing during call from `run_later()`. + return None + + # Skip re-execution for numpy interface. + interface = self.device.qnode_specs.interface + if interface in {"numpy", "autograd"}: + return retval + + # Run through an overloaded circuit/device to loop `retval` into interfaces. + retval = re_execute(retval, self.original_qnode, self.tape)(interface, *args, **kwargs) + + return retval + + def _update_num_executions(self): + """ + Increment number of executions on original and custom device. + """ + self.device._num_executions += 1 + self.original_qnode.device._num_executions += 1 + + def _specs(self, *args, **kwargs) -> QNodeSpecs: + """ + Check args and kwargs to avoid computing gradients on non-trainable parameters. + Update the interface if it is set to "auto". + """ + + # Some args or some kwargs are trainable. No warning expected. + if (args or kwargs) and ( + any(qml.math.get_trainable_indices(args)) + or any(qml.math.get_trainable_indices(kwargs.values())) + ): + specs = QNodeSpecs(**qml.specs(self)(*args, **kwargs)) + else: + # No trainable params. Avoid warning. + with self.override_gradient_fn(None): + specs = QNodeSpecs(**qml.specs(self)(*args, **kwargs)) + + # Replace override value with actual `gradient_fn`. + self.construct(args, kwargs) + specs.gradient_fn = self.gradient_fn + + # This will be done inside QNode.__call__() to update `self.interface`. + # Here, we anticipate that change and update the specs as well. + specs.interface = qml.math.get_interface(*args, *list(kwargs.values())) + + return specs + + @contextmanager + def override_gradient_fn(self, fn): + """ + Override the private `self._gradient_fn` to override the `gradient_fn` + attribute (property). + """ + self._gradient_fn, _tmp_gradient_fn = fn, self._gradient_fn + self._gradient_fn_overridden = True + try: + yield + finally: + self._gradient_fn = _tmp_gradient_fn + self._gradient_fn_overridden = False + + @property + def gradient_fn(self): + """ + This property replaces the `qml.QNode.gradient_fn` attribute and enables overriding it. + """ + return self._gradient_fn + + @gradient_fn.setter + def gradient_fn(self, fn): + """ + Enforces gradient override. + """ + if self._gradient_fn_overridden: + return # disallow setting `.gradient_fn`` + self._gradient_fn = fn diff --git a/covalent/_workflow/transport.py b/covalent/_workflow/transport.py index 9b5c722ea..7609e980c 100644 --- a/covalent/_workflow/transport.py +++ b/covalent/_workflow/transport.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Class implementation of the transport graph in the workflow graph.""" diff --git a/covalent/_workflow/transport_graph_ops.py b/covalent/_workflow/transport_graph_ops.py index ea895505d..8d9d96a92 100644 --- a/covalent/_workflow/transport_graph_ops.py +++ b/covalent/_workflow/transport_graph_ops.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Module for transport graph operations.""" diff --git a/covalent/_workflow/transportable_object.py b/covalent/_workflow/transportable_object.py index 082f82643..f3ddbe123 100644 --- a/covalent/_workflow/transportable_object.py +++ b/covalent/_workflow/transportable_object.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Transportable object module.""" diff --git a/covalent/cloud_resource_manager/__init__.py b/covalent/cloud_resource_manager/__init__.py index d1f2c47e0..80d8380ff 100644 --- a/covalent/cloud_resource_manager/__init__.py +++ b/covalent/cloud_resource_manager/__init__.py @@ -2,20 +2,16 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .core import CloudResourceManager diff --git a/covalent/cloud_resource_manager/core.py b/covalent/cloud_resource_manager/core.py index 94947afdd..45c8604eb 100644 --- a/covalent/cloud_resource_manager/core.py +++ b/covalent/cloud_resource_manager/core.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import importlib diff --git a/covalent/executor/__init__.py b/covalent/executor/__init__.py index a8fb330f5..afde67173 100644 --- a/covalent/executor/__init__.py +++ b/covalent/executor/__init__.py @@ -2,41 +2,44 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Defines executors and provides a "manager" to get all available executors """ +import contextlib import glob import importlib import inspect import os +import sys +from pathlib import Path from typing import Any, Dict, List, Union import pkg_resources from .._shared_files import logger from .._shared_files.config import get_config, update_config +from ..quantum import QCluster, Simulator from .base import BaseExecutor, wrapper_fn app_log = logger.app_log log_stack_info = logger.log_stack_info +_QUANTUM_PLUGINS_PATH = Path(__file__).parent / "quantum_plugins" +_QUANTUM_DEFAULTS_VARNAME = "_QEXECUTOR_PLUGIN_DEFAULTS" + class _ExecutorManager: """ @@ -272,8 +275,106 @@ def list_executors(self, regenerate: bool = False, print_names: bool = True) -> return executor_list +class _QExecutorManager: + """ + QExecutor manager to return a valid QExecutor which can be + used as an argument to `qelectron` decorator. + + Initializing generates a list of available QExecutor plugins. + """ + + def __init__(self): + # Dictionary mapping executor name to executor class + self.executor_plugins_map: Dict[str, Any] = { + "QCluster": QCluster, + "Simulator": Simulator, + } + self.load_executors() + + def __new__(cls): + # Singleton pattern for this class + if not hasattr(cls, "_instance"): + cls._instance = super().__new__(cls) + return cls._instance + + def load_executors(self) -> None: + """ + Looks for `plugin.py` modules in the subdirectories of the given path and + loads QExecutor classes from them. + """ + + # Iterate over all subdirectories of the plugins path except for those starting with "_" like "__pycache__" + for plugin_dir in filter( + lambda _p: _p.is_dir() and not _p.name.startswith("_"), _QUANTUM_PLUGINS_PATH.iterdir() + ): + # Get the Path of the plugin module + plugin_module_path = list(plugin_dir.glob("*_plugin.py")) + if not plugin_module_path: + continue + plugin_module_path = plugin_module_path[0] + + if plugin_module_path.exists(): + # Suppress any exceptions that may occur while importing the plugin module + # This is to prevent the plugin module from crashing the application + with contextlib.suppress(Exception): + sys.path.append(str(plugin_module_path.parent)) + plugin_module_spec = importlib.util.spec_from_file_location( + plugin_module_path.stem, plugin_module_path + ) + plugin_module = importlib.util.module_from_spec(plugin_module_spec) + sys.modules[plugin_module_path.stem] = plugin_module + plugin_module_spec.loader.exec_module(plugin_module) + self.populate_executors_map(plugin_module) + + # print("Loaded QExecutor plugins: ", self.executor_plugins_map.keys()) + + def populate_executors_map(self, module_obj) -> None: + """ + Validates modules containing potential QExecutor classes. + Populates the `executor_plugins_map` dictionary and updates the config. + """ + + self.validate_module(module_obj) + + for qexecutor_cls_name in getattr(module_obj, "__all__"): + self.executor_plugins_map[qexecutor_cls_name] = getattr(module_obj, qexecutor_cls_name) + + for qexecutor_cls_name, defaults_dict in getattr( + module_obj, _QUANTUM_DEFAULTS_VARNAME + ).items(): + update_config( + {"qelectron": {qexecutor_cls_name: defaults_dict}}, override_existing=False + ) + + def validate_module(self, module_obj) -> None: + """ + Checks all of the following: + - module exports plugin classes using `__all__` + - module defines `_QUANTUM_DEFAULTS_VARNAME` + - exported plugin classes match the default parameters + + """ + if not hasattr(module_obj, "__all__"): + return + if not hasattr(module_obj, _QUANTUM_DEFAULTS_VARNAME): + return + + plugin_defaults = getattr(module_obj, _QUANTUM_DEFAULTS_VARNAME) + + if set(module_obj.__all__).difference(set(plugin_defaults)): + raise RuntimeError(f"Module missing default parameters in {module_obj.__file__}") + if set(plugin_defaults).difference(set(module_obj.__all__)): + raise RuntimeError( + f"Non-exported QExecutor class in default parameters in {module_obj.__file__}" + ) + + _executor_manager = _ExecutorManager() +_qexecutor_manager = _QExecutorManager() for name in _executor_manager.executor_plugins_map: plugin_class = _executor_manager.executor_plugins_map[name] globals()[plugin_class.__name__] = plugin_class + +for qexecutor_cls in _qexecutor_manager.executor_plugins_map.values(): + globals()[qexecutor_cls.__name__] = qexecutor_cls diff --git a/covalent/executor/base.py b/covalent/executor/base.py index e46f6590b..6b80e7130 100644 --- a/covalent/executor/base.py +++ b/covalent/executor/base.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Class that defines the base executor template. @@ -46,14 +42,14 @@ import aiofiles -from covalent._shared_files.exceptions import TaskCancelledError -from covalent._workflow.depscall import RESERVED_RETVAL_KEY__FILES -from covalent.executor.utils import Signals - from .._shared_files import TaskRuntimeError, logger from .._shared_files.context_managers import active_dispatch_info_manager +from .._shared_files.exceptions import TaskCancelledError +from .._shared_files.qelectron_utils import remove_qelectron_db from .._shared_files.util_classes import RESULT_STATUS, DispatchInfo +from .._workflow.depscall import RESERVED_RETVAL_KEY__FILES from .._workflow.transport import TransportableObject +from .utils import Signals app_log = logger.app_log log_stack_info = logger.log_stack_info @@ -330,7 +326,7 @@ def write_streams_to_file( filename.touch(exist_ok=True) with open(filepath, "a") as f: - f.write(ss) + f.write(remove_qelectron_db(ss)) async def _execute( self, @@ -613,7 +609,7 @@ async def write_streams_to_file( filename.touch(exist_ok=True) async with aiofiles.open(filepath, "a") as f: - await f.write(ss) + await f.write(remove_qelectron_db(ss)) async def _execute( self, diff --git a/covalent/executor/executor_plugins/dask.py b/covalent/executor/executor_plugins/dask.py index 8347619ff..a0f4417a2 100644 --- a/covalent/executor/executor_plugins/dask.py +++ b/covalent/executor/executor_plugins/dask.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Module for defining a Dask executor that submits the input python function in a dask cluster @@ -95,14 +91,6 @@ def __init__( debug_msg = f"Couldn't find `executors.dask.create_unique_workdir` in config, using default value {create_unique_workdir}." app_log.debug(debug_msg) - if not scheduler_address: - try: - scheduler_address = get_config("dask.scheduler_address") - except KeyError as ex: - app_log.debug( - "No dask scheduler address found in config. Address must be set manually." - ) - super().__init__( log_stdout, log_stderr, @@ -118,6 +106,14 @@ def __init__( async def run(self, function: Callable, args: List, kwargs: Dict, task_metadata: Dict): """Submit the function and inputs to the dask cluster""" + if not self.scheduler_address: + try: + self.scheduler_address = get_config("dask.scheduler_address") + except KeyError as ex: + app_log.debug( + "No dask scheduler address found in config. Address must be set manually." + ) + if await self.get_cancel_requested(): app_log.debug("Task has cancelled") raise TaskCancelledError diff --git a/covalent/executor/executor_plugins/local.py b/covalent/executor/executor_plugins/local.py index 0a9ff3897..3352a48fe 100644 --- a/covalent/executor/executor_plugins/local.py +++ b/covalent/executor/executor_plugins/local.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Module for defining a local executor that directly invokes the input python function. @@ -58,6 +54,7 @@ "create_unique_workdir": False, } + proc_pool = ProcessPoolExecutor() diff --git a/covalent/executor/executor_plugins/remote_executor.py b/covalent/executor/executor_plugins/remote_executor.py index 3e02a7a1b..9a9f0cdb5 100644 --- a/covalent/executor/executor_plugins/remote_executor.py +++ b/covalent/executor/executor_plugins/remote_executor.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ This is a plugin executor module that is loaded at runtime by defining its default attributes in _EXECUTOR_PLUGIN_DEFAULTS diff --git a/covalent/executor/qbase.py b/covalent/executor/qbase.py new file mode 100644 index 000000000..ca04a1c53 --- /dev/null +++ b/covalent/executor/qbase.py @@ -0,0 +1,339 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +import time +from abc import ABC, abstractmethod +from concurrent.futures import ThreadPoolExecutor +from functools import lru_cache +from threading import Thread +from typing import Any, Dict, List, Optional, Sequence, Union + +import orjson +import pennylane as qml +from mpire import WorkerPool +from pydantic import BaseModel, Extra, Field, root_validator # pylint: disable=no-name-in-module + +from .._shared_files.qinfo import QElectronInfo, QNodeSpecs + +__all__ = [ + "BaseQExecutor", + "BaseProcessPoolQExecutor", + "AsyncBaseQExecutor", + "BaseThreadPoolQExecutor", +] + +SHOTS_DEFAULT = -1 + + +def orjson_dumps(v, *, default): + return orjson.dumps(v, default=default).decode() # pylint: disable=no-member + + +@lru_cache +def get_process_pool(num_processes=None): + return WorkerPool(n_jobs=num_processes) + + +@lru_cache +def get_thread_pool(max_workers=None): + return ThreadPoolExecutor(max_workers=max_workers) + + +@lru_cache +def get_asyncio_event_loop(): + """ + Returns an asyncio event loop running in a separate thread. + """ + + def _run_loop(_loop): + asyncio.set_event_loop(_loop) + _loop.run_forever() + + loop = asyncio.new_event_loop() + thread = Thread(target=_run_loop, args=(loop,), daemon=True) + thread.start() + + # Create function attribute so reference to thread is not lost. + get_asyncio_event_loop.thread = thread + + return loop + + +class BaseQExecutor(ABC, BaseModel): + """ + Base class for all Quantum Executors. + """ + + shots: Union[None, int, Sequence[int], Sequence[Union[int, Sequence[int]]]] = SHOTS_DEFAULT + shots_converter: Optional[type] = None + persist_data: bool = True + + # Executors need to contain certain information about original QNode, in order + # to produce correct results. These attributes below contain that information. + # They are set inside the `QServer` and will be `None` client-side. + qelectron_info: Optional[QElectronInfo] = None + qnode_specs: Optional[QNodeSpecs] = None + + @property + def override_shots(self) -> Union[int, None]: + """ + Fallback to the QNode device's shots if no user-specified shots on executor. + """ + + if self.shots is SHOTS_DEFAULT: + # No user-specified shots. Use the original QNode device's shots instead. + shots = self.qelectron_info.device_shots + shots_converter = self.qelectron_info.device_shots_type + return shots_converter(shots) if shots_converter is not None else shots + if self.shots is None: + # User has specified `shots=None` on executor. + return None + + if isinstance(self.shots, Sequence) and self.shots_converter is not None: + return self.shots_converter(self.shots) + + # User has specified `shots` as an int. + return self.shots + + class Config: + extra = Extra.allow + + @root_validator(pre=True) + def set_name(cls, values): + # pylint: disable=no-self-argument + # Set the `name` attribute to the class name + values["name"] = cls.__name__ + return values + + @abstractmethod + def batch_submit(self, qscripts_list): + raise NotImplementedError + + @abstractmethod + def batch_get_results(self, futures_list): + raise NotImplementedError + + def run_circuit(self, qscript, device, result_obj: "QCResult") -> "QCResult": + start_time = time.perf_counter() + results = qml.execute([qscript], device, gradient_fn="best") + end_time = time.perf_counter() + + result_obj.results = results + result_obj.execution_time = end_time - start_time + + return result_obj + + def dict(self, *args, **kwargs): + dict_ = super().dict(*args, **kwargs) + + # Ensure shots is a hashable value. + shots = dict_.get("shots") + if isinstance(shots, Sequence): + dict_["shots"] = tuple(shots) + + # Set shots converter to recover original sequence type. + shots_converter = dict_.get("shots_converter") + if shots_converter is None: + dict_["shots_converter"] = type(shots) + + return dict_ + + +class QCResult(BaseModel): + """ + Container for results from `run_circuit` methods. Standardizes output and allows + metadata to be updated at various points. + """ + + results: Optional[Any] = None + execution_time: float = None + metadata: Dict[str, Any] = Field(default_factory=lambda: {"execution_metadata": []}) + + def expand(self) -> List["QCResult"]: + """ + Expand result object into a list of result objects, one for each execution. + """ + result_objs = [] + for i, result in enumerate(self.results): + # Copy other non-execution metadata. + _result_obj = QCResult( + results=[result], execution_time=self.execution_time, metadata={} + ) + + # Handle single and multi-component metadata. + execution_metadata = self.metadata["execution_metadata"] + if len(self.metadata["execution_metadata"]) > 0: + execution_metadata = execution_metadata[i] + + # Populate corresponding metadata. + _result_obj.metadata.update( + execution_metadata=[execution_metadata], + device_name=self.metadata["device_name"], + executor_name=self.metadata["executor_name"], + executor_backend_name=self.metadata["executor_backend_name"], + ) + + result_objs.append(_result_obj) + + return result_objs + + @classmethod + def with_metadata(cls, *, device_name: str, executor: BaseQExecutor): + """ + Create a blank instance with pre-set metadata. + """ + result_obj = cls() + backend_name = executor.backend if hasattr(executor, "backend") else "" + result_obj.metadata.update( + device_name=device_name, + executor_name=executor.__class__.__name__, + executor_backend_name=backend_name, + ) + return result_obj + + +class SyncBaseQExecutor(BaseQExecutor): + device: Optional[str] = "default.qubit" + + def run_all_circuits(self, qscripts_list) -> List[QCResult]: + result_objs: List[QCResult] = [] + + for qscript in qscripts_list: + dev = qml.device( + self.device, + wires=self.qelectron_info.device_wires, + shots=self.qelectron_info.device_shots, + ) + + result_obj = QCResult.with_metadata(device_name=dev.short_name, executor=self) + result_obj = self.run_circuit(qscript, dev, result_obj) + result_objs.append(result_obj) + + return result_objs + + def batch_submit(self, qscripts_list): + # Offload execution of all circuits to the same thread + # so that the qserver isn't blocked by their completion. + pool = get_thread_pool() + fut = pool.submit(self.run_all_circuits, qscripts_list) + dummy_futures = [fut] * len(qscripts_list) + return dummy_futures + + def batch_get_results(self, futures_list): + return futures_list[0].result() + + +class AsyncBaseQExecutor(BaseQExecutor): + """ + Executor that uses `asyncio` to handle multiple job submissions + """ + + device: Optional[str] = "default.qubit" + + def batch_submit(self, qscripts_list): + futures = [] + loop = get_asyncio_event_loop() + for qscript in qscripts_list: + dev = qml.device( + self.device, + wires=self.qelectron_info.device_wires, + shots=self.qelectron_info.device_shots, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + fut = loop.create_task(self.run_circuit(qscript, dev, result_obj)) + futures.append(fut) + + return futures + + def batch_get_results(self, futures_list: List): + loop = get_asyncio_event_loop() + task = asyncio.run_coroutine_threadsafe(self._get_result(futures_list), loop) + return task.result() + + async def _get_result(self, futures_list: List) -> List[QCResult]: + return await asyncio.gather(*futures_list) + + async def run_circuit(self, qscript, device, result_obj) -> QCResult: + await asyncio.sleep(0) + start_time = time.perf_counter() + results = qml.execute([qscript], device, gradient_fn="best") + end_time = time.perf_counter() + + result_obj.results = results + result_obj.execution_time = end_time - start_time + + return result_obj + + +class BaseProcessPoolQExecutor(BaseQExecutor): + device: Optional[str] = "default.qubit" + num_processes: int = 10 + + def batch_submit(self, qscripts_list): + pool = get_process_pool(self.num_processes) + + futures = [] + for qscript in qscripts_list: + dev = qml.device( + self.device, + wires=self.qelectron_info.device_wires, + shots=self.qelectron_info.device_shots, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + fut = pool.apply_async(self.run_circuit, args=(qscript, dev, result_obj)) + futures.append(fut) + + return futures + + def batch_get_results(self, futures_list: List) -> List[QCResult]: + return [fut.get() for fut in futures_list] + + +class BaseThreadPoolQExecutor(BaseQExecutor): + device: Optional[str] = "default.qubit" + num_threads: int = 10 + + def batch_submit(self, qscripts_list): + pool = get_thread_pool(self.num_threads) + + futures = [] + for qscript in qscripts_list: + dev = qml.device( + self.device, + wires=self.qelectron_info.device_wires, + shots=self.qelectron_info.device_shots, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + fut = pool.submit(self.run_circuit, qscript, dev, result_obj) + futures.append(fut) + + return futures + + def batch_get_results(self, futures_list: List) -> List[QCResult]: + return [fut.result() for fut in futures_list] diff --git a/covalent/executor/quantum_plugins/aws_plugin/__init__.py b/covalent/executor/quantum_plugins/aws_plugin/__init__.py new file mode 100644 index 000000000..169ba947f --- /dev/null +++ b/covalent/executor/quantum_plugins/aws_plugin/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .aws_plugin import BraketQubitExecutor, LocalBraketQubitExecutor diff --git a/covalent/executor/quantum_plugins/aws_plugin/aws_plugin.py b/covalent/executor/quantum_plugins/aws_plugin/aws_plugin.py new file mode 100644 index 000000000..afda1e3b6 --- /dev/null +++ b/covalent/executor/quantum_plugins/aws_plugin/aws_plugin.py @@ -0,0 +1,197 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Optional + +import pennylane as qml +from braket.aws import AwsQuantumTask, AwsQuantumTaskBatch +from pydantic import Field + +from covalent._shared_files.config import get_config +from covalent.executor.qbase import BaseThreadPoolQExecutor, QCResult, get_thread_pool + +__all__ = ["BraketQubitExecutor", "LocalBraketQubitExecutor"] + +_QEXECUTOR_PLUGIN_DEFAULTS = { + "BraketQubitExecutor": { + "device_arn": "", + "poll_timeout_seconds": AwsQuantumTask.DEFAULT_RESULTS_POLL_TIMEOUT, + "poll_interval_seconds": AwsQuantumTask.DEFAULT_RESULTS_POLL_INTERVAL, + "max_connections": AwsQuantumTaskBatch.MAX_CONNECTIONS_DEFAULT, + "max_retries": AwsQuantumTaskBatch.MAX_RETRIES, + }, + "LocalBraketQubitExecutor": { + "backend": "default", + }, +} + + +class BraketQubitExecutor(BaseThreadPoolQExecutor): + """ + The remote Braket executor based on the existing Pennylane Braket + qubit device. Usage of this device requires valid AWS credentials as + set up following the instructions at + https://github.com/aws/amazon-braket-sdk-python#prerequisites. + + Attributes: + max_jobs: + maximum number of parallel jobs sent by threads on :code:`batch_submit`. + shots: number of shots used to estimate quantum observables. + device_arn: + an alpha-numeric code (arn=Amazon Resource Name) specifying a quantum device. + poll_timeout_seconds: + number of seconds before a poll to remote device is considered timed-out. + poll_interval_seconds: + number of seconds between polling of a remote device's status. + aws_session: + An :code:`AwsSession` object created to manage interactions with AWS services, + to be supplied if extra control is desired. + parallel: turn parallel execution on or off. + max_parallel: the maximum number of circuits to be executed in parallel. + max_connections: the maximum number of connections in the :code:`Boto3` connection pool. + max_retries: the maximum number of time a job will be re-sent if it failed + s3_destination_folder: Name of the S3 bucket and folder, specified as a tuple. + run_kwargs: Variable length keyword arguments for :code:`braket.devices.Device.run()` + + """ + + device_arn: str = Field( + default_factory=lambda: get_config("qelectron")["BraketQubitExecutor"]["device_arn"] + ) + poll_timeout_seconds: float = Field( + default_factory=lambda: get_config("qelectron")["BraketQubitExecutor"][ + "poll_timeout_seconds" + ] + ) + poll_interval_seconds: float = Field( + default_factory=lambda: get_config("qelectron")["BraketQubitExecutor"][ + "poll_interval_seconds" + ] + ) + max_connections: int = Field( + default_factory=lambda: get_config("qelectron")["BraketQubitExecutor"]["max_connections"] + ) + max_retries: int = Field( + default_factory=lambda: get_config("qelectron")["BraketQubitExecutor"]["max_retries"] + ) + max_jobs: int = 20 + aws_session: Optional[str] = None # not actually a str. Fix. + parallel: bool = False + max_parallel: Optional[int] = None + s3_destination_folder: tuple = () + run_kwargs: dict = {} + + def batch_submit(self, qscripts_list): + """ + Submit qscripts for execution using :code:`max_jobs`-many threads. + + Args: + qscripts_list: a list of Pennylane style :code:`QuantumScripts` + + Returns: + jobs: a :code:`list` of tasks subitted by threads. + """ + + p = get_thread_pool(self.max_jobs) + jobs = [] + for qscript in qscripts_list: + dev = qml.device( + "braket.aws.qubit", + wires=self.qelectron_info.device_wires, + device_arn=self.device_arn, + s3_destination_folder=self.s3_destination_folder, + shots=self.override_shots, + poll_timeout_seconds=self.poll_timeout_seconds, + poll_interval_seconds=self.poll_interval_seconds, + aws_session=self.aws_session, + parallel=self.parallel, + max_parallel=self.max_parallel, + max_connections=self.max_connections, + max_retries=self.max_retries, + **self.run_kwargs, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + + jobs.append(p.submit(self.run_circuit, qscript, dev, result_obj)) + + return jobs + + def dict(self, *args, **kwargs): + dict_ = super().dict(*args, **kwargs) + # needed to make the dict method hashable and jsonable + dict_["run_kwargs"] = tuple(dict_["run_kwargs"].items()) + return dict_ + + +class LocalBraketQubitExecutor(BaseThreadPoolQExecutor): + """ + The local Braket executor based on the existing Pennylane local Braket qubit device. + + Attributes: + max_jobs: maximum number of parallel jobs sent by processes on :code:`batch_submit`. + shots: number of shots used to estimate quantum observables. + backend: + The name of the simulator backend. Defaults to the :code:`"default"` + simulator backend name. + run_kwargs: Variable length keyword arguments for :code:`braket.devices.Device.run()`. + """ + + backend: str = Field( + default_factory=lambda: get_config("qelectron")["LocalBraketQubitExecutor"]["backend"] + ) + max_jobs: int = 20 + run_kwargs: dict = {} + + def batch_submit(self, qscripts_list): + """ + Submit qscripts for execution using :code:`num_threads`-many threads. + + Args: + qscripts_list: a list of Pennylane style :code:`QuantumScripts`. + + Returns: + jobs: a :code:`list` of tasks subitted by threads. + """ + + p = get_thread_pool(self.max_jobs) + jobs = [] + for qscript in qscripts_list: + dev = qml.device( + "braket.local.qubit", + wires=self.qelectron_info.device_wires, + backend=self.backend, + shots=self.override_shots, + **self.run_kwargs, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + + jobs.append(p.submit(self.run_circuit, qscript, dev, result_obj)) + + return jobs + + def dict(self, *args, **kwargs): + dict_ = super().dict(*args, **kwargs) + # needed to make the dict method hashable and jsonable + dict_["run_kwargs"] = tuple(dict_["run_kwargs"].items()) + return dict_ diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/__init__.py b/covalent/executor/quantum_plugins/qiskit_plugin/__init__.py new file mode 100644 index 000000000..0b79358a0 --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from qiskit_plugin import IBMQExecutor, QiskitExecutor diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/devices_base.py b/covalent/executor/quantum_plugins/qiskit_plugin/devices_base.py new file mode 100644 index 000000000..744c3034e --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/devices_base.py @@ -0,0 +1,359 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Wrappers for the existing Pennylane-Qiskit interface""" +import warnings +from abc import ABC, abstractmethod +from contextlib import contextmanager +from math import sqrt +from typing import Any, List, Sequence, Tuple, Union + +import numpy as np +import pennylane.numpy as pnp +from pennylane.transforms import broadcast_expand, map_batch_transform +from pennylane_qiskit.qiskit_device import QiskitDevice +from qiskit.compiler import transpile +from sessions import init_runtime_service + + +class _PennylaneQiskitDevice(QiskitDevice, ABC): + # pylint: disable=too-many-instance-attributes + """ + A replacement for Pennylane's `QiskitDevice` that uses `QiskitRuntimeService` + instead of the older `qiskit.providers.provider.ProviderV1` + """ + + name = "Custom Plugin for Pennylane Circuits on Qiskit IBM Runtime" + version = "0.0.1" + author = "AQ" + + def __init__( + self, + wires: int, + shots: Union[None, int, Sequence[int], Sequence[Union[int, Sequence[int]]]], + backend_name: str, + local_transpile: bool, + service_init_kwargs: dict, + **kwargs, + ): + # proxy for client-side `pennylane.active_return()` status + self.pennylane_active_return = True + + super(QiskitDevice, self).__init__(wires=wires, shots=shots) + + self.shots = shots + self.backend_name = backend_name + self.local_transpile = local_transpile + self.service_init_kwargs = service_init_kwargs + self.device_kwargs = kwargs + + self._service = None + self._backend = None + + self.reset() + self.process_kwargs(kwargs) + + self._state = None + + @classmethod + def capabilities(cls): + capabilities = super().capabilities().copy() + capabilities.update(supports_broadcasting=True) + return capabilities + + @property + def service(self): + """ + Lazy service property - enables serialization + """ + if self._service is None: + # assign cached service instance + self._service = init_runtime_service(**self.service_init_kwargs) + return self._service + + @property + def backend(self): + """ + Lazy backend property - enables serialization + """ + if self._backend is None: + self._backend = self.service.get_backend(self.backend_name) + return self._backend + + def process_kwargs(self, kwargs): + """ + Override original method from `pennylane_qiskit.qiskit_device.QiskitDevice` + to avoid accessing backend property, unnecessary init of service + """ + self.compile_backend = None + self.set_transpile_args(**kwargs) + self.run_args = kwargs.copy() + + def map_wires(self, wires): + return wires + + def broadcast_tapes(self, tapes): + """ + Broadcast tapes for batch execution (if necessary) + """ + if all(tape.batch_size for tape in tapes): + expanded_tapes, _ = map_batch_transform(broadcast_expand, tapes) + return expanded_tapes + + return tapes + + @abstractmethod + def post_process(self, *args) -> Tuple[Any, List[dict]]: + """ + Obtain metadata; make blocking API call to Qiskit Runtime. + """ + raise NotImplementedError + + @abstractmethod + def post_process_all(self, *args) -> Tuple[Any, List[dict]]: + """ + Single job version of `post_process`. + """ + raise NotImplementedError + + +class QiskitSamplerDevice(_PennylaneQiskitDevice): + + """ + A base class for devices that use the Sampler primitive. + """ + + default_shots = 1024 + + def __init__( + self, + wires: int, + shots: Union[None, int, Sequence[int], Sequence[Union[int, Sequence[int]]]], + backend_name: str, + local_transpile: bool, + service_init_kwargs: dict, + **kwargs, + ): + super().__init__( + wires=wires, + shots=shots, + backend_name=backend_name, + local_transpile=local_transpile, + service_init_kwargs=service_init_kwargs, + **kwargs, + ) + + self._default_shots = QiskitSamplerDevice.default_shots + + if self.shots is None: + warnings.warn( + "The Qiskit Sampler device does not support analytic expectation values. " + "The number of shots can not be None. " + f"{self._default_shots} shots will be used." + ) + + self._current_quasi_dist = None + self._dummy_state = None + + # Used for reshaping results. + self._n_original_circuits = None + self._n_circuits = None + + def compile_circuits(self, circuits): + """ + Override `QiskitDevice.compile_circuits` to include `unwrap` context. + This step avoids potential parameter type errors during compilation. + """ + compiled_circuits = [] + for circuit in circuits: + # Unwraps a quantum script with tensor-like parameters to numpy arrays. + with circuit.unwrap(): + qiskit_circuit = super().compile_circuits([circuit]).pop() + compiled_circuits.append(qiskit_circuit) + + return compiled_circuits + + def compile(self): + """ + Overrides `QiskitDevice.compile` with custom choice logic for the `backend` + argument during transpilation. + """ + backend = self.backend if self.local_transpile else None + return transpile(self._circuit, backend=backend, **self.transpile_args) + + @property + def asarray(self): + """ + Array function property to return Pennylane tensors instead of NumPy arrays. + """ + if self._asarray is np.asarray: + return pnp.asarray + return self._asarray + + @property + def _state(self): + """ + Override `self._state` to avoid unnecessary state reconstruction for + every execution result. + """ + if self._dummy_state is None: + return self.dist_get_state() + return self._dummy_state + + @property + def vector_shape(self): + """ + Used to reshape results in case of vector inputs. + """ + n = self._n_original_circuits + m = self._n_circuits // n + return (n, m) + + @_state.setter + def _state(self, state): + """ + Allows `self._state` to be set as if instance attribute + """ + self._dummy_state = state + + def dist_get_state(self): + """ + Generate a state-vector from a quasi-distribution + """ + N = 2 ** len(self.wires) + + state = np.zeros(N) + for i in range(N): + # invert bit string representation of i + probs_idx = int(bin(i)[2:].zfill(len(self.wires))[::-1], base=2) + + if prob := self._current_quasi_dist.get(i): + state[probs_idx] = sqrt(prob) + else: + state[probs_idx] = 0 + + return self._asarray(state, dtype=self.C_DTYPE) + + def dist_generate_samples(self, quasi_dist): + """ + Generate samples from a quasi-distribution + """ + + dist_bin = quasi_dist.binary_probabilities() + dist_bin = self.normalize_probability(dist_bin) + + bit_strings = list(dist_bin) + probs = [dist_bin[bs] for bs in bit_strings] + + # generate artificial samples from quasi-distribution probabilities + size = self.shots if self.shots else self._default_shots + bit_samples = np.random.choice(bit_strings, size=size, p=probs) + return np.vstack([np.array([int(i) for i in s[::-1]]) for s in bit_samples]) + + @contextmanager + def set_distribution(self, quasi_dist): + """ + Set the current quasi-distribution for statistics computations. + """ + self._current_quasi_dist = quasi_dist + try: + yield + finally: + self._current_quasi_dist = None + + @staticmethod + def normalize_probability(distribution: dict) -> dict: + """ + Some IBMQ backends may return small NEGATIVE quasi-probabilities + instead of ~0, when using `Sampler`. + + Below is an example of this, as observed with "ibmq_lima": + + # quasi-probabilities list + [ + ... + { + "10": 0.0026338769545423205, + "11": 0.5150691505205544, + "00": 0.4867495783187873, + "01": -0.004452605793883964 + }, + ... + ] + + To avoid errors due to negative probability, this function zeros any + negative values, then re-normalizes the quasi probabilities. + """ + + dist = distribution.copy() + + # Negative probabilities are presumed to be zero. + delete_keys = [] + for bit_string, quasi_prob in dist.items(): + if quasi_prob <= 0: + delete_keys.append(bit_string) + + # Zero probabilities should be omitted from the dict. + for key in delete_keys: + del dist[key] + + if len(dist) == 0: + # This should never happen. + raise RuntimeError(f"No positive probabilities exist in {distribution}.") + + # Re-normalize the remaining quasi-probabilities. + total_prob = sum(dist.values()) + for bit_string, quasi_prob in dist.items(): + dist[bit_string] = quasi_prob / total_prob + + return dist + + def _process_batch_execute_result(self, circuit, quasi_dist) -> Any: + # Update the tracker + if self.tracker.active: + self.tracker.update(executions=1, shots=self.shots) + self.tracker.record() + + # Generate computational basis samples + self._samples = self.dist_generate_samples(quasi_dist) + + with self.set_distribution(quasi_dist): + if not self.pennylane_active_return: + res = self._statistics_legacy(circuit) + return self.asarray(res) + + if self._shot_vector is not None: + res = self.shot_vec_statistics(circuit) + else: + res = self.statistics(circuit) + + if len(circuit.measurements) > 1: + return tuple(res) + + return self.asarray(res[0]) + + def _vector_results(self, res): + """ + Process the result of a vectorized QElectron call. + """ + + res = pnp.asarray(res) + + if self.pennylane_active_return: + return [res] if res.ndim > 1 else list(res.reshape(self.vector_shape)) + + res = res.reshape(-1) + return [res] if res.ndim > 1 else [res.reshape(self.vector_shape)] diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/local_sampler.py b/covalent/executor/quantum_plugins/qiskit_plugin/local_sampler.py new file mode 100644 index 000000000..ef276a96c --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/local_sampler.py @@ -0,0 +1,103 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""" +Pennylane-Qiskit device that uses the local Qiskit `Sampler` primitive +""" + +from typing import Any, List, Tuple + +from devices_base import QiskitSamplerDevice +from qiskit.primitives import Sampler as LocalSampler + + +class QiskitLocalSampler(QiskitSamplerDevice): + """ + Pennylane device that runs circuits using the local `qiskit.primitives.Sampler` + """ + + short_name = "local_sampler" + + def __init__(self, wires: int, shots: int, **_): + self.circuit = None + self.transpile_args = {} + + super().__init__( + wires=wires, + shots=shots, + backend_name="None", + local_transpile=False, + transpile_backend=None, + service_init_kwargs={}, + ) + + self._metadatas = [] + + def batch_execute(self, circuits, timeout: int = None): + # pylint: disable=missing-function-docstring + + n_original_circuits = len(circuits) + circuits = self.broadcast_tapes(circuits) + n_circuits = len(circuits) + + # Create circuit objects and apply diagonalizing gates + compiled_circuits = self.compile_circuits(circuits) + + # Send the batch of circuit objects using sampler.run + sampler = LocalSampler() + job = sampler.run(compiled_circuits) + job_result = job.result() # local operation, no API call here + + # Increment counter for number of executions of qubit device + self._num_executions += 1 + + # Compute statistics using the state and/or samples + results = [] + self._metadatas = [] + + for circuit, quasi_dist in zip(circuits, job_result.quasi_dists): + # Process quasi-distribution into expected numerical result + res = self._process_batch_execute_result(circuit, quasi_dist) + results.append(res) + + # Construct metadata + metadata = { + "result_object": job_result, + "num_measurements": self._num_executions, + } + self._metadatas.append(metadata) + + # Update tracker + if self.tracker.active: + self.tracker.update(batches=1, batch_len=n_circuits) + self.tracker.record() + + if n_original_circuits != n_circuits: + self._n_circuits = n_circuits + self._n_original_circuits = n_original_circuits + results = self._vector_results(results) + + return results + + def post_process(self, *args) -> Tuple[Any, List[dict]]: + results = args[1] + metadatas = self._metadatas.copy() + self._metadatas = None + return results, metadatas + + def post_process_all(self, *args) -> Tuple[Any, List[dict]]: + # Dummy method for local Sampler, redirects to `post_process` + return self.post_process(*args) diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_plugin.py b/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_plugin.py new file mode 100644 index 000000000..43531ddef --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_plugin.py @@ -0,0 +1,355 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +import time +from typing import Optional, Sequence, Union + +import pennylane as qml +from local_sampler import QiskitLocalSampler +from pennylane.tape.qscript import QuantumScript +from pydantic import Field +from runtime_sampler import QiskitRuntimeSampler + +from covalent._shared_files.config import get_config +from covalent._shared_files.utils import import_from_path +from covalent.executor.qbase import ( + AsyncBaseQExecutor, + BaseThreadPoolQExecutor, + QCResult, + get_asyncio_event_loop, + get_thread_pool, +) + +__all__ = [ + "IBMQExecutor", + "QiskitExecutor", +] + +_QEXECUTOR_PLUGIN_DEFAULTS = { + "IBMQExecutor": { + "backend": "ibmq_qasm_simulator", + "ibmqx_token": "", + "hub": "ibm-q", + "group": "open", + "project": "main", + }, + "QiskitExecutor": { + "device": "local_sampler", + "backend": "ibmq_qasm_simulator", + "ibmqx_token": "", + "hub": "ibm-q", + "group": "open", + "project": "main", + "options": { + "optimization_level": 3, + "resilience_level": 1, + }, + }, +} + +_DEVICE_MAP = { + "local_sampler": QiskitLocalSampler, + "sampler": QiskitRuntimeSampler, +} + + +class IBMQExecutor(BaseThreadPoolQExecutor): + """ + A quantum executor that uses the Pennylane native :code:`"qiskit.ibmq"` device to run + circuits on IBM Quantum backends. The attributes :code:`backend`, :code:`ibmqx_token`, + :code:`hub`, :code:`group`, and :code:`project` are taken from the Covalent + configuration file by default, if available. + + Keyword Args: + max_jobs: The maximum number of jobs that can be submitted to the backend + concurrently. This number corresponds to the number of threads utilized + by this executor. Defaults to 20. + shots: The number of shots to use for the execution device. Overrides the + :code:`shots` value from the original device if set to :code:`None` or + a positive :code:`int`. The shots setting from the original device is + is used by default. + backend: The name of the IBM Quantum backend device. Defaults to + :code:`"ibmq_qasm_simulator"`. + ibmqx_token: The IBM Quantum API token. + hub: An IBM Quantum hub name. Defaults to :code:`"ibm-q"`. + group: An IBM Quantum group name. Defaults to :code:`"open"`. + project: An IBM Quantum project name. Defaults to :code:`"main"`. + + """ + + max_jobs: int = 20 + + backend: str = Field( + default_factory=lambda: get_config("qelectron")["IBMQExecutor"]["backend"] + ) + ibmqx_token: str = Field( + default_factory=lambda: get_config("qelectron")["IBMQExecutor"]["ibmqx_token"] + ) + hub: str = Field(default_factory=lambda: get_config("qelectron")["IBMQExecutor"]["hub"]) + group: str = Field(default_factory=lambda: get_config("qelectron")["IBMQExecutor"]["group"]) + project: str = Field( + default_factory=lambda: get_config("qelectron")["IBMQExecutor"]["project"] + ) + + def batch_submit(self, qscripts_list): + p = get_thread_pool(self.max_jobs) + jobs = [] + for qscript in qscripts_list: + dev = qml.device( + "qiskit.ibmq", + wires=self.qelectron_info.device_wires, + shots=self.override_shots, + backend=self.backend, + ibmqx_token=self.ibmqx_token, + hub=self.hub, + group=self.group, + project=self.project, + ) + + result_obj = QCResult.with_metadata( + device_name=dev.short_name, + executor=self, + ) + + jobs.append(p.submit(self.run_circuit, qscript, dev, result_obj)) + + return jobs + + +class QiskitExecutor(AsyncBaseQExecutor): + """ + A quantum executor that lets the user run circuits on IBM Quantum backends, + using runtime sessions and Qiskit primitives. The attributes :code:`device`, + :code:`backend`, :code:`ibmqx_token`, :code:`hub`, :code:`group`, and + :code:`project` are taken from the Covalent configuration file by default, if + available. + + Keyword Args: + device: The Qiskit primitive used to execute circuits. Valid values are + :code:`"sampler"` and :code:`"local_sampler"`. The value :code:`"sampler"` + corresponds to the Qiskit Runtime :code:`Sampler` primitive. The value + :code:`"local_sampler"` corresponds to the Qiskit :code:`Sampler` primitive, + which is entirely local. + backend: The name of the IBM Quantum backend device. Defaults to + :code:`"ibmq_qasm_simulator"`. + ibmqx_token: The IBM Quantum API token. + hub: An IBM Quantum hub name. Defaults to :code:`"ibm-q"`. + group: An IBM Quantum group name. Defaults to :code:`"open"`. + project: An IBM Quantum project name. Defaults to :code:`"main"`. + shots: The number of shots to run per circuit. Defaults to 1024. + single_job: Indicates whether or not all circuits are submitted + to a single job or as separate jobs. Defaults to :code:`True`. + max_time: An optional time limit for circuit execution on the IBM Quantum + backend. Defaults to :code:`None`, i.e. no time limit. + local_transpile: Indicates whether or not to transpile circuits before + submitting to IBM Quantum. Defaults to :code:`False`. + ibmqx_url: An optional URL for the Qiskit Runtime API. + channel: An optional channel for the Qiskit Runtime API. Defaults to + :code:`"ibm_quantum"`. + instance: An alternate means to specify :code:`hub`, :code:`group`, and + :code:`project`, formatted as :code:`"my-hub/my-group/my-project"`. + cloud_instance: Same as :code:`instance` but for the case :code:`channel="ibm_cloud"`. + options: A dictionary of options to pass to Qiskit Runtime. See + :code:`qiskit_ibm_runtime.options.Options` for valid fields. + """ + + device: str = Field( + default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["device"] + ) + backend: str = Field( + default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["backend"] + ) + ibmqx_token: str = Field( + default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["ibmqx_token"] + ) + hub: str = Field(default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["hub"]) + group: str = Field(default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["group"]) + project: str = Field( + default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["project"] + ) + + shots: Union[None, int, Sequence[int], Sequence[Union[int, Sequence[int]]]] = 1024 + single_job: bool = False + local_transpile: bool = False + + max_time: Optional[Union[int, str]] = None + + ibmqx_url: Optional[str] = None + channel: str = "ibm_quantum" + instance: str = "" + cloud_instance: str = "" + + options: Optional[Union[dict, tuple]] = Field( + # pylint: disable=unnecessary-lambda + default_factory=lambda: get_config("qelectron")["QiskitExecutor"]["options"] + ) + + @property + def device_init_kwargs(self): + """ + Keyword arguments to pass to the device constructor. + """ + return { + "wires": self.qelectron_info.device_wires, + "shots": self.qelectron_info.device_shots or self.override_shots, + "backend_name": self.backend, + "local_transpile": self.local_transpile, + "max_time": self.max_time, + "single_job": self.single_job, + "options": self.options or {}, + "service_init_kwargs": { + "ibmqx_token": self.ibmqx_token, + "ibmqx_url": self.ibmqx_url, + "channel": self.channel, + "instance": self.instance, + "cloud_instance": self.cloud_instance, + "hub": self.hub, + "group": self.group, + "project": self.project, + }, + } + + def execution_device(self) -> qml.QubitDevice: + """ + Create a subclasses execution device that ensure correct output typing. + """ + + # Initialize a custom Pennylane device + dev = _execution_device_factory( + self.device, + qnode_device_cls=import_from_path(self.qelectron_info.device_import_path), + **self.device_init_kwargs, + ) + + # Set `pennylane.active_return()` status + dev.pennylane_active_return = self.qelectron_info.pennylane_active_return + return dev + + def batch_submit(self, qscripts_list): + qscripts_list = list(qscripts_list) + + loop = get_asyncio_event_loop() + tasks = [] + + if self.single_job: + # All QScripts are submitted as a single job + + # initialize a custom Pennylane device + dev = self.execution_device() + + # initialize a result object + result_obj = QCResult.with_metadata(device_name=dev.short_name, executor=self) + + # run qscripts asynchronously + task = loop.create_task(self.run_all_circuits(qscripts_list, dev, result_obj)) + tasks.append(task) + else: + # Each QScript is submitted as a separate job + for qscript in qscripts_list: + # initialize a custom Pennylane device + dev = self.execution_device() + + # initialize a result object + result_obj = QCResult.with_metadata(device_name=dev.short_name, executor=self) + + # run qscripts asynchronously + task = loop.create_task(self.run_circuit(qscript, dev, result_obj)) + tasks.append(task) + + return tasks + + async def run_circuit( + self, tape, device, result_obj: QCResult + ): # pylint: disable=arguments-renamed + """ + Allows a circuit to be submitted asynchronously. + """ + + start_time = time.perf_counter() + results = qml.execute([tape], device, gradient_fn="best") + + await asyncio.sleep(0) + + results, metadatas = device.post_process(tape, results) + end_time = time.perf_counter() + + result_obj.results = results + result_obj.execution_time = end_time - start_time + result_obj.metadata["execution_metadata"].extend(metadatas) + + return result_obj + + async def run_all_circuits( + self, tapes, device, result_obj: QCResult + ): # pylint: disable=arguments-renamed + """ + Allows multiple circuits to be submitted asynchronously into a single + IBM Qiskit Runtime Job. + """ + + start_time = time.perf_counter() + results = qml.execute(tapes, device, gradient_fn="best") + + await asyncio.sleep(0) + + results, metadatas = device.post_process_all(tapes, results) + end_time = time.perf_counter() + + result_obj.results = results + result_obj.execution_time = end_time - start_time + result_obj.metadata["execution_metadata"].extend(metadatas) + + return result_obj + + def dict(self, *args, **kwargs): + dict_ = super().dict(*args, **kwargs) + # Needed to make the dict method hashable and JSON-able. + dict_["options"] = tuple(dict_["options"].items()) + return dict_ + + +def _execution_device_factory(device_name: str, qnode_device_cls, **kwargs): + """ + Creates a subclassed Pennylane device to ensure correct output typing. + """ + custom_device_cls = _DEVICE_MAP.get(device_name) + if not custom_device_cls: + raise ValueError(f"Unsupported Qiskit primitive device '{device_name}'.") + + class _QiskitExecutionDevice(custom_device_cls, qnode_device_cls): + # pylint: disable=too-few-public-methods + + pennylane_active_return: bool = True + + """ + Wrapper that inherits from a Pennylane device class to extend the custom + Pennylane-Qiskit device with any device-specific overridden methods. + """ + + @property + def stopping_condition(self): + """ + Needed to target :code:`support_operation` method of :code:`custom_device_cls`. + + NOTE: is identical to `pennylane._device.Device.stopping_condition`. + """ + return qml.BooleanFn( + lambda obj: not isinstance(obj, QuantumScript) + and self.supports_operation(obj.name) + ) + + return _QiskitExecutionDevice(**kwargs) diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_utils.py b/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_utils.py new file mode 100644 index 000000000..e683f96df --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/qiskit_utils.py @@ -0,0 +1,40 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Utilities for Qiskit-based QElectron executors and devices +""" + +from qiskit_ibm_runtime import Options + + +def extract_options(opts: dict) -> Options: + """ + Construct a Qiskit `Options` object from the options dictionary + """ + if isinstance(opts, tuple): + opts = dict(opts) + + _options = Options() + _options.optimization_level = opts.get("optimization_level", 3) + _options.resilience_level = opts.get("resilience_level", 1) + _options.max_execution_time = opts.get("max_execution_time", None) + _options.transpilation = opts.get("transpilation", _options.transpilation) + _options.resilience = opts.get("resilience", _options.resilience) + _options.execution = opts.get("execution", _options.execution) + _options.environment = opts.get("environment", _options.environment) + _options.simulator = opts.get("simulator", _options.simulator) + return _options diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/runtime_sampler.py b/covalent/executor/quantum_plugins/qiskit_plugin/runtime_sampler.py new file mode 100644 index 000000000..80b1a6708 --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/runtime_sampler.py @@ -0,0 +1,262 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""" +Pennylane-Qiskit device that uses the Qiskit Runtime `Sampler` primitive +""" + +from typing import Any, List, Sequence, Union + +import pennylane as qml +from devices_base import QiskitSamplerDevice +from qiskit_ibm_runtime import Sampler +from qiskit_utils import extract_options +from sessions import get_cached_session + + +class QiskitRuntimeSampler(QiskitSamplerDevice): + """ + Pennylane device that runs circuits with Qiskit Runtime's `Sampler` + """ + + short_name = "sampler" + + def __init__( # pylint: disable=too-many-arguments + self, + wires: int, + shots: Union[None, int, Sequence[int], Sequence[Union[int, Sequence[int]]]], + backend_name: str, + local_transpile: bool, + max_time: Union[int, str], + single_job: bool, + options: dict, + service_init_kwargs: dict, + ): + if options: + _options = extract_options(options) + _options.execution.shots = shots + else: + _options = None + + self.options = _options + self.max_time = max_time + self.single_job = single_job + + # These attributes are shared across `batch_execute` and `post_process` + self._active_jobs = [] + self._active_circuits = [] + self._vector_input = False + + super().__init__( + wires=wires, + shots=shots, + backend_name=backend_name, + local_transpile=local_transpile, + service_init_kwargs=service_init_kwargs, + ) + + def batch_execute(self, circuits, timeout: int = None): + """ + Submit a batch of circuits to IBM Qiskit Runtime for execution. + """ + + self._n_original_circuits = len(circuits) + circuits = self.broadcast_tapes(circuits) + self._n_circuits = len(circuits) + + # Create circuit objects and apply diagonalizing gates + compiled_circuits = self.compile_circuits(circuits) + self._active_circuits = [circuit.copy() for circuit in circuits] + + # Submit circuit objects to Qiskit Runtime + max_time = timeout or self.max_time + with get_cached_session(self.service, self.backend, max_time) as session: + sampler = Sampler(session=session, options=self.options) + + if self.single_job: + job = sampler.run(compiled_circuits) + self._active_jobs.append(job) + else: + for compiled_circuit in compiled_circuits: + job = sampler.run(compiled_circuit) + self._active_jobs.append(job) + + # This flag distinguishes vector inputs from gradient computations + self._vector_input = self._n_original_circuits != self._n_circuits + + # Return a dummy result and proceed to subsequent submissions. + return self._dummy_result() + + def post_process(self, *args): + """ + Post-process a single circuit result. + """ + + results = [] + metadatas = [] + for i, circuit in enumerate(self._active_circuits): + # Get broadcasted circuit and active job + circuit = self._active_circuits[i] + job = self._active_jobs[i] + + # Blocking call to retrieve job result + job_result = job.result() + self._num_executions += 1 + + # Extra metadata and quasi-distribution + assert len(job_result.quasi_dists) == 1 + assert len(job_result.metadata) == 1 + quasi_dist = job_result.quasi_dists[0] + + # Post process the quasi-distribution into expected result + res = self._process_batch_execute_result(circuit, quasi_dist) + results.append(res) + + # Update metadata + job_metadata = job_result.metadata[0] + metadata = { + "result_object": job_result, + "num_measurements": self.num_executions, + } + metadata.update(**job_metadata) + metadatas.append(metadata) + + # Update tracker + if self.tracker.active: + self.tracker.update(batches=len(self._active_circuits), batch_len=1) + self.tracker.record() + + # Reset active jobs and circuits + self._active_jobs = [] + self._active_circuits = [] + + # Re-execute original tape with a dummy device to get correct result + tape = args[0] + results = self._re_execute(self.broadcast_tapes([tape]), results) + + # Wrap in outer list for vector inputs + if self._vector_input: + results = self._vector_results(results) + + return results, metadatas + + def post_process_all(self, *args): + """ + Post-process a batch of circuit results. + """ + + # Blocking call to retrieve job result + job = self._active_jobs.pop() + job_result = job.result() + + # Increment counter for number of executions of qubit device + self._num_executions += 1 + + # Compute statistics using the state and/or samples + results = [] + metadatas = [] + + for i, circuit in enumerate(self._active_circuits): + quasi_dist = job_result.quasi_dists[i] + + # Update tracker and process quasi-distribution into expected result + res = self._process_batch_execute_result(circuit, quasi_dist) + results.append(res) + + # Construct metadata + job_metadata = job_result.metadata[i] + metadata = { + "result_object": job_result, + "num_measurements": self._num_executions, + } + metadata.update(**job_metadata) + metadatas.append(metadata) + + # Update tracker + if self.tracker.active: + self.tracker.update(batches=1, batch_len=len(self._active_circuits)) + self.tracker.record() + + # Reset active jobs and circuits + self._active_jobs = [] + self._active_circuits = [] + + # Re-execute with a dummy device to get correct result + tapes = args[0] + results = self._re_execute(self.broadcast_tapes(tapes), results) + + # Wrap in outer list for vector inputs + if self._vector_input: + results = self._vector_results(results) + + return results, metadatas + + def _re_execute(self, tapes, results): + """ + Executes circuits on a dummy device that returns the provided result. + + This is necessary for the raw output from `post_process` to be handled + as if it came from `batch_execute`. + """ + dev = _PostProcessDevice(self.wires, results) + return qml.execute(tapes, dev, gradient_fn="best") + + def _dummy_result(self) -> Union[Any, List[Any]]: + """ + Returns a dummy result to satisfy the expected `qml.execute` output. + This allows async submission to proceed without waiting for the job result. + """ + + dummy_results = qml.numpy.zeros(self.vector_shape) + + if self.pennylane_active_return: + dummy_results = list(dummy_results) + + if self.single_job and self._vector_input: + if self.pennylane_active_return: + return [[d] for d in dummy_results] + return [[d] for d in list(dummy_results)] + + if self._vector_input: + return [dummy_results] + return [[d] for d in dummy_results] + + +class _PostProcessDevice(QiskitRuntimeSampler): + """ + A copy of the QiskitRuntimeSampler class with a dummy `batch_execute` method + that returns the assigned `results`. + """ + + def __init__(self, wires, results: Any): + super().__init__( + wires=wires, + shots=1, + backend_name="", + local_transpile=False, + max_time=1, + single_job=False, + options={}, + service_init_kwargs={}, + ) + + self._results = results + + def batch_execute(self, *_, **__): + """ + Override to return expected result. + """ + return self._results diff --git a/covalent/executor/quantum_plugins/qiskit_plugin/sessions.py b/covalent/executor/quantum_plugins/qiskit_plugin/sessions.py new file mode 100644 index 000000000..71063c449 --- /dev/null +++ b/covalent/executor/quantum_plugins/qiskit_plugin/sessions.py @@ -0,0 +1,112 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Defines interactions with Qiskit Runtime sessions and services. +""" +from dataclasses import dataclass +from functools import lru_cache +from typing import Dict, Union + +from qiskit_ibm_runtime import QiskitRuntimeService, Session + + +@lru_cache +def init_runtime_service( + *, + ibmqx_token: str = None, + ibmqx_url: str = None, + channel: str = "", + instance: str = "", + cloud_instance: str = "", + hub: str = "", + group: str = "", + project: str = "", +) -> QiskitRuntimeService: + """ + Start `QiskitRuntimeService` with specified settings. + """ + + if channel == "ibm_quantum": + if not instance: + # Combine hub, group, and project to produce the instance. + hgp = [hub, group, project] + if all(hgp): + instance = "/".join(hgp) + else: + instance = "ibm-q/open/main" + + elif channel == "ibm_cloud": + # Require `cloud_instance` to be specified in this case. + if not cloud_instance: + raise ValueError("The `cloud_instance` is required for the 'ibm_cloud' channel.") + + instance = cloud_instance + + else: + raise ValueError( + "Invalid `channel` argument, must be either 'ibm_quantum' or 'ibm_cloud'." + ) + + # Initialize the runtime service instance. + return QiskitRuntimeService( + channel=channel, token=ibmqx_token, url=ibmqx_url, instance=instance + ) + + +@dataclass(frozen=True) +class SessionIdentifier: + """ + Proxy for defining a unique `Session` instance. + """ + + service_channel: str + service_instance: str + service_url: str + backend_name: str + max_time: Union[int, None] + + +def get_cached_session(service, backend, max_time) -> Session: + """ + Global Qiskit IBM Runtime sessions, unique up to fields in `SessionIdentifier` + """ + session_id = make_session_id(service, backend, max_time) + if session_id not in _sessions: + _sessions[session_id] = Session( + service=service, + backend=backend, + max_time=max_time, + ) + + return _sessions[session_id] + + +def make_session_id(service, backend, max_time) -> SessionIdentifier: + """ + Create session identifier from `Session` initialization arguments + """ + return SessionIdentifier( + # pylint: disable=protected-access + service_channel=service._account.channel, + service_instance=service._account.instance, + service_url=service._account.url, + backend_name=backend.name, + max_time=max_time, + ) + + +_sessions: Dict[SessionIdentifier, Session] = {} diff --git a/covalent/executor/utils/__init__.py b/covalent/executor/utils/__init__.py index 45949792e..7c5c5585a 100644 --- a/covalent/executor/utils/__init__.py +++ b/covalent/executor/utils/__init__.py @@ -2,20 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from .context import get_context, set_context from .wrappers import Signals diff --git a/covalent/executor/utils/context.py b/covalent/executor/utils/context.py new file mode 100644 index 000000000..2bd2a1770 --- /dev/null +++ b/covalent/executor/utils/context.py @@ -0,0 +1,41 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from contextlib import contextmanager + +from pydantic import BaseModel + + +class Context(BaseModel): + node_id: int = None + dispatch_id: str = None + + +def get_context(): + return current_context + + +@contextmanager +def set_context(node_id: int, dispatch_id: str): + global current_context + global unset_context + current_context = Context(node_id=node_id, dispatch_id=dispatch_id) + yield + current_context = unset_context + + +unset_context = Context() +current_context = unset_context diff --git a/covalent/executor/utils/wrappers.py b/covalent/executor/utils/wrappers.py index f38b8cc51..a682d6151 100644 --- a/covalent/executor/utils/wrappers.py +++ b/covalent/executor/utils/wrappers.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Helper functions for the local executor diff --git a/covalent/leptons/__init__.py b/covalent/leptons/__init__.py index 256809975..ccb2c0ac3 100644 --- a/covalent/leptons/__init__.py +++ b/covalent/leptons/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lepton wrappers.""" diff --git a/covalent/py.typed b/covalent/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/covalent/quantum/__init__.py b/covalent/quantum/__init__.py new file mode 100644 index 000000000..9e5551a23 --- /dev/null +++ b/covalent/quantum/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .qcluster import QCluster, Simulator diff --git a/covalent/quantum/qclient/__init__.py b/covalent/quantum/qclient/__init__.py new file mode 100644 index 000000000..d8e0960cc --- /dev/null +++ b/covalent/quantum/qclient/__init__.py @@ -0,0 +1,18 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .base_client import BaseQClient +from .local_client import LocalQClient diff --git a/covalent/quantum/qclient/base_client.py b/covalent/quantum/qclient/base_client.py new file mode 100644 index 000000000..d80c6e1c4 --- /dev/null +++ b/covalent/quantum/qclient/base_client.py @@ -0,0 +1,50 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from abc import ABC, abstractmethod, abstractproperty + + +class BaseQClient(ABC): + @abstractmethod + def submit(self, qscripts, executors, qelectron_info, qnode_specs): + raise NotImplementedError + + @abstractmethod + def get_results(self, batch_id): + raise NotImplementedError + + @abstractproperty + def selector(self): + raise NotImplementedError + + @abstractproperty + def database(self): + raise NotImplementedError + + # The following methods are abstract because the qserver + # is expecting serialized inputs and will be sending + # back serialized outputs, thus even if these methods + # essentially just pass through, for e.g in the LocalQClient's + # case, they are still to be implemented by the child class and + # should use the same seriliazing/deserializing method as is being + # used by the equivalent qserver. + @abstractmethod + def serialize(self, obj): + raise NotImplementedError + + @abstractmethod + def deserialize(self, ser_obj): + raise NotImplementedError diff --git a/covalent/quantum/qclient/core.py b/covalent/quantum/qclient/core.py new file mode 100644 index 000000000..041405413 --- /dev/null +++ b/covalent/quantum/qclient/core.py @@ -0,0 +1,68 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import List + +import pennylane as qml + +from .local_client import LocalQClient + + +class MiddleWare: + def __init__(self) -> None: + self.qclient = LocalQClient() + + def __new__(cls): + # Making this a singleton class + if not hasattr(cls, "instance"): + cls.instance = super(MiddleWare, cls).__new__(cls) + return cls.instance + + # The following attributes are properties + # because the qclient might change over time + # and every time it gets changed, we shouldn't + # have to set things like: + # self.database = self.qclient.database + # Thus, we override the access of these attributes + # and return/set these dynamically depending upon + # what the qclient is at that point in time. + + @property + def selector(self): + return self.qclient.selector + + @selector.setter + def selector(self, selector_func): + self.qclient.selector = selector_func + + @property + def database(self): + return self.qclient.database + + def run_circuits_async( + self, + qscripts: List[qml.tape.qscript.QuantumScript], + executors, + qelectron_info, + qnode_specs, + ): + return self.qclient.submit(qscripts, executors, qelectron_info, qnode_specs) + + def get_results(self, batch_id): + return self.qclient.get_results(batch_id) + + +middleware = MiddleWare() diff --git a/covalent/quantum/qclient/local_client.py b/covalent/quantum/qclient/local_client.py new file mode 100644 index 000000000..89bff7382 --- /dev/null +++ b/covalent/quantum/qclient/local_client.py @@ -0,0 +1,59 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ..._shared_files.utils import cloudpickle_deserialize, cloudpickle_serialize +from ..qserver import LocalQServer +from .base_client import BaseQClient + +# Since in the local case, the server and client are the same +# thus the "server" class's functions are directly accessed + + +class LocalQClient(BaseQClient): + def __init__(self) -> None: + self.qserver = LocalQServer() + + @property + def selector(self): + return self.deserialize(self.qserver.selector) + + @selector.setter + def selector(self, selector_func): + self.qserver.selector = self.serialize(selector_func) + + @property + def database(self): + return self.deserialize(self.qserver.database) + + def submit(self, qscripts, executors, qelectron_info, qnode_specs): + ser_qscripts = self.serialize(qscripts) + ser_executors = self.serialize(executors) + ser_qelectron_info = self.serialize(qelectron_info) + ser_qnode_specs = self.serialize(qnode_specs) + + return self.qserver.submit( + ser_qscripts, ser_executors, ser_qelectron_info, ser_qnode_specs + ) + + def get_results(self, batch_id): + ser_results = self.qserver.get_results(batch_id) + return self.deserialize(ser_results) + + def serialize(self, obj): + return cloudpickle_serialize(obj) + + def deserialize(self, ser_obj): + return cloudpickle_deserialize(ser_obj) diff --git a/covalent/quantum/qcluster/__init__.py b/covalent/quantum/qcluster/__init__.py new file mode 100644 index 000000000..ad218456e --- /dev/null +++ b/covalent/quantum/qcluster/__init__.py @@ -0,0 +1,22 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Defines QExecutors and provides a "manager" to get all available QExecutors +""" + +from .clusters import QCluster +from .simulator import Simulator diff --git a/covalent/quantum/qcluster/base.py b/covalent/quantum/qcluster/base.py new file mode 100644 index 000000000..cef232754 --- /dev/null +++ b/covalent/quantum/qcluster/base.py @@ -0,0 +1,101 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +from abc import ABC, abstractmethod +from concurrent.futures import Future +from typing import Callable, List, Sequence, Union + +from mpire.async_result import AsyncResult +from pydantic import BaseModel, Extra + +from ...executor.qbase import AsyncBaseQExecutor, BaseQExecutor, QCResult + + +class AsyncBaseQCluster(AsyncBaseQExecutor): + executors: Sequence[BaseQExecutor] + selector: Union[str, Callable] + + # Flag used to indicate whether `self.selector` is currently serialized. + # This needs to be without the "_" prefix so that it gets propagated to the server. + selector_serialized: bool = False + + @abstractmethod + def serialize_selector(self) -> None: + """ + Serializes the cluster's selector function. + """ + raise NotImplementedError + + @abstractmethod + def deserialize_selector(self) -> Union[str, Callable]: + """ + Deserializes the cluster's selector function. + """ + raise NotImplementedError + + @abstractmethod + def dict(self, *args, **kwargs) -> dict: + """ + Custom dict method to create a hashable `executors` attribute. + """ + raise NotImplementedError + + @abstractmethod + def get_selector(self): + """ + Returns the deserialized selector function. + """ + raise NotImplementedError + + async def _get_result(self, futures_list: List) -> List[QCResult]: + """ + Override the base method to handle the case where the `futures_list` + contains a mix of object types from various executors. + """ + results_and_times = [] + for fut in futures_list: + if isinstance(fut, asyncio.Task): + results_and_times.append(await fut) + elif isinstance(fut, Future): + results_and_times.append(fut.result()) + elif isinstance(fut, AsyncResult): + results_and_times.append(fut.get()) + else: + results_and_times.append(fut) + + return results_and_times + + +class BaseQSelector(ABC, BaseModel): + name: str = "base_qselector" + + def __call__(self, qscript, executors): + """ " + Interface used by the quantum server. + """ + return self.selector_function(qscript, executors) + + @abstractmethod + def selector_function(self, qscript, executors): + """ + Implement selection logic here. + """ + raise NotImplementedError + + class Config: + # Allows defining extra state fields in subclasses. + extra = Extra.allow diff --git a/covalent/quantum/qcluster/clusters.py b/covalent/quantum/qcluster/clusters.py new file mode 100644 index 000000000..fe56aecbf --- /dev/null +++ b/covalent/quantum/qcluster/clusters.py @@ -0,0 +1,101 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import base64 +from typing import Callable, Union + +from ..._shared_files.utils import cloudpickle_deserialize, cloudpickle_serialize +from .base import AsyncBaseQCluster, BaseQExecutor +from .default_selectors import selector_map + +__all__ = [ + "QCluster", +] + + +class QCluster(AsyncBaseQCluster): + """ + A cluster of quantum executors. + + Args: + executors: A sequence of quantum executors. + selector: A callable that selects an executor, or one of the strings "cyclic" + or "random". The "cyclic" selector (default) cycles through `executors` + and returns the next executor for each circuit. The "random" selector + chooses an executor from `executors` at random for each circuit. Any + user-defined selector must be callable with two positional arguments, + a circuit and a list of executors. A selector must also return exactly + one executor. + """ + + selector: Union[str, Callable] = "cyclic" + + # Flag used to indicate whether `self.selector` is currently serialized. + # This needs to be without the "_" prefix so that it gets propagated to the server. + selector_serialized: bool = False + + def batch_submit(self, qscripts_list): + if self.selector_serialized: + self.selector = self.deserialize_selector() + + selector = self.get_selector() + selected_executor: BaseQExecutor = selector(qscripts_list, self.executors) + + # Copy server-side set attributes into selector executor. + selected_executor.qelectron_info = self.qelectron_info.copy() + return selected_executor.batch_submit(qscripts_list) + + def serialize_selector(self) -> None: + if self.selector_serialized: + return + + # serialize to bytes with cloudpickle + self.selector = cloudpickle_serialize(self.selector) + + # convert to string to make JSON-able + self.selector = base64.b64encode(self.selector).decode("utf-8") + self.selector_serialized = True + + def deserialize_selector(self) -> Union[str, Callable]: + if not self.selector_serialized: + return self.selector + + # Deserialize the selector function (or string). + selector = cloudpickle_deserialize(base64.b64decode(self.selector.encode("utf-8"))) + + self.selector_serialized = False + return selector + + def dict(self, *args, **kwargs) -> dict: + # override `dict` method to convert dict attributes to JSON strings + dict_ = super(AsyncBaseQCluster, self).dict(*args, **kwargs) + dict_.update(executors=tuple(ex.json() for ex in self.executors)) + return dict_ + + def get_selector(self) -> Callable: + """ + Wraps `self.selector` to return defaults corresponding to string values. + + This method is called inside `batch_submit`. + """ + self.selector = self.deserialize_selector() + + if isinstance(self.selector, str): + # use default selector + selector_cls = selector_map[self.selector] + self.selector = selector_cls() + + return self.selector diff --git a/covalent/quantum/qcluster/default_selectors.py b/covalent/quantum/qcluster/default_selectors.py new file mode 100644 index 000000000..9334830ac --- /dev/null +++ b/covalent/quantum/qcluster/default_selectors.py @@ -0,0 +1,53 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=too-few-public-methods + +import random + +from .base import BaseQSelector + + +class RandomSelector(BaseQSelector): + """ + A selector that randomly selects an executor. + """ + + name: str = "random" + + def selector_function(self, qscript, executors): + return random.choice(executors) + + +class CyclicSelector(BaseQSelector): + """ + A selector that cycles in order through the available executors. + """ + + name: str = "cyclic" + + _counter: int = 0 + + def selector_function(self, qscript, executors): + executor = executors[self._counter % len(executors)] + self._counter += 1 + return executor + + +selector_map = { + "cyclic": CyclicSelector, + "random": RandomSelector, +} diff --git a/covalent/quantum/qcluster/simulator.py b/covalent/quantum/qcluster/simulator.py new file mode 100644 index 000000000..f6cab7c0d --- /dev/null +++ b/covalent/quantum/qcluster/simulator.py @@ -0,0 +1,99 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Union + +from pydantic import validator + +from ...executor.qbase import ( + BaseProcessPoolQExecutor, + BaseQExecutor, + BaseThreadPoolQExecutor, + SyncBaseQExecutor, +) + +SIMULATOR_DEVICES = [ + "default.qubit", + "default.qubit.autograd", + "default.qubit.jax", + "default.qubit.tf", + "default.qubit.torch", + "default.gaussian", + "lightning.qubit", +] + + +class Simulator(BaseQExecutor): + """ + A quantum executor that uses the specified Pennylane device to execute circuits. + Parallelizes circuit execution on the specified `device` using either threads + or processes. + + Keyword Args: + device: A valid string corresponding to a Pennylane device. Simulation-based + devices (e.g. "default.qubit" and "lightning.qubit") are recommended. + Defaults to "default.qubit" or "default.gaussian" depending on the + decorated QNode's device. + parallel: The type of parallelism to use. Valid values are "thread" and + "process". Passing any other value will result in synchronous execution. + Defaults to "thread". + workers: The number of threads or processes to use. Defaults to 10. + shots: The number of shots to use for the execution device. Overrides the + :code:`shots` value from the original device if set to :code:`None` or + a positive :code:`int`. The shots setting from the original device is + is used by default. + """ + + device: str = "default.qubit" + parallel: Union[bool, str] = "thread" + workers: int = 10 + + @validator("device") + def validate_device(cls, device): # pylint: disable=no-self-argument + """ + Check that the `device` attribute is NOT a provider or hardware device. + """ + if device not in SIMULATOR_DEVICES: + valid_devices = ", ".join(SIMULATOR_DEVICES[::-1] + [f"or {SIMULATOR_DEVICES[-1]}"]) + raise ValueError(f"Simulator device must be {valid_devices}.") + return device + + def batch_submit(self, qscripts_list): + # Defer to original QNode's device type in special cases. + if self.qelectron_info.device_name in ["default.gaussian"]: + device = self.qelectron_info.device_name + else: + device = self.device + + # Select backend batching the chosen method of parallelism. + if self.parallel == "process": + self._backend = BaseProcessPoolQExecutor(num_processes=self.workers, device=device) + elif self.parallel == "thread": + self._backend = BaseThreadPoolQExecutor(num_threads=self.workers, device=device) + else: + self._backend = SyncBaseQExecutor(device=device) + + # Pass on server-set settings from original device. + updates = {"device_name": device, "device_shots": self.override_shots} + self._backend.qelectron_info = self.qelectron_info.copy(update=updates) + self._backend.qnode_specs = self.qnode_specs.copy() + + return self._backend.batch_submit(qscripts_list) + + def batch_get_results(self, futures_list): + return self._backend.batch_get_results(futures_list) + + _backend: BaseQExecutor = None diff --git a/covalent/quantum/qserver/__init__.py b/covalent/quantum/qserver/__init__.py new file mode 100644 index 000000000..1f06fe57a --- /dev/null +++ b/covalent/quantum/qserver/__init__.py @@ -0,0 +1,18 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .core import QServer +from .servers import LocalQServer diff --git a/covalent/quantum/qserver/core.py b/covalent/quantum/qserver/core.py new file mode 100644 index 000000000..340f4c649 --- /dev/null +++ b/covalent/quantum/qserver/core.py @@ -0,0 +1,405 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Quantum Server Implementation: Handles the async execution of quantum circuits. +""" + +import datetime +import uuid +from asyncio import Task +from typing import Callable, List, Tuple + +from pennylane.tape import QuantumScript + +from ..._shared_files.qinfo import QElectronInfo, QNodeSpecs +from ..._shared_files.utils import ( + cloudpickle_deserialize, + cloudpickle_serialize, + select_first_executor, +) +from ...executor.utils import get_context +from ..qcluster.base import AsyncBaseQCluster, BaseQExecutor +from .database import Database +from .utils import CircuitInfo, get_cached_executor, get_circuit_id + + +class FuturesTable: + """ + Container for async task futures corresponding to a sub-batch of executing + qscripts, as identified by a batch UUID. + """ + + def __init__(self): + self._ef_pairs = {} + + def add_executor_future_pairs( + self, + executor_future_pairs: List[Tuple[BaseQExecutor, Task]], + submission_order: List[int], + ) -> str: + """ + Add a list of futures to the table and return a corresponding UUID. + """ + batch_id = str(uuid.uuid4()) + self._ef_pairs[batch_id] = (executor_future_pairs, submission_order) + return batch_id + + def pop_executor_future_pairs( + self, + batch_id: str, + ) -> Tuple[List[Tuple[BaseQExecutor, Task]], List[int]]: + """ + Retrieve a list of futures from the table using a UUID. + """ + return self._ef_pairs.pop(batch_id) + + +class QServer: + """ + Initialize a QServer instance with a given selector function. + """ + + # def __init__(self, selector: BaseQSelector = None) -> None: + def __init__(self, selector: Callable = None) -> None: + self.futures_table = FuturesTable() + + # self._selector = selector or SimpleSelector(selector_function=select_first_executor) + self._selector = selector or select_first_executor + self._database = Database() + + @property + def selector(self): + """ + Executor selector function for the Quantum server. + """ + return self._selector + + @selector.setter + def selector(self, ser_selector): + self._selector = self.deserialize(ser_selector) + + @property + def database(self): + """Return the database for reading.""" + return self.serialize(self._database) + + def select_executors( + self, + qscripts: List[QuantumScript], + executors: List[BaseQExecutor], + qnode_specs: QNodeSpecs, + ): + """ + Links qscripts with an executor + based on the self.selector function + """ + + linked_executors = [] + for qscript in qscripts: + selected_executor = self.selector(qscript, executors) + + # Use cached executor. + selected_executor = get_cached_executor(**selected_executor.dict()) + + if isinstance(selected_executor, AsyncBaseQCluster): + # Apply QCluster's selector as well. + qcluster = selected_executor + selected_executor = qcluster.get_selector()(qscript, qcluster.executors) + + # Use cached executor. + selected_executor = get_cached_executor(**selected_executor.dict()) + + # This is the only place where the qnode_specs are set. + selected_executor.qnode_specs = qnode_specs.copy() + + # An example `linked_executors` will look like: + # [exec_4, exec_4, exec_2, exec_3] + # Their indices corresponding to the indices of `qscripts`. + linked_executors.append(selected_executor) + + return linked_executors + + def submit_to_executors( + self, + qscripts: List[QuantumScript], + linked_executors: List[BaseQExecutor], + qelectron_info: QElectronInfo, + ): + """ + Generates futures for scheduled execution + of qscripts on respective executors + """ + + # Since we will be modifying the qscripts list (or sometimes tuple). + qscripts = list(qscripts).copy() + + submission_order = [] + executor_qscript_sub_batch_pairs = [] + for i, qscript in enumerate(qscripts): + if qscript is None: + continue + + # Generate a sub batch of qscripts to be executed on the same executor + qscript_sub_batch = [linked_executors[i], {i: qscript}] + + # The qscript submission order is stored in this list to ensure that + # the final result is recombined correctly, even if task-circuit + # correspondence is not one-to-one. See, for example, PR #13. + submission_order.append(i) + + for j in range(i + 1, len(qscripts)): + if linked_executors[i] == linked_executors[j]: + qscript_sub_batch[1][j] = qscripts[j] + qscripts[j] = None + submission_order.append(j) + + # An example `qscript_sub_batch` will look like: + # [exec_4, {0: qscript_1, 3: qscript_4}] + + executor_qscript_sub_batch_pairs.append(qscript_sub_batch) + + # An example `executor_qscript_sub_batch_pairs` will look like: + # [ + # [exec_4, {0: qscript_1, 3: qscript_4}], + # [exec_2, {2: qscript_3}], + # [exec_3, {4: qscript_5}], + # ] + + # Generating futures from each executor: + executor_future_pairs = [] + for executor, qscript_sub_batch in executor_qscript_sub_batch_pairs: + executor.qelectron_info = qelectron_info.copy() + qscript_futures = executor.batch_submit(qscript_sub_batch.values()) + + futures_dict = dict(zip(qscript_sub_batch.keys(), qscript_futures)) + # An example `futures_dict` will look like: + # {0: future_1, 3: future_4} + + executor_future_pairs.append([executor, futures_dict]) + + # An example `executor_future_pairs` will look like: + # [[exec_4, {0: future_1, 3: future_4}], [exec_2, {2: future_3}], [exec_3, {4: future_5}]] + + return executor_future_pairs, submission_order + + def submit( + self, + qscripts: List[QuantumScript], + executors: List[BaseQExecutor], + qelectron_info: QElectronInfo, + qnode_specs: QNodeSpecs, + ): + # pylint: disable=too-many-locals + """ + Submit a list of QuantumScripts to the server for execution. + + Args: + qscripts: A list of QuantumScripts to run. + executors: The executors to choose from to use for running the QuantumScripts. + qelectron_info: Information about the qelectron as provided by the user. + qnode_specs: Specifications of the qnode. + + Returns: + str: A UUID corresponding to the batch of submitted QuantumScripts. + """ + + # Get current electron's context + context = get_context() + + # Get qelectron info, qnode specs, quantum scripts, and executors + qelectron_info = self.deserialize(qelectron_info) + qnode_specs = self.deserialize(qnode_specs) + qscripts = self.deserialize(qscripts) + executors = self.deserialize(executors) + + # Generate a list of executors for each qscript. + linked_executors = self.select_executors(qscripts, executors, qnode_specs) + + # Assign qscript sub-batches to unique executors. + executor_future_pairs, submission_order = self.submit_to_executors( + qscripts, linked_executors, qelectron_info + ) + + # Get batch ID for N qscripts being async-executed on M <= N executors. + batch_id = self.futures_table.add_executor_future_pairs( + executor_future_pairs, submission_order + ) + + # Storing the qscripts, executors, and metadata in the database + batch_time = str(datetime.datetime.now()) + key_value_pairs = [[], []] + + for i, qscript in enumerate(qscripts): + circuit_id = get_circuit_id(batch_id, i) + key_value_pairs[0].append(circuit_id) + circuit_info = CircuitInfo( + electron_node_id=context.node_id, + dispatch_id=context.dispatch_id, + circuit_name=qelectron_info.name, + circuit_description=qelectron_info.description, + circuit_diagram=qscript.draw(), + qnode_specs=qnode_specs, + qexecutor=linked_executors[i], + save_time=batch_time, + circuit_id=circuit_id, + qscript=qscript.graph.serialize() if linked_executors[i].persist_data else None, + ).dict() + + key_value_pairs[1].append(circuit_info) + + # An example `key_value_pairs` will look like: + # [ + # [ + # "circuit_0-uuid", + # "circuit_1-uuid", + # + # ... + # ], + # [ + # {"electron_node_id": "node_1", + # "dispatch_id": "uuid", + # "circuit_name": "qscript_name", + # "circuit_description": "qscript_description", + # "qnode_specs": {"qnode_specs": "specs"}, + # "qexecutor": "executor_1", + # "save_time": "2021-01-01 00:00:00", + # "circuit_id": "circuit_0-uuid", + # "qscript": "qscript_1"}, + + # {"electron_node_id": "node_1", + # "dispatch_id": "uuid", + # "circuit_name": "qscript_name", + # "circuit_description": "qscript_description", + # "qnode_specs": {"qnode_specs": "specs"}, + # "qexecutor": "executor_2", + # "save_time": "2021-01-01 00:00:00", + # "circuit_id": "circuit_1-uuid", + # "qscript": "qscript_2"}, + # + # ... + # ], + # ] + + self._database.set( + *key_value_pairs, dispatch_id=context.dispatch_id, node_id=context.node_id + ) + + return batch_id + + def get_results(self, batch_id): + # pylint: disable=too-many-locals + """ + Retrieve the results of previously submitted QuantumScripts from the server. + + Args: + batch_id: The UUID corresponding to the batch of submitted QuantumScripts. + + Returns: + List: An ordered list of results for the submitted QuantumScripts. + """ + + # Get current electron's context + context = get_context() + + results_dict = {} + key_value_pairs = [[], []] + executor_future_pairs, submission_order = self.futures_table.pop_executor_future_pairs( + batch_id + ) + + # ids of (e)xecutor_(f)uture_(p)airs, hence `idx_efp` + qscript_submission_index = 0 + for idx_efp, (executor, futures_sub_batch) in enumerate(executor_future_pairs): + result_objs = executor.batch_get_results(futures_sub_batch.values()) + + # Adding results according to the order of the qscripts + # ids of (f)utures_(s)ub_(b)atch, hence `idx_fsb` + for idx_fsb, circuit_number in enumerate(futures_sub_batch.keys()): + result_obj = result_objs[idx_fsb] + + # Expand `result_obj` in case contains multiple circuits. + # Loop through sub-results to store separately in db. + for result_number, sub_result_obj in enumerate(result_obj.expand()): + qscript_number = submission_order[qscript_submission_index] + + # Use tuple of integers for key to enable later multi-factor sort. + key = (qscript_number, circuit_number, result_number) + results_dict[key] = sub_result_obj.results[0] + qscript_submission_index += 1 + + # To store the results in the database + circuit_id = get_circuit_id(batch_id, circuit_number + result_number) + key_value_pairs[0].append(circuit_id) + key_value_pairs[1].append( + { + "execution_time": sub_result_obj.execution_time, + "result": sub_result_obj.results if executor.persist_data else None, + "result_metadata": sub_result_obj.metadata + if executor.persist_data + else None, + } + ) + + # An example `key_value_pairs` will look like: + # [ + # [ + # "result_circuit_0-uuid", + # "result_circuit_1-uuid", + # ], + # [ + # {"execution_time": "2021-01-01 00:00:00", + # "result": [result_11, ...], + # "result_metadata": [{}, ...]}, + # + # {"execution_time": "2021-01-01 00:00:00", + # "result": [result_21, ...], + # "result_metadata": [{}, ...]}, + # ], + # ] + + # Deleting the futures once their results have been retrieved + del executor_future_pairs[idx_efp][1] + + # After deletion of one `future_sub_batch`, the `executor_future_pairs` will look like: + # [[exec_4], [exec_2, {2: future_3}], [exec_3, {4: future_5}]] + + self._database.set( + *key_value_pairs, dispatch_id=context.dispatch_id, node_id=context.node_id + ) + + # An example `results_dict` will look like: + # {0: result_1, 3: result_4, 2: result_3, 4: result_5} + + # Perform multi-factor sort on `results_dict`. + batch_results = list(dict(sorted(results_dict.items())).values()) + + # An example `batch_results` will look like: + # [result_1, result_2, result_3, result_4, result_5] + + return self.serialize(batch_results) + + def serialize(self, obj): + """ + Serialize an object. + """ + return cloudpickle_serialize(obj) + + def deserialize(self, obj): + """ + Deserialize an object. + """ + return cloudpickle_deserialize(obj) diff --git a/covalent/quantum/qserver/database.py b/covalent/quantum/qserver/database.py new file mode 100644 index 000000000..eb2becef7 --- /dev/null +++ b/covalent/quantum/qserver/database.py @@ -0,0 +1,94 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path + +from ..._shared_files.config import get_config +from .serialize import JsonLmdb, Strategy +from .utils import CircuitInfo + + +def set_serialization_strategy(strategy_name): + """ + Select a serialization strategy for the database + """ + Database.serialization_strategy = strategy_name + + +class Database: + # dash-separated names result in fallback strategy with try/except loops, + # other valid strategy names uses the one strategy every time + # see `covalent_qelectron/quantum_server/serialize.py` + serialization_strategy = (Strategy.PICKLE, Strategy.ORJSON) + + @property + def strategy_name(self): + # using a property here for dynamic access + # allows runtime strategy selection with `set_serialization_strategy()` + return Database.serialization_strategy + + def __init__(self, db_dir=None): + if db_dir: + self.db_dir = Path(db_dir) + else: + self.db_dir = Path(get_config("dispatcher")["qelectron_db_path"]) + + def _get_db_path(self, dispatch_id, node_id, *, mkdir=False): + dispatch_id = "default-dispatch" if dispatch_id is None else dispatch_id + node_id = "default-node" if node_id is None else node_id + db_path = self.db_dir.joinpath(dispatch_id, f"node-{node_id}") + if mkdir: + db_path.mkdir(parents=True, exist_ok=True) + + return db_path.resolve().absolute() + + def _open(self, dispatch_id, node_id, mkdir=False): + db_path = self._get_db_path(dispatch_id, node_id, mkdir=mkdir) + + if not db_path.exists(): + raise FileNotFoundError(f"Missing database directory {db_path}.") + + return JsonLmdb.open_with_strategy( + file=str(db_path), flag="c", strategy_name=self.strategy_name + ) + + def set(self, keys, values, *, dispatch_id, node_id): + with self._open(dispatch_id, node_id, mkdir=True) as db: + for i, circuit_id in enumerate(keys): + stored_val: dict = db.get(circuit_id, None) + if stored_val is None: + continue + + stored_val.update(values[i]) + values[i] = stored_val + + db.update(dict(zip(keys, values))) + + def get_circuit_ids(self, *, dispatch_id, node_id): + with self._open(dispatch_id, node_id) as db: + return list(db.keys()) + + def get_circuit_info(self, circuit_id, *, dispatch_id, node_id): + with self._open(dispatch_id, node_id) as db: + return CircuitInfo(**db.get(circuit_id, None)) + + def get_db(self, *, dispatch_id, node_id): + db_copy = {} + with self._open(dispatch_id, node_id) as db: + for key, value in db.items(): + db_copy[key] = value + + return db_copy diff --git a/covalent/quantum/qserver/serialize.py b/covalent/quantum/qserver/serialize.py new file mode 100644 index 000000000..097d46e03 --- /dev/null +++ b/covalent/quantum/qserver/serialize.py @@ -0,0 +1,226 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Implement several different serialization methods for QNode output data written +to the database. +""" +import warnings +import zlib +from abc import ABC, abstractmethod +from enum import Enum +from typing import Sequence, Union + +import cloudpickle as pickle +import lmdb +import orjson +from lmdbm.lmdbm import Lmdb, remove_lmdbm + + +class _Serializer(ABC): + """ + base class for serializer strategies + """ + + @property + @abstractmethod + def name(self) -> str: + """ + strategy name + """ + + @abstractmethod + def pre_value(self, value): + """ + returns processed value to be written to db + """ + raise NotImplementedError() + + @abstractmethod + def post_value(self, value): + """ + post-process value read from db and return + """ + raise NotImplementedError() + + +class _OrjsonStrategy(_Serializer): + """ + uses `orjson` and `zlib` to serialize/deserialize + """ + + name = "orjson" + + def pre_value(self, value): + return zlib.compress(orjson.dumps(value, option=orjson.OPT_SERIALIZE_NUMPY)) + + def post_value(self, value): + return orjson.loads(zlib.decompress(value)) + + +class _PickleStrategy(_Serializer): + """ + uses `cloudpickle` and `zlib` to serialize/deserialize + """ + + name = "pickle" + + def pre_value(self, value): + return zlib.compress(pickle.dumps(value)) + + def post_value(self, value): + return pickle.loads(zlib.decompress(value)) + + +class _FallbackStrategy(_Serializer): + """ + tries multiple strategies until success + """ + + name = "fallback" + + def __init__(self, strategies): + self.strategies = strategies + + def pre_value(self, value): + for strategy in self.strategies: + try: + return strategy.pre_value(value) + except TypeError as te: + warnings.warn( + f"serialization strategy '{strategy.name}' failed on `pre_value`; " + f"value: {value}; error: {te}." + ) + raise RuntimeError("all strategies failed to encode data") + + def post_value(self, value): + for strategy in self.strategies: + try: + return strategy.post_value(value) + except TypeError as te: + warnings.warn( + f"serialization strategy '{strategy.name}' failed on `post_value`; " + f"value: {value}; error: {te}." + ) + raise RuntimeError("all strategies failed to decode data") + + +class Strategy(Enum): + """ + available serialization strategies + """ + + ORJSON = _OrjsonStrategy + PICKLE = _PickleStrategy + FALLBACK = _FallbackStrategy + + +class JsonLmdb(Lmdb): + """ + custom `Lmdb` implementation with pre- and post-value strategy option + """ + + def __init__(self, strategy_type: Union[Strategy, Sequence[Strategy]], **kw): + self._strategy_map = {} + self.strategy = self.init_strategy(strategy_type) + super().__init__(**kw) + + def _pre_key(self, key): + return key.encode("utf-8") + + def _post_key(self, key): + return key.decode("utf-8") + + def _pre_value(self, value): + return self.strategy.pre_value(value) + + def _post_value(self, value): + return self.strategy.post_value(value) + + @property + def strategy_map(self): + """ + allows access to strategies by str name + """ + if not self._strategy_map: + self._strategy_map = {s.value.name: s.value for s in list(Strategy)} + return self._strategy_map + + def init_strategy(self, strategy_type) -> _Serializer: + """ + initialize an instance of the named strategy + """ + if isinstance(strategy_type, Strategy): + return self._init_single_strategy(strategy_type) + + # strategy with fallback + strategies = [self._init_single_strategy(typ) for typ in strategy_type] + return _FallbackStrategy(strategies) + + def _init_single_strategy(self, strategy_type) -> _Serializer: + if not isinstance(strategy_type, Strategy): + raise TypeError(f"expected Strategy, not {type(strategy_type.__class__.__name__)}") + + strategy_cls = self.strategy_map.get(strategy_type.value.name) + if strategy_cls is None: + raise ValueError(f"unknown database strategy '{strategy_type}'") + return strategy_cls() + + @classmethod + def open_with_strategy( + cls, + file, + flag="r", + mode=0o755, + map_size=2**20, + *, + strategy_name, + autogrow=True, + ): + """ + Custom open classmethod that takes a (new) strategy argument. Mostly + replicates original `Lmdb.open`, except passing `strategy_name` to initializer. + + Opens the database `file`. + `flag`: r (read only, existing), w (read and write, existing), + c (read, write, create if not exists), n (read, write, overwrite existing) + `map_size`: Initial database size. Defaults to 2**20 (1MB). + `autogrow`: Automatically grow the database size when `map_size` is exceeded. + WARNING: Set this to `False` for multi-process write access. + `strategy_name`: either 'orjson' or 'pickle' + """ + + if flag == "r": # Open existing database for reading only (default) + env = lmdb.open( + file, map_size=map_size, max_dbs=1, readonly=True, create=False, mode=mode + ) + elif flag == "w": # Open existing database for reading and writing + env = lmdb.open( + file, map_size=map_size, max_dbs=1, readonly=False, create=False, mode=mode + ) + elif flag == "c": # Open database for reading and writing, creating it if it doesn't exist + env = lmdb.open( + file, map_size=map_size, max_dbs=1, readonly=False, create=True, mode=mode + ) + elif flag == "n": # Always create a new, empty database, open for reading and writing + remove_lmdbm(file) + env = lmdb.open( + file, map_size=map_size, max_dbs=1, readonly=False, create=True, mode=mode + ) + else: + raise ValueError("Invalid flag") + + return cls(strategy_name, env=env, autogrow=autogrow) diff --git a/covalent/quantum/qserver/servers/__init__.py b/covalent/quantum/qserver/servers/__init__.py new file mode 100644 index 000000000..b219efd70 --- /dev/null +++ b/covalent/quantum/qserver/servers/__init__.py @@ -0,0 +1,17 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .local import LocalQServer diff --git a/covalent/quantum/qserver/servers/local.py b/covalent/quantum/qserver/servers/local.py new file mode 100644 index 000000000..aa71ad917 --- /dev/null +++ b/covalent/quantum/qserver/servers/local.py @@ -0,0 +1,19 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ..core import QServer + +LocalQServer = QServer diff --git a/covalent/quantum/qserver/utils.py b/covalent/quantum/qserver/utils.py new file mode 100644 index 000000000..a301e3a93 --- /dev/null +++ b/covalent/quantum/qserver/utils.py @@ -0,0 +1,77 @@ +# Copyright 2023 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import datetime +import importlib +from functools import lru_cache +from typing import Any, Dict, List, Optional, Union + +import orjson +from pydantic import BaseModel + +from ..._shared_files.qinfo import QNodeSpecs +from ...executor.qbase import BaseQExecutor + +BATCH_ID_SEPARATOR = "@" +MAX_DIFFERENT_EXECUTORS = 10 + + +class CircuitInfo(BaseModel): + electron_node_id: Optional[int] = None + dispatch_id: Optional[str] = None + circuit_name: Optional[str] = None + circuit_description: Optional[str] = None + circuit_diagram: Optional[str] = None + qnode_specs: Optional[Union[Dict[str, Any], QNodeSpecs]] = None + qexecutor: Optional[BaseQExecutor] = None + save_time: datetime.datetime + circuit_id: Optional[str] = None + qscript: Optional[str] = None + execution_time: Optional[float] = None + result: Optional[List[Any]] = None + result_metadata: Optional[List[Dict[str, Any]]] = None + + +@lru_cache +def get_cached_module(): + return importlib.import_module(".executor", package="covalent") + + +def executor_from_dict(executor_dict: Dict): + if "executors" in executor_dict: + executors = [executor_from_dict(ed) for ed in executor_dict["executors"]] + executor_dict["executors"] = executors + + name = executor_dict["name"] + executor_class = getattr(get_cached_module(), name) + return executor_class(**executor_dict) + + +@lru_cache(maxsize=MAX_DIFFERENT_EXECUTORS) +def get_cached_executor(**executor_dict): + if "executors" in executor_dict: + executors = tuple(orjson.loads(ex) for ex in executor_dict["executors"]) + executor_dict["executors"] = executors + + return executor_from_dict(executor_dict) + + +def reconstruct_executors(deconstructed_executors: List[Dict]): + return [executor_from_dict(de) for de in deconstructed_executors] + + +def get_circuit_id(batch_id, circuit_number): + return f"circuit_{circuit_number}{BATCH_ID_SEPARATOR}{batch_id}" diff --git a/covalent/triggers/__init__.py b/covalent/triggers/__init__.py index ca9cd77ce..130b609ee 100644 --- a/covalent/triggers/__init__.py +++ b/covalent/triggers/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .base import BaseTrigger # nopycln: import from .dir_trigger import DirTrigger # nopycln: import diff --git a/covalent/triggers/base.py b/covalent/triggers/base.py index bf1d38ffa..837c155a0 100644 --- a/covalent/triggers/base.py +++ b/covalent/triggers/base.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio diff --git a/covalent/triggers/dir_trigger.py b/covalent/triggers/dir_trigger.py index 8be7d02f2..bd5d2980a 100644 --- a/covalent/triggers/dir_trigger.py +++ b/covalent/triggers/dir_trigger.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio diff --git a/covalent/triggers/sqlite_trigger.py b/covalent/triggers/sqlite_trigger.py index f233d9342..840ef9e0e 100644 --- a/covalent/triggers/sqlite_trigger.py +++ b/covalent/triggers/sqlite_trigger.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import sqlite3 import time diff --git a/covalent/triggers/time_trigger.py b/covalent/triggers/time_trigger.py index 24bc78b3b..175bd562e 100644 --- a/covalent/triggers/time_trigger.py +++ b/covalent/triggers/time_trigger.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import time from threading import Event diff --git a/covalent/triggers/trigger_loader.py b/covalent/triggers/trigger_loader.py index 6a5262cb8..0ae88a16b 100644 --- a/covalent/triggers/trigger_loader.py +++ b/covalent/triggers/trigger_loader.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from covalent.triggers import BaseTrigger, DirTrigger, SQLiteTrigger, TimeTrigger diff --git a/covalent_dispatcher/.gitignore b/covalent_dispatcher/.gitignore index 6d1d5b0eb..03da16ab9 100644 --- a/covalent_dispatcher/.gitignore +++ b/covalent_dispatcher/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Ignore results folders results/** diff --git a/covalent_dispatcher/__init__.py b/covalent_dispatcher/__init__.py index 818dab342..1cf39cda1 100644 --- a/covalent_dispatcher/__init__.py +++ b/covalent_dispatcher/__init__.py @@ -2,20 +2,16 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .entry_point import cancel_running_dispatch, run_dispatcher, run_redispatch diff --git a/covalent_dispatcher/_cli/__init__.py b/covalent_dispatcher/_cli/__init__.py index fe5685c23..851153ae0 100644 --- a/covalent_dispatcher/_cli/__init__.py +++ b/covalent_dispatcher/_cli/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Import CLI tool functionalities.""" from .service import _is_server_running diff --git a/covalent_dispatcher/_cli/cli.py b/covalent_dispatcher/_cli/cli.py index 9788c889a..f4c4daa65 100644 --- a/covalent_dispatcher/_cli/cli.py +++ b/covalent_dispatcher/_cli/cli.py @@ -4,21 +4,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Covalent CLI Tool.""" diff --git a/covalent_dispatcher/_cli/groups/__init__.py b/covalent_dispatcher/_cli/groups/__init__.py index 031b251b3..7e1e54920 100644 --- a/covalent_dispatcher/_cli/groups/__init__.py +++ b/covalent_dispatcher/_cli/groups/__init__.py @@ -2,19 +2,15 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .db import db diff --git a/covalent_dispatcher/_cli/groups/db.py b/covalent_dispatcher/_cli/groups/db.py index fbdb35ffc..a30bd0623 100644 --- a/covalent_dispatcher/_cli/groups/db.py +++ b/covalent_dispatcher/_cli/groups/db.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from os import path from pathlib import Path from subprocess import PIPE, Popen diff --git a/covalent_dispatcher/_cli/migrate.py b/covalent_dispatcher/_cli/migrate.py index c621b951a..cf6d0008c 100644 --- a/covalent_dispatcher/_cli/migrate.py +++ b/covalent_dispatcher/_cli/migrate.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Utils for migrating legacy (0.110-era) result object to a modern result object.""" diff --git a/covalent_dispatcher/_cli/service.py b/covalent_dispatcher/_cli/service.py index 24fd6415a..1282d7502 100644 --- a/covalent_dispatcher/_cli/service.py +++ b/covalent_dispatcher/_cli/service.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Covalent CLI Tool - Service Management.""" @@ -60,8 +56,6 @@ from .._db.datastore import DataStore from .migrate import migrate_pickled_result_object -cm = ConfigManager() - UI_PIDFILE = get_config("dispatcher.cache_dir") + "/ui.pid" UI_LOGFILE = get_config("user_interface.log_dir") + "/covalent_ui.log" UI_SRVDIR = f"{os.path.dirname(os.path.abspath(__file__))}/../../covalent_ui" @@ -468,7 +462,6 @@ def start( "Covalent was unable to start due to the following error: ", fg="red", bold=True ) click.secho(traceback.format_exc(), fg="lightgrey") - return ctx.exit(1) set_config("user_interface.port", port) set_config("dispatcher.port", port) @@ -503,6 +496,9 @@ def start( console.print(config_table) console.print("\nServer Status: [green]:heavy_check_mark:[/green] Running", style="bold") + dispatcher_address = f"http://{str(get_config('dispatcher.address'))}:{str(port)}" + console.print(f"\nCovalent UI can be accessed at {dispatcher_address}") + if not no_footer: console.print("\nFor a summary of the system status, use 'covalent status'") print_footer(console) @@ -694,7 +690,10 @@ def purge(ctx, hard: bool, yes: bool, hell_yeah: bool) -> None: """ Purge Covalent from this system """ + cm = ConfigManager() + console = Console() + removal_list = { get_config("sdk.log_dir"), get_config("dispatcher.cache_dir"), @@ -976,6 +975,9 @@ def print_json(data): @click.command() def config() -> None: """Display the Covalent configuration""" + + cm = ConfigManager() + console = Console() print_header(console) console.print(Panel("Covalent Configuration", expand=False, border_style="blue")) diff --git a/covalent_dispatcher/_core/__init__.py b/covalent_dispatcher/_core/__init__.py index eb2986767..1803c81cf 100644 --- a/covalent_dispatcher/_core/__init__.py +++ b/covalent_dispatcher/_core/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .data_manager import make_derived_dispatch, make_dispatch from .dispatcher import cancel_dispatch, run_dispatch diff --git a/covalent_dispatcher/_core/data_manager.py b/covalent_dispatcher/_core/data_manager.py index 0f015de00..55ebb9f1c 100644 --- a/covalent_dispatcher/_core/data_manager.py +++ b/covalent_dispatcher/_core/data_manager.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Defines the core functionality of the result service @@ -31,6 +27,7 @@ from covalent._results_manager import Result from covalent._shared_files import logger from covalent._shared_files.defaults import sublattice_prefix +from covalent._shared_files.qelectron_utils import extract_qelectron_db, write_qelectron_db from covalent._shared_files.util_classes import RESULT_STATUS from covalent._workflow.lattice import Lattice from covalent._workflow.transport_graph_ops import TransportGraphOps @@ -50,6 +47,7 @@ def generate_node_result( + dispatch_id: str, node_id: int, node_name: str, start_time=None, @@ -66,7 +64,8 @@ def generate_node_result( Helper routine to prepare the node result Arg(s) - node_id: ID of the node in the transport graph + dispatch_id: ID of the dispatched workflow + node_id: ID of the node in the trasport graph node_name: Name of the node start_time: Start time of the node end_time: Time at which the node finished executing @@ -81,6 +80,13 @@ def generate_node_result( Return(s) Dictionary of the inputs """ + clean_stdout, bytes_data = extract_qelectron_db(stdout) + qelectron_data_exists = bool(bytes_data) + + if qelectron_data_exists: + app_log.debug(f"Reproducing Qelectron database for node {node_id}") + write_qelectron_db(dispatch_id, node_id, bytes_data) + return { "node_id": node_id, "node_name": node_name, @@ -89,10 +95,11 @@ def generate_node_result( "status": status, "output": output, "error": error, - "stdout": stdout, + "stdout": clean_stdout, "stderr": stderr, "sub_dispatch_id": sub_dispatch_id, "sublattice_result": sublattice_result, + "qelectron_data_exists": qelectron_data_exists, } @@ -339,7 +346,7 @@ def make_derived_dispatch( def get_result_object(dispatch_id: str) -> Result: - return _registered_dispatches[dispatch_id] + return _registered_dispatches.get(dispatch_id) def _register_result_object(result_object: Result): @@ -371,6 +378,7 @@ async def _update_parent_electron(result_object: Result): status = RESULT_STATUS.FAILED parent_result_obj = get_result_object(dispatch_id) node_result = generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=parent_result_obj.lattice.transport_graph.get_node_value(node_id, "name"), end_time=result_object.end_time, diff --git a/covalent_dispatcher/_core/data_modules/__init__.py b/covalent_dispatcher/_core/data_modules/__init__.py index 9d1b05526..21d7eaa5c 100644 --- a/covalent_dispatcher/_core/data_modules/__init__.py +++ b/covalent_dispatcher/_core/data_modules/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_dispatcher/_core/data_modules/job_manager.py b/covalent_dispatcher/_core/data_modules/job_manager.py index 1500e1aab..d8bdb837e 100644 --- a/covalent_dispatcher/_core/data_modules/job_manager.py +++ b/covalent_dispatcher/_core/data_modules/job_manager.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # """Interface to the Jobs table""" diff --git a/covalent_dispatcher/_core/dispatcher.py b/covalent_dispatcher/_core/dispatcher.py index 0d853c458..978b61f4f 100644 --- a/covalent_dispatcher/_core/dispatcher.py +++ b/covalent_dispatcher/_core/dispatcher.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Defines the core functionality of the dispatcher @@ -171,6 +167,7 @@ async def _submit_task(result_object, node_id): output = result_object.lattice.transport_graph.get_node_value(node_id, "value") timestamp = datetime.now(timezone.utc) node_result = datasvc.generate_node_result( + dispatch_id=result_object.dispatch_id, node_id=node_id, node_name=node_name, start_time=timestamp, @@ -185,6 +182,7 @@ async def _submit_task(result_object, node_id): timestamp = datetime.now(timezone.utc) output = result_object.lattice.transport_graph.get_node_value(node_id, "output") node_result = datasvc.generate_node_result( + dispatch_id=result_object.dispatch_id, node_id=node_id, node_name=node_name, start_time=timestamp, @@ -382,7 +380,11 @@ async def cancel_dispatch(dispatch_id: str, task_ids: List[int] = None) -> None: if not dispatch_id: return - tg = datasvc.get_result_object(dispatch_id=dispatch_id).lattice.transport_graph + res_object = datasvc.get_result_object(dispatch_id) + if res_object is None: + return + + tg = res_object.lattice.transport_graph if task_ids: app_log.debug(f"Cancelling tasks {task_ids} in dispatch {dispatch_id}") else: diff --git a/covalent_dispatcher/_core/execution.py b/covalent_dispatcher/_core/execution.py index 20c3315d1..9a0b8721d 100644 --- a/covalent_dispatcher/_core/execution.py +++ b/covalent_dispatcher/_core/execution.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Defines the core functionality of the dispatcher diff --git a/covalent_dispatcher/_core/runner.py b/covalent_dispatcher/_core/runner.py index c87d5111f..192317027 100644 --- a/covalent_dispatcher/_core/runner.py +++ b/covalent_dispatcher/_core/runner.py @@ -2,27 +2,24 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Defines the core functionality of the runner """ import asyncio +import importlib import json import traceback from concurrent.futures import ThreadPoolExecutor @@ -35,8 +32,10 @@ from covalent._shared_files.config import get_config from covalent._shared_files.util_classes import RESULT_STATUS from covalent._workflow import DepsBash, DepsCall, DepsPip +from covalent._workflow.transport import TransportableObject from covalent.executor import _executor_manager from covalent.executor.base import AsyncBaseExecutor, wrapper_fn +from covalent.executor.utils import set_context from . import data_manager as datasvc from .data_modules.job_manager import get_jobs_metadata, set_cancel_result @@ -139,30 +138,34 @@ async def _run_abstract_task( if cancel_req: app_log.debug(f"Don't run cancelled task {dispatch_id}:{node_id}") return datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, start_time=timestamp, end_time=timestamp, status=RESULT_STATUS.CANCELLED, ) + serialized_callable = result_object.lattice.transport_graph.get_node_value( node_id, "function" ) + input_values = _get_task_input_values(result_object, abstract_inputs) abstract_args = abstract_inputs["args"] abstract_kwargs = abstract_inputs["kwargs"] args = [input_values[node_id] for node_id in abstract_args] kwargs = {k: input_values[v] for k, v in abstract_kwargs.items()} + task_input = {"args": args, "kwargs": kwargs} app_log.debug(f"Collecting deps for task {node_id}") - call_before, call_after = _gather_deps(result_object, node_id) except Exception as ex: app_log.error(f"Exception when trying to resolve inputs or deps: {ex}") - return datasvc.generate_node_result( + node_result = datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, start_time=timestamp, @@ -170,7 +173,10 @@ async def _run_abstract_task( status=RESULT_STATUS.FAILED, error=str(ex), ) + return node_result + node_result = datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, start_time=timestamp, @@ -232,17 +238,38 @@ async def _run_task( app_log.debug("Exception when trying to instantiate executor:") app_log.debug(tb) error_msg = tb if debug_mode else str(ex) - return datasvc.generate_node_result( + node_result = datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, end_time=datetime.now(timezone.utc), status=RESULT_STATUS.FAILED, error=error_msg, ) + return node_result # Run the task on the executor and register any failures. try: app_log.debug(f"Executing task {node_name}") + + def qelectron_compatible_wrapper(node_id, dispatch_id, ser_user_fn, *args, **kwargs): + user_fn = ser_user_fn.get_deserialized() + + try: + mod_qe_utils = importlib.import_module("covalent._shared_files.qelectron_utils") + + with set_context(node_id, dispatch_id): + res = user_fn(*args, **kwargs) + mod_qe_utils.print_qelectron_db() + + return res + except ModuleNotFoundError: + return user_fn(*args, **kwargs) + + serialized_callable = TransportableObject( + partial(qelectron_compatible_wrapper, node_id, dispatch_id, serialized_callable) + ) + assembled_callable = partial(wrapper_fn, serialized_callable, call_before, call_after) # Note: Executor proxy monitors the executors instances and watches the send and receive queues of the executor. @@ -258,6 +285,7 @@ async def _run_task( ) node_result = datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, end_time=datetime.now(timezone.utc), @@ -273,6 +301,7 @@ async def _run_task( app_log.debug(tb) error_msg = tb if debug_mode else str(ex) node_result = datasvc.generate_node_result( + dispatch_id=dispatch_id, node_id=node_id, node_name=node_name, end_time=datetime.now(timezone.utc), diff --git a/covalent_dispatcher/_core/runner_modules/__init__.py b/covalent_dispatcher/_core/runner_modules/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_dispatcher/_core/runner_modules/__init__.py +++ b/covalent_dispatcher/_core/runner_modules/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_dispatcher/_core/runner_modules/executor_proxy.py b/covalent_dispatcher/_core/runner_modules/executor_proxy.py index 17ae83c23..448b7c69b 100644 --- a/covalent_dispatcher/_core/runner_modules/executor_proxy.py +++ b/covalent_dispatcher/_core/runner_modules/executor_proxy.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Monitor executor instances.""" diff --git a/covalent_dispatcher/_db/datastore.py b/covalent_dispatcher/_db/datastore.py index 0e23be496..f84b8afee 100644 --- a/covalent_dispatcher/_db/datastore.py +++ b/covalent_dispatcher/_db/datastore.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from contextlib import contextmanager from os import environ, path diff --git a/covalent_dispatcher/_db/dispatchdb.py b/covalent_dispatcher/_db/dispatchdb.py index f8cf1c701..9fcb4d2dd 100644 --- a/covalent_dispatcher/_db/dispatchdb.py +++ b/covalent_dispatcher/_db/dispatchdb.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Dispatch DataBase script.""" diff --git a/covalent_dispatcher/_db/jobdb.py b/covalent_dispatcher/_db/jobdb.py index 712d5988d..795bc3b11 100644 --- a/covalent_dispatcher/_db/jobdb.py +++ b/covalent_dispatcher/_db/jobdb.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """This module contains all the functions required interface with the jobs table""" diff --git a/covalent_dispatcher/_db/load.py b/covalent_dispatcher/_db/load.py index a9c3ad865..b3a4e036d 100644 --- a/covalent_dispatcher/_db/load.py +++ b/covalent_dispatcher/_db/load.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Functions to load results from the database.""" diff --git a/covalent_dispatcher/_db/models.py b/covalent_dispatcher/_db/models.py index 1c4007b5d..50c5f9bd2 100644 --- a/covalent_dispatcher/_db/models.py +++ b/covalent_dispatcher/_db/models.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Models for the workflows db. Based on schema v9 @@ -179,6 +175,9 @@ class Electron(Base): # Name of the file containing the functions that are called before electron execution call_after_filename = Column(Text) + # Name of the file containing the Qelectron database (temporary) + qelectron_data_exists = Column(Boolean, nullable=False, default=False) + # Name of the file containing standard error generated by the task stderr_filename = Column(Text) diff --git a/covalent_dispatcher/_db/update.py b/covalent_dispatcher/_db/update.py index d7cd8cd7f..b21e8fa7f 100644 --- a/covalent_dispatcher/_db/update.py +++ b/covalent_dispatcher/_db/update.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from datetime import datetime @@ -69,6 +65,7 @@ def _node( sublattice_result: "Result" = None, stdout: str = None, stderr: str = None, + qelectron_data_exists: bool = False, ) -> None: """ Update the node result in the transport graph. @@ -85,6 +82,7 @@ def _node( sublattice_result: The result of the sublattice if any. stdout: The stdout of the node execution. stderr: The stderr of the node execution. + qelectron_data_exists: Flag indicating presence of Qelectron(s) inside the task Returns: None @@ -105,6 +103,7 @@ def _node( sublattice_result=sublattice_result, stdout=stdout, stderr=stderr, + qelectron_data_exists=qelectron_data_exists, ) upsert.electron_data(result) diff --git a/covalent_dispatcher/_db/upsert.py b/covalent_dispatcher/_db/upsert.py index 8f7e99c29..31276b617 100644 --- a/covalent_dispatcher/_db/upsert.py +++ b/covalent_dispatcher/_db/upsert.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from datetime import datetime, timezone @@ -229,6 +225,11 @@ def _electron_data(session: Session, result: Result, cancel_requested: bool = Fa except KeyError: node_output = None + try: + node_qelectron_data_exists = tg.get_node_value(node_id, "qelectron_data_exists") + except KeyError: + node_qelectron_data_exists = False + executor = tg.get_node_value(node_id, "metadata")["executor"] started_at = tg.get_node_value(node_key=node_id, value_key="start_time") completed_at = tg.get_node_value(node_key=node_id, value_key="end_time") @@ -290,6 +291,7 @@ def _electron_data(session: Session, result: Result, cancel_requested: bool = Fa "deps_filename": ELECTRON_DEPS_FILENAME, "call_before_filename": ELECTRON_CALL_BEFORE_FILENAME, "call_after_filename": ELECTRON_CALL_AFTER_FILENAME, + "qelectron_data_exists": node_qelectron_data_exists, "cancel_requested": cancel_requested, "created_at": datetime.now(timezone.utc), "updated_at": datetime.now(timezone.utc), @@ -306,6 +308,7 @@ def _electron_data(session: Session, result: Result, cancel_requested: bool = Fa "started_at": started_at, "updated_at": datetime.now(timezone.utc), "completed_at": completed_at, + "qelectron_data_exists": node_qelectron_data_exists, } update_electrons_data(**electron_record_kwarg) if status == Result.COMPLETED: diff --git a/covalent_dispatcher/_db/write_result_to_db.py b/covalent_dispatcher/_db/write_result_to_db.py index ea69b4f4d..3b529ce7c 100644 --- a/covalent_dispatcher/_db/write_result_to_db.py +++ b/covalent_dispatcher/_db/write_result_to_db.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """This module contains all the functions required to save the decomposed result object in the database.""" @@ -201,6 +197,7 @@ def transaction_insert_electrons_data( deps_filename: str, call_before_filename: str, call_after_filename: str, + qelectron_data_exists: bool, cancel_requested: bool, created_at: dt, updated_at: dt, @@ -246,6 +243,7 @@ def transaction_insert_electrons_data( deps_filename=deps_filename, call_before_filename=call_before_filename, call_after_filename=call_after_filename, + qelectron_data_exists=qelectron_data_exists, is_active=True, job_id=job_row.id, created_at=created_at, @@ -386,6 +384,7 @@ def update_electrons_data( started_at: dt, updated_at: dt, completed_at: dt, + qelectron_data_exists: bool, ) -> None: """This function updates the electrons record.""" @@ -417,6 +416,7 @@ def update_electrons_data( started_at=started_at, updated_at=updated_at, completed_at=completed_at, + qelectron_data_exists=qelectron_data_exists, ) ) diff --git a/covalent_dispatcher/_service/app.py b/covalent_dispatcher/_service/app.py index b96409cf4..417477153 100644 --- a/covalent_dispatcher/_service/app.py +++ b/covalent_dispatcher/_service/app.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import codecs import json diff --git a/covalent_dispatcher/_service/app_dask.py b/covalent_dispatcher/_service/app_dask.py index bd8010f83..58a4bd0bc 100644 --- a/covalent_dispatcher/_service/app_dask.py +++ b/covalent_dispatcher/_service/app_dask.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from __future__ import annotations diff --git a/covalent_dispatcher/_triggers_app/__init__.py b/covalent_dispatcher/_triggers_app/__init__.py index ca58f308b..435979579 100644 --- a/covalent_dispatcher/_triggers_app/__init__.py +++ b/covalent_dispatcher/_triggers_app/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .app import router as triggers_router # nopycln: import from .app import triggers_only_app # nopycln: import diff --git a/covalent_dispatcher/_triggers_app/app.py b/covalent_dispatcher/_triggers_app/app.py index abd18aa8b..d4d92b0a6 100644 --- a/covalent_dispatcher/_triggers_app/app.py +++ b/covalent_dispatcher/_triggers_app/app.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Triggers server API routes and standalone app definition""" diff --git a/covalent_dispatcher/entry_point.py b/covalent_dispatcher/entry_point.py index c7ef7c596..534ecb47b 100644 --- a/covalent_dispatcher/entry_point.py +++ b/covalent_dispatcher/entry_point.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Self-contained entry point for the dispatcher diff --git a/covalent_migrations/env.py b/covalent_migrations/env.py index 5deefc526..5c55d7847 100644 --- a/covalent_migrations/env.py +++ b/covalent_migrations/env.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from logging.config import fileConfig diff --git a/covalent_migrations/script.py.mako b/covalent_migrations/script.py.mako index 26dfef2d4..8759815e5 100644 --- a/covalent_migrations/script.py.mako +++ b/covalent_migrations/script.py.mako @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """${message} diff --git a/covalent_migrations/versions/26d71848a404_v12.py b/covalent_migrations/versions/26d71848a404_v12.py index f7767eede..5b23a7756 100644 --- a/covalent_migrations/versions/26d71848a404_v12.py +++ b/covalent_migrations/versions/26d71848a404_v12.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """v12 diff --git a/covalent_migrations/versions/97202f5f47cb_v13.py b/covalent_migrations/versions/97202f5f47cb_v13.py index a0c9d200e..021884e44 100644 --- a/covalent_migrations/versions/97202f5f47cb_v13.py +++ b/covalent_migrations/versions/97202f5f47cb_v13.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """v13 diff --git a/covalent_migrations/versions/9b9d58f02985_v11.py b/covalent_migrations/versions/9b9d58f02985_v11.py index 1dbc42f8a..83781dd35 100644 --- a/covalent_migrations/versions/9b9d58f02985_v11.py +++ b/covalent_migrations/versions/9b9d58f02985_v11.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """v11 diff --git a/covalent_migrations/versions/b60c5ecdf927_init.py b/covalent_migrations/versions/b60c5ecdf927_init.py index dcec32fde..f4bf1bde1 100644 --- a/covalent_migrations/versions/b60c5ecdf927_init.py +++ b/covalent_migrations/versions/b60c5ecdf927_init.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """init diff --git a/covalent_migrations/versions/de0a6c0a3e3d_add_qelectron_data_exists_flag_to_db.py b/covalent_migrations/versions/de0a6c0a3e3d_add_qelectron_data_exists_flag_to_db.py new file mode 100644 index 000000000..b1a904814 --- /dev/null +++ b/covalent_migrations/versions/de0a6c0a3e3d_add_qelectron_data_exists_flag_to_db.py @@ -0,0 +1,59 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""add qelectron_data_exists flag to db + +Revision ID: de0a6c0a3e3d +Revises: f64ecaa040d5 +Create Date: 2023-05-29 15:53:25.621195 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +# pragma: allowlist nextline secret +revision = "de0a6c0a3e3d" +# pragma: allowlist nextline secret +down_revision = "f64ecaa040d5" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("electron_dependency", schema=None) as batch_op: + batch_op.create_foreign_key("electron_link", "electrons", ["parent_electron_id"], ["id"]) + + with op.batch_alter_table("electrons", schema=None) as batch_op: + batch_op.add_column( + sa.Column( + "qelectron_data_exists", sa.Boolean(), nullable=False, server_default=sa.false() + ) + ) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("electrons", schema=None) as batch_op: + batch_op.drop_column("qelectron_data_exists") + + with op.batch_alter_table("electron_dependency", schema=None) as batch_op: + batch_op.drop_constraint("electron_link", type_="foreignkey") + + # ### end Alembic commands ### diff --git a/covalent_migrations/versions/f64ecaa040d5_add_jobs_db_table.py b/covalent_migrations/versions/f64ecaa040d5_add_jobs_db_table.py index c1d3d61f1..6e412a322 100644 --- a/covalent_migrations/versions/f64ecaa040d5_add_jobs_db_table.py +++ b/covalent_migrations/versions/f64ecaa040d5_add_jobs_db_table.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Add jobs db table diff --git a/covalent_ui/.gitignore b/covalent_ui/.gitignore index 16f75d13e..b4e9d7129 100644 --- a/covalent_ui/.gitignore +++ b/covalent_ui/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # XML files *.xml diff --git a/covalent_ui/api/main.py b/covalent_ui/api/main.py index fc33a3c7a..e01ad864b 100644 --- a/covalent_ui/api/main.py +++ b/covalent_ui/api/main.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Fastapi init""" diff --git a/covalent_ui/api/v1/__init__.py b/covalent_ui/api/v1/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/__init__.py +++ b/covalent_ui/api/v1/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/data_layer/__init__.py b/covalent_ui/api/v1/data_layer/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/data_layer/__init__.py +++ b/covalent_ui/api/v1/data_layer/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/data_layer/electron_dal.py b/covalent_ui/api/v1/data_layer/electron_dal.py index c1683dcb6..3d24cfdfb 100644 --- a/covalent_ui/api/v1/data_layer/electron_dal.py +++ b/covalent_ui/api/v1/data_layer/electron_dal.py @@ -2,37 +2,45 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import codecs import pickle import uuid +from datetime import timedelta +from pathlib import Path from fastapi import HTTPException from fastapi.responses import JSONResponse -from sqlalchemy import extract +from sqlalchemy import extract, select from sqlalchemy.sql import func from covalent._results_manager.results_manager import get_result +from covalent._shared_files import logger +from covalent._shared_files.config import get_config +from covalent._shared_files.qelectron_utils import QE_DB_DIRNAME +from covalent.quantum.qserver.database import Database from covalent_dispatcher._core.execution import _get_task_inputs as get_task_inputs from covalent_dispatcher._service.app import get_result +from covalent_ui.api.v1.data_layer.lattice_dal import Lattices from covalent_ui.api.v1.database.schema.electron import Electron from covalent_ui.api.v1.database.schema.lattices import Lattice +from covalent_ui.api.v1.models.electrons_model import JobDetailsResponse, JobsResponse from covalent_ui.api.v1.utils.file_handle import validate_data +from covalent_ui.api.v1.utils.models_helper import JobsSortBy, SortDirection + +app_log = logger.app_log +RESULTS_DIR = Path(get_config("dispatcher")["results_dir"]).resolve() class Electrons: @@ -41,6 +49,193 @@ class Electrons: def __init__(self, db_con) -> None: self.db_con = db_con + def electron_exist(self, electron_id: int) -> bool: + return self.db_con.execute( + select(Electron).where(Electron.transport_graph_node_id == electron_id) + ).fetchone() + + def validate_dispatch_and_electron( + self, dispatch_id: uuid.UUID, electron_id: int, response: JobsResponse + ) -> (bool, JobsResponse): + validated = True + if not Lattices(db_con=self.db_con).dispatch_exist(dispatch_id=dispatch_id): + validated = False + response.data = None + response.msg = f"Dispatch ID {dispatch_id} does not exist" + return (validated, response) + if not self.electron_exist(electron_id=electron_id): + validated = False + response.data = None + response.msg = f"Electron ID {electron_id} does not exist" + return (validated, response) + + return (validated, response) + + def get_jobs( + self, + dispatch_id: uuid.UUID, + electron_id: int, + sort_by: JobsSortBy, + sort_direction: SortDirection, + count, + offset, + ) -> JobsResponse: + try: + jobs_response = JobsResponse() + jobs_response.data = None + jobs_response.msg = None + (validated, jobs_response) = self.validate_dispatch_and_electron( + dispatch_id=dispatch_id, electron_id=electron_id, response=jobs_response + ) + if not validated: + return jobs_response + try: + jobs = _qelectron_get_db(str(dispatch_id), electron_id) + if not jobs: + jobs_response.data = [] + jobs_response.msg = f"Job details for {dispatch_id} dispatch with {electron_id} node do not exist." + return jobs_response + except Exception as exc: + app_log.debug(f"Unable to process get jobs \n {exc}") + jobs_response.data = [] + jobs_response.msg = ( + f"Jobs for {dispatch_id} dispatch with {electron_id} node do not exist." + ) + return jobs_response + jobs_list = list( + map( + lambda circuit: { + "job_id": circuit["circuit_id"], + "start_time": circuit["save_time"], + "executor": circuit["result_metadata"]["executor_name"], + "status": "COMPLETED" + if len(circuit["result"]) != 0 and len(circuit["result_metadata"]) != 0 + else "RUNNING", + }, + jobs.values(), + ) + ) + jobs_list.sort( + reverse=sort_direction == SortDirection.DESCENDING, key=lambda d: d[sort_by.value] + ) + result = ( + jobs_list[offset : count + offset] if count is not None else jobs_list[offset:] + ) + + jobs_response.data = result + return jobs_response + except Exception as exc: + app_log.debug(f"Unable to process get jobs \n {exc}") + jobs_response.msg = "Something went wrong. Please check the log." + jobs_response.data = None + return jobs_response + + def get_job_detail(self, dispatch_id, electron_id, job_id) -> JobDetailsResponse: + try: + job_detail_response = JobDetailsResponse() + job_detail_response.data = None + job_detail_response.msg = None + (validated, job_detail_response) = self.validate_dispatch_and_electron( + dispatch_id=dispatch_id, electron_id=electron_id, response=job_detail_response + ) + if not validated: + return job_detail_response + try: + jobs = _qelectron_get_db(dispatch_id=str(dispatch_id), node_id=electron_id) + selected_job = jobs[job_id] + except Exception as exc: + app_log.debug(f"Unable to process get jobs \n {exc}") + job_detail_response.data = [] + job_detail_response.msg = ( + f"Job details for {dispatch_id} dispatch with {electron_id} node do not exist." + ) + return job_detail_response + if not selected_job: + job_detail_response.data = {} + job_detail_response.msg = ( + f"Dispatch ID {dispatch_id} or Electron ID does not exist" + ) + return job_detail_response + if "result" not in selected_job: + job_detail_response.data = {} + job_detail_response.msg = ( + f"Dispatch ID {dispatch_id} or Electron ID does not exist" + ) + return job_detail_response + selected_job["result"] = str(selected_job["result"])[1:-1] + job_overview = { + "overview": { + "job_name": selected_job["circuit_name"] + if "circuit_name" in selected_job + else None, + "backend": selected_job["result_metadata"]["executor_backend_name"] + if "result_metadata" in selected_job + and "executor_backend_name" in selected_job["result_metadata"] + else None, + "time_elapsed": selected_job["execution_time"] + if "execution_time" in selected_job + else None, + "result": selected_job["result"] if "result" in selected_job else None, + "status": "COMPLETED" + if len(selected_job["result"]) != 0 + and len(selected_job["result_metadata"]) != 0 + else "RUNNING", + "start_time": selected_job["save_time"] + if "save_time" in selected_job + else None, + }, + "circuit": { + "total_qbits": None, + "depth": None, + "circuit_diagram": selected_job["circuit_diagram"] + if "circuit_diagram" in selected_job + else None, + }, + "executor": { + "name": selected_job["qexecutor"]["name"] + if "qexecutor" in selected_job and "name" in selected_job["qexecutor"] + else None, + "executor": str(selected_job["qexecutor"]) + if "qexecutor" in selected_job + else None, + }, + } + + job_overview["overview"]["end_time"] = ( + selected_job["save_time"] + timedelta(seconds=selected_job["execution_time"]) + if job_overview["overview"]["start_time"] + and job_overview["overview"]["time_elapsed"] + else None + ) + if selected_job["qnode_specs"] is not None: + job_overview["circuit"]["total_qbits"] = ( + selected_job["qnode_specs"]["num_used_wires"] + if "num_used_wires" in selected_job["qnode_specs"] + else None + ) + job_overview["circuit"]["depth"] = ( + selected_job["qnode_specs"]["depth"] + if "depth" in selected_job["qnode_specs"] + else None + ) + gate_sizes = ( + selected_job["qnode_specs"]["gate_sizes"] + if "gate_sizes" in selected_job["qnode_specs"] + else None + ) + if gate_sizes: + for gate_wires, gate_count in gate_sizes.items(): + job_overview["circuit"][f"qbit{gate_wires}_gates"] = gate_count + + job_detail_response.data = job_overview + job_detail_response.msg = "" + return job_detail_response + except Exception as exc: + app_log.debug(f"Unable to process get job details \n {exc}") + job_detail_response.msg = "Something went wrong. Please check the log." + job_detail_response.data = None + return job_detail_response + def get_electrons_id(self, dispatch_id, electron_id) -> Electron: """ Read electron table by electron id @@ -70,6 +265,8 @@ def get_electrons_id(self, dispatch_id, electron_id) -> Electron: Electron.error_filename, Electron.name, Electron.status, + Electron.job_id, + Electron.qelectron_data_exists, Electron.started_at.label("started_at"), Electron.completed_at.label("completed_at"), ( @@ -92,6 +289,21 @@ def get_electrons_id(self, dispatch_id, electron_id) -> Electron: ) return data + def get_total_quantum_calls(self, dispatch_id, node_id, is_qa_electron: bool): + if not is_qa_electron: + return None + qdb_path = _path_to_qelectron_db(dispatch_id=str(dispatch_id)) + return len( + Database(qdb_path).get_circuit_ids(dispatch_id=str(dispatch_id), node_id=node_id) + ) + + def get_avg_quantum_calls(self, dispatch_id, node_id, is_qa_electron: bool): + if not is_qa_electron: + return None + jobs = _qelectron_get_db(dispatch_id=str(dispatch_id), node_id=node_id) + time = [jobs[value]["execution_time"] for value in jobs] + return sum(time) / len(time) + def get_electron_inputs(self, dispatch_id: uuid.UUID, electron_id: int) -> str: """ Get Electron Inputs @@ -111,3 +323,22 @@ def get_electron_inputs(self, dispatch_id: uuid.UUID, electron_id: int) -> str: node_id=electron_id, node_name=electron_result.name, result_object=result_object ) return validate_data(inputs) + + +def _path_to_qelectron_db(dispatch_id: str) -> Path: + """Construct path to the QElectron database in Covalent's results directory.""" + + # This is NOT the QServer's data but rather the qdb stored on Covalent's server. + qdb_path = RESULTS_DIR / dispatch_id / QE_DB_DIRNAME + qdb_path = qdb_path.resolve().absolute() + + if not qdb_path.exists(): + app_log.error(f"Expected QElectron database at {qdb_path}.") + + return qdb_path + + +def _qelectron_get_db(dispatch_id: str, node_id: int) -> dict: + """Return the QElectron jobs dictionary for a given node.""" + qdb_path = _path_to_qelectron_db(dispatch_id) + return Database(qdb_path).get_db(dispatch_id=dispatch_id, node_id=node_id) diff --git a/covalent_ui/api/v1/data_layer/graph_dal.py b/covalent_ui/api/v1/data_layer/graph_dal.py index b6a63fb5b..a8845c8a1 100644 --- a/covalent_ui/api/v1/data_layer/graph_dal.py +++ b/covalent_ui/api/v1/data_layer/graph_dal.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Graph Data Layer""" from uuid import UUID @@ -52,6 +48,7 @@ def get_nodes(self, parent_lattice_id: int): electrons.completed_at, electrons.status, electrons.type, + electrons.qelectron_data_exists, electrons.executor as executor_label, (case when electrons.type = 'sublattice' then diff --git a/covalent_ui/api/v1/data_layer/lattice_dal.py b/covalent_ui/api/v1/data_layer/lattice_dal.py index 273f25836..3813617df 100644 --- a/covalent_ui/api/v1/data_layer/lattice_dal.py +++ b/covalent_ui/api/v1/data_layer/lattice_dal.py @@ -2,28 +2,24 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattice Data Layer""" from typing import List from uuid import UUID -from sqlalchemy import extract +from sqlalchemy import extract, select from sqlalchemy.orm import Session from sqlalchemy.sql import desc, func @@ -38,6 +34,11 @@ class Lattices: def __init__(self, db_con: Session) -> None: self.db_con = db_con + def dispatch_exist(self, dispatch_id: UUID) -> bool: + return self.db_con.execute( + select(Lattice).where(Lattice.dispatch_id == str(dispatch_id)) + ).fetchone() + def get_lattices_id(self, dispatch_id: UUID) -> LatticeDetailResponse: """ Get lattices from dispatch id diff --git a/covalent_ui/api/v1/data_layer/logs_dal.py b/covalent_ui/api/v1/data_layer/logs_dal.py index 4b4dfa424..81606f600 100644 --- a/covalent_ui/api/v1/data_layer/logs_dal.py +++ b/covalent_ui/api/v1/data_layer/logs_dal.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import re from datetime import datetime diff --git a/covalent_ui/api/v1/data_layer/summary_dal.py b/covalent_ui/api/v1/data_layer/summary_dal.py index 04bbcd239..0442d1a7d 100644 --- a/covalent_ui/api/v1/data_layer/summary_dal.py +++ b/covalent_ui/api/v1/data_layer/summary_dal.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import uuid from datetime import datetime, timezone diff --git a/covalent_ui/api/v1/database/__init__.py b/covalent_ui/api/v1/database/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/database/__init__.py +++ b/covalent_ui/api/v1/database/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/database/config/__init__.py b/covalent_ui/api/v1/database/config/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/database/config/__init__.py +++ b/covalent_ui/api/v1/database/config/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/database/config/db.py b/covalent_ui/api/v1/database/config/db.py index cc87436f1..1395445fb 100644 --- a/covalent_ui/api/v1/database/config/db.py +++ b/covalent_ui/api/v1/database/config/db.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """DB Config""" diff --git a/covalent_ui/api/v1/database/schema/__init__.py b/covalent_ui/api/v1/database/schema/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/database/schema/__init__.py +++ b/covalent_ui/api/v1/database/schema/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/database/schema/electron.py b/covalent_ui/api/v1/database/schema/electron.py index 3041cd34e..db4b17c7b 100644 --- a/covalent_ui/api/v1/database/schema/electron.py +++ b/covalent_ui/api/v1/database/schema/electron.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Electrons Schema """ @@ -121,12 +117,16 @@ class Electron(Base): # Name of the column which signifies soft deletion of the electrons corresponding to a lattice is_active = Column(Boolean, nullable=False, default=True) + # ID for circuit_info + job_id = Column(Integer, ForeignKey("jobs.id", name="job_id_link"), nullable=False) + + # Flag that indicates if an electron is a QElectron + qelectron_data_exists = Column(Boolean, nullable=False) # Timestamps created_at = Column(DateTime, nullable=False, server_default=func.now()) updated_at = Column(DateTime, nullable=False, onupdate=func.now(), server_default=func.now()) started_at = Column(DateTime) completed_at = Column(DateTime) - job_id = Column(Integer, ForeignKey("jobs.id", name="job_id_link"), nullable=False) class Job(Base): diff --git a/covalent_ui/api/v1/database/schema/electron_dependency.py b/covalent_ui/api/v1/database/schema/electron_dependency.py index bd5898fa8..05186a816 100644 --- a/covalent_ui/api/v1/database/schema/electron_dependency.py +++ b/covalent_ui/api/v1/database/schema/electron_dependency.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Electron dependency schema""" diff --git a/covalent_ui/api/v1/database/schema/lattices.py b/covalent_ui/api/v1/database/schema/lattices.py index a21561c64..7b0da7c41 100644 --- a/covalent_ui/api/v1/database/schema/lattices.py +++ b/covalent_ui/api/v1/database/schema/lattices.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattices schema""" from sqlalchemy import Boolean, Column, DateTime, Integer, String, Text, func diff --git a/covalent_ui/api/v1/models/__init__.py b/covalent_ui/api/v1/models/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/models/__init__.py +++ b/covalent_ui/api/v1/models/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/models/dispatch_model.py b/covalent_ui/api/v1/models/dispatch_model.py index 97f0def62..3dc387399 100644 --- a/covalent_ui/api/v1/models/dispatch_model.py +++ b/covalent_ui/api/v1/models/dispatch_model.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Dispatch request and response model""" diff --git a/covalent_ui/api/v1/models/electrons_model.py b/covalent_ui/api/v1/models/electrons_model.py index 94d9af398..1138f492f 100644 --- a/covalent_ui/api/v1/models/electrons_model.py +++ b/covalent_ui/api/v1/models/electrons_model.py @@ -2,33 +2,52 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Request and response models for Electrons""" from datetime import datetime from enum import Enum -from typing import Union +from typing import Dict, List, Union from pydantic import BaseModel from covalent_ui.api.v1.utils.status import Status +class Job(BaseModel): + job_id: Union[str, None] + start_time: Union[datetime, None] + executor: Union[str, None] + status: Union[str, None] + + +class JobsResponse(BaseModel): + data: Union[List[Job], None] = None + msg: Union[str, None] = None + + +class JobDetails(BaseModel): + overview: Union[dict, None] + circuit: Union[dict, None] + executor: Union[dict, None] + + +class JobDetailsResponse(BaseModel): + data: Union[JobDetails, None, Dict] = None + msg: Union[str, None] = None + + class ElectronResponse(BaseModel): """Electron Response Model""" @@ -43,6 +62,8 @@ class ElectronResponse(BaseModel): ended_at: Union[datetime, None] = None runtime: Union[int, None] = None description: Union[str, None] = None + qelectron_data_exists: bool = False + qelectron: Union[dict, None] = None class ElectronFileResponse(BaseModel): diff --git a/covalent_ui/api/v1/models/graph_model.py b/covalent_ui/api/v1/models/graph_model.py index 3fd347f16..aa42f313f 100644 --- a/covalent_ui/api/v1/models/graph_model.py +++ b/covalent_ui/api/v1/models/graph_model.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Graph request and response model""" diff --git a/covalent_ui/api/v1/models/lattices_model.py b/covalent_ui/api/v1/models/lattices_model.py index 5397a9ff0..f7a6e3395 100644 --- a/covalent_ui/api/v1/models/lattices_model.py +++ b/covalent_ui/api/v1/models/lattices_model.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattice request and response model""" diff --git a/covalent_ui/api/v1/models/logs_model.py b/covalent_ui/api/v1/models/logs_model.py index e06a51448..abc24d575 100644 --- a/covalent_ui/api/v1/models/logs_model.py +++ b/covalent_ui/api/v1/models/logs_model.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Logs response model""" diff --git a/covalent_ui/api/v1/models/settings_model.py b/covalent_ui/api/v1/models/settings_model.py index 2a5a4f245..4e61cc8f5 100644 --- a/covalent_ui/api/v1/models/settings_model.py +++ b/covalent_ui/api/v1/models/settings_model.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Settings request and response model""" diff --git a/covalent_ui/api/v1/routes/__init__.py b/covalent_ui/api/v1/routes/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/routes/__init__.py +++ b/covalent_ui/api/v1/routes/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/routes/end_points/electron_routes.py b/covalent_ui/api/v1/routes/end_points/electron_routes.py index 6ac16531d..3ef131117 100644 --- a/covalent_ui/api/v1/routes/end_points/electron_routes.py +++ b/covalent_ui/api/v1/routes/end_points/electron_routes.py @@ -2,27 +2,24 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Electrons Route""" import uuid +from typing import List, Optional -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter, HTTPException, Query from sqlalchemy.orm import Session import covalent_ui.api.v1.database.config.db as db @@ -34,8 +31,13 @@ ElectronFileOutput, ElectronFileResponse, ElectronResponse, + Job, + JobDetails, + JobDetailsResponse, + JobsResponse, ) from covalent_ui.api.v1.utils.file_handle import FileHandler, validate_data +from covalent_ui.api.v1.utils.models_helper import JobsSortBy, SortDirection routes: APIRouter = APIRouter() @@ -64,6 +66,16 @@ def get_electron_details(dispatch_id: uuid.UUID, electron_id: int): } ], ) + qelectron = { + "total_quantum_calls": electron.get_total_quantum_calls( + dispatch_id, result["transport_graph_node_id"], result["qelectron_data_exists"] + ), + "avg_quantum_calls": electron.get_avg_quantum_calls( + dispatch_id=dispatch_id, + is_qa_electron=result["qelectron_data_exists"], + node_id=result["transport_graph_node_id"], + ), + } return ElectronResponse( id=result["id"], node_id=result["transport_graph_node_id"], @@ -76,6 +88,8 @@ def get_electron_details(dispatch_id: uuid.UUID, electron_id: int): ended_at=result["completed_at"], runtime=result["runtime"], description="", + qelectron_data_exists=bool(result["qelectron_data_exists"]), + qelectron=qelectron if bool(result["qelectron_data_exists"]) else None, ) @@ -173,3 +187,65 @@ def get_electron_file(dispatch_id: uuid.UUID, electron_id: int, name: ElectronFi } ], ) + + +@routes.get("/{dispatch_id}/electron/{electron_id}/jobs", response_model=List[Job]) +def get_electron_jobs( + dispatch_id: uuid.UUID, + electron_id: int, + sort_by: Optional[JobsSortBy] = JobsSortBy.START_TIME, + sort_direction: Optional[SortDirection] = SortDirection.DESCENDING, + count: Optional[int] = None, + offset: Optional[int] = Query(0), +) -> List[Job]: + """Get Electron Jobs List + + Args: + dispatch_id: To fetch electron data with dispatch id + electron_id: To fetch electron data with the provided electron id. + + Returns: + Returns the list of electron jobs + """ + with Session(db.engine) as session: + electron = Electrons(session) + jobs_response: JobsResponse = electron.get_jobs( + dispatch_id=dispatch_id, + electron_id=electron_id, + sort_by=sort_by, + sort_direction=sort_direction, + count=count, + offset=offset, + ) + if jobs_response.data is None: + raise HTTPException( + status_code=422, + detail=[{"msg": jobs_response.msg}], + ) + return jobs_response.data + + +@routes.get("/{dispatch_id}/electron/{electron_id}/jobs/{job_id}", response_model=JobDetails) +def get_electron_job_overview(dispatch_id: uuid.UUID, electron_id: int, job_id: str) -> JobDetails: + """Get Electron Job Detail + + Args: + dispatch_id: To fetch electron data with dispatch id + electron_id: To fetch electron data with the provided electron id. + job_id: To fetch appropriate job details with job id + + Returns: + Returns the electron job details + """ + with Session(db.engine) as session: + electron = Electrons(session) + job_response: JobDetailsResponse = electron.get_job_detail( + dispatch_id, electron_id, job_id + ) + if job_response.data is None: + raise HTTPException( + status_code=422, + detail=[{"msg": job_response.msg}], + ) + + return job_response.data diff --git a/covalent_ui/api/v1/routes/end_points/graph_route.py b/covalent_ui/api/v1/routes/end_points/graph_route.py index dac9c4f22..4e1c6ca2e 100644 --- a/covalent_ui/api/v1/routes/end_points/graph_route.py +++ b/covalent_ui/api/v1/routes/end_points/graph_route.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Graph Route""" diff --git a/covalent_ui/api/v1/routes/end_points/lattice_route.py b/covalent_ui/api/v1/routes/end_points/lattice_route.py index 7c95d20ea..29a702fff 100644 --- a/covalent_ui/api/v1/routes/end_points/lattice_route.py +++ b/covalent_ui/api/v1/routes/end_points/lattice_route.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattice route""" diff --git a/covalent_ui/api/v1/routes/end_points/logs_route.py b/covalent_ui/api/v1/routes/end_points/logs_route.py index 510b47a92..1a9e042eb 100644 --- a/covalent_ui/api/v1/routes/end_points/logs_route.py +++ b/covalent_ui/api/v1/routes/end_points/logs_route.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Logs Routes""" diff --git a/covalent_ui/api/v1/routes/end_points/settings_routes.py b/covalent_ui/api/v1/routes/end_points/settings_routes.py index 1f38e61fd..2fe4f2e39 100644 --- a/covalent_ui/api/v1/routes/end_points/settings_routes.py +++ b/covalent_ui/api/v1/routes/end_points/settings_routes.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Settings Route""" @@ -25,7 +21,7 @@ from fastapi import APIRouter, HTTPException, status -from covalent._shared_files.config import ConfigManager as settings +from covalent._shared_files.config import ConfigManager from covalent_ui.api.v1.models.settings_model import ( GetSettingsResponseModel, UpdateSettingsResponseModel, @@ -46,13 +42,16 @@ def get_settings(): """ server = {} client = {} + + settings = ConfigManager() + [ - server.update({validator.value: settings().config_data[validator.value]}) + server.update({validator.value: settings.config_data[validator.value]}) for validator in Validators ] [ - client.update({keys: settings().config_data[keys]}) - for keys in settings().config_data + client.update({keys: settings.config_data[keys]}) + for keys in settings.config_data if keys not in server ] return GetSettingsResponseModel(server=server, client=client) @@ -95,5 +94,6 @@ def post_settings(new_entries: Dict, override_existing: bool = True): } ], ) - settings().update_config(new_entries[file_type], override_existing) + settings = ConfigManager() + settings.update_config(new_entries[file_type], override_existing) return UpdateSettingsResponseModel(data="settings updated successfully") diff --git a/covalent_ui/api/v1/routes/end_points/summary_routes.py b/covalent_ui/api/v1/routes/end_points/summary_routes.py index 43fd2fb3a..f9ecc7120 100644 --- a/covalent_ui/api/v1/routes/end_points/summary_routes.py +++ b/covalent_ui/api/v1/routes/end_points/summary_routes.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Summary Routes""" diff --git a/covalent_ui/api/v1/routes/routes.py b/covalent_ui/api/v1/routes/routes.py index 1defd768c..eedd514dc 100644 --- a/covalent_ui/api/v1/routes/routes.py +++ b/covalent_ui/api/v1/routes/routes.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Routes""" diff --git a/covalent_ui/api/v1/tests/overview_test.py b/covalent_ui/api/v1/tests/overview_test.py index 19b13bb6b..0d4a8547c 100644 --- a/covalent_ui/api/v1/tests/overview_test.py +++ b/covalent_ui/api/v1/tests/overview_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Boilerplate for backend API tests""" diff --git a/covalent_ui/api/v1/utils/__init__.py b/covalent_ui/api/v1/utils/__init__.py index 523f77622..cfc23bfdf 100644 --- a/covalent_ui/api/v1/utils/__init__.py +++ b/covalent_ui/api/v1/utils/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/covalent_ui/api/v1/utils/file_handle.py b/covalent_ui/api/v1/utils/file_handle.py index 3409d4d8d..12ba66629 100644 --- a/covalent_ui/api/v1/utils/file_handle.py +++ b/covalent_ui/api/v1/utils/file_handle.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """File handlers""" diff --git a/covalent_ui/api/v1/utils/log_handler.py b/covalent_ui/api/v1/utils/log_handler.py index cc236e7a9..2aaf03167 100644 --- a/covalent_ui/api/v1/utils/log_handler.py +++ b/covalent_ui/api/v1/utils/log_handler.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from covalent._shared_files.config import get_config diff --git a/covalent_ui/api/v1/utils/models_helper.py b/covalent_ui/api/v1/utils/models_helper.py index ad796f32b..4b6cce8fc 100644 --- a/covalent_ui/api/v1/utils/models_helper.py +++ b/covalent_ui/api/v1/utils/models_helper.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Model helper to handle sort by and sort direction""" @@ -43,6 +39,15 @@ class SortBy(CaseInsensitiveEnum): ENDED = "ended_at" +class JobsSortBy(CaseInsensitiveEnum): + """Values to filter jobs data by""" + + EXECUTOR = "executor" + JOB_ID = "job_id" + START_TIME = "start_time" + STATUS = "status" + + class SortDirection(CaseInsensitiveEnum): """Values to decide sort direction""" diff --git a/covalent_ui/api/v1/utils/status.py b/covalent_ui/api/v1/utils/status.py index 85c530c04..59cdab5b2 100644 --- a/covalent_ui/api/v1/utils/status.py +++ b/covalent_ui/api/v1/utils/status.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from enum import Enum diff --git a/covalent_ui/app.py b/covalent_ui/app.py index 0500f54d2..0ec52ed14 100644 --- a/covalent_ui/app.py +++ b/covalent_ui/app.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import argparse import os diff --git a/covalent_ui/heartbeat.py b/covalent_ui/heartbeat.py index 22d058e3d..213e95877 100644 --- a/covalent_ui/heartbeat.py +++ b/covalent_ui/heartbeat.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio from contextlib import asynccontextmanager @@ -82,8 +78,8 @@ async def cancel_all_with_status(status: Status) -> List[str]: page += 1 - for dispatch in dispatch_ids: - await cancel_dispatch(dispatch.dispatch_id) + for dispatch_id in dispatch_ids: + await cancel_dispatch(dispatch_id) return dispatch_ids diff --git a/covalent_ui/result_webhook.py b/covalent_ui/result_webhook.py index 609e2da40..3a5ff000b 100644 --- a/covalent_ui/result_webhook.py +++ b/covalent_ui/result_webhook.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json diff --git a/covalent_ui/webapp/package.json b/covalent_ui/webapp/package.json index 31a8326a2..902d3a8ad 100644 --- a/covalent_ui/webapp/package.json +++ b/covalent_ui/webapp/package.json @@ -31,6 +31,7 @@ "react-router-dom": "^6.0.2", "react-scripts": "4.0.3", "react-syntax-highlighter": "^15.4.5", + "react-virtualized": "^9.22.5", "react-tooltip": "^4.2.21", "redux-localstorage": "^0.4.1", "socket.io-client": "^4.4.0", diff --git a/covalent_ui/webapp/src/App.css b/covalent_ui/webapp/src/App.css index 9a024e6dd..7ea6886da 100644 --- a/covalent_ui/webapp/src/App.css +++ b/covalent_ui/webapp/src/App.css @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ .spin-electron { diff --git a/covalent_ui/webapp/src/App.js b/covalent_ui/webapp/src/App.js index 2d9d14faf..97da11596 100644 --- a/covalent_ui/webapp/src/App.js +++ b/covalent_ui/webapp/src/App.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useEffect } from 'react' import { useDispatch } from 'react-redux' diff --git a/covalent_ui/webapp/src/__tests__/App.test.js b/covalent_ui/webapp/src/__tests__/App.test.js index fdc541667..196d2e8ea 100644 --- a/covalent_ui/webapp/src/__tests__/App.test.js +++ b/covalent_ui/webapp/src/__tests__/App.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' @@ -47,7 +41,7 @@ function reduxRender(renderedComponent) { describe('App Page', () => { test('app.js is rendered', () => { - reduxRender(} />) + reduxRender() const linkElement = screen.getByTestId('dashboard') expect(linkElement).toBeInTheDocument() }) diff --git a/covalent_ui/webapp/src/__tests__/index.test.js b/covalent_ui/webapp/src/__tests__/index.test.js index 636ee69ae..fd669d89b 100644 --- a/covalent_ui/webapp/src/__tests__/index.test.js +++ b/covalent_ui/webapp/src/__tests__/index.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import configureMockStore from 'redux-mock-store' diff --git a/covalent_ui/webapp/src/assets/codeview.svg b/covalent_ui/webapp/src/assets/codeview.svg new file mode 100644 index 000000000..a6181c7b9 --- /dev/null +++ b/covalent_ui/webapp/src/assets/codeview.svg @@ -0,0 +1,3 @@ + + + diff --git a/covalent_ui/webapp/src/assets/qelectron/circuit-large.svg b/covalent_ui/webapp/src/assets/qelectron/circuit-large.svg new file mode 100644 index 000000000..44b551ad9 --- /dev/null +++ b/covalent_ui/webapp/src/assets/qelectron/circuit-large.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/covalent_ui/webapp/src/assets/qelectron/circuit.svg b/covalent_ui/webapp/src/assets/qelectron/circuit.svg new file mode 100644 index 000000000..d09364479 --- /dev/null +++ b/covalent_ui/webapp/src/assets/qelectron/circuit.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/covalent_ui/webapp/src/assets/qelectron/filter.svg b/covalent_ui/webapp/src/assets/qelectron/filter.svg new file mode 100644 index 000000000..3a258ffab --- /dev/null +++ b/covalent_ui/webapp/src/assets/qelectron/filter.svg @@ -0,0 +1,3 @@ + + + diff --git a/covalent_ui/webapp/src/assets/qelectron/qelectron.svg b/covalent_ui/webapp/src/assets/qelectron/qelectron.svg new file mode 100644 index 000000000..610787b8a --- /dev/null +++ b/covalent_ui/webapp/src/assets/qelectron/qelectron.svg @@ -0,0 +1,4 @@ + + + + diff --git a/covalent_ui/webapp/src/assets/qelectron/view.svg b/covalent_ui/webapp/src/assets/qelectron/view.svg new file mode 100644 index 000000000..21bf285a2 --- /dev/null +++ b/covalent_ui/webapp/src/assets/qelectron/view.svg @@ -0,0 +1,3 @@ + + + diff --git a/covalent_ui/webapp/src/assets/status/running.svg b/covalent_ui/webapp/src/assets/status/running.svg new file mode 100644 index 000000000..69c5aaeaf --- /dev/null +++ b/covalent_ui/webapp/src/assets/status/running.svg @@ -0,0 +1,3 @@ + + + diff --git a/covalent_ui/webapp/src/components/NotFound.js b/covalent_ui/webapp/src/components/NotFound.js index 8362f44e7..b28464b90 100644 --- a/covalent_ui/webapp/src/components/NotFound.js +++ b/covalent_ui/webapp/src/components/NotFound.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { diff --git a/covalent_ui/webapp/src/components/_tests_/NotFound.test.js b/covalent_ui/webapp/src/components/_tests_/NotFound.test.js index 36b9e029d..a507fdece 100644 --- a/covalent_ui/webapp/src/components/_tests_/NotFound.test.js +++ b/covalent_ui/webapp/src/components/_tests_/NotFound.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/CopyButton.js b/covalent_ui/webapp/src/components/common/CopyButton.js index 8a1bd80f1..c117ce033 100644 --- a/covalent_ui/webapp/src/components/common/CopyButton.js +++ b/covalent_ui/webapp/src/components/common/CopyButton.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useState } from 'react' @@ -33,6 +27,7 @@ const CopyButton = ({ width, height, borderRadius, + backgroundColor, ...props }) => { const [copied, setCopied] = useState(false) @@ -60,6 +55,10 @@ const CopyButton = ({ borderRadius: borderRadius ? borderRadius : '8px', width: width ? width : '32px', height: height ? height : '32px', + padding: 0, + '&:hover': { + backgroundColor: backgroundColor || '' + } }} container direction="row" diff --git a/covalent_ui/webapp/src/components/common/DialogBox.js b/covalent_ui/webapp/src/components/common/DialogBox.js index 1c8ab7919..6c2d76996 100644 --- a/covalent_ui/webapp/src/components/common/DialogBox.js +++ b/covalent_ui/webapp/src/components/common/DialogBox.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import * as React from 'react' diff --git a/covalent_ui/webapp/src/components/common/DownloadButton.js b/covalent_ui/webapp/src/components/common/DownloadButton.js index 3bcd1f0e0..a1998fd15 100644 --- a/covalent_ui/webapp/src/components/common/DownloadButton.js +++ b/covalent_ui/webapp/src/components/common/DownloadButton.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { IconButton, Tooltip, Grid } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/EllipsisTooltip.js b/covalent_ui/webapp/src/components/common/EllipsisTooltip.js index 2523ed827..f52eb95a7 100644 --- a/covalent_ui/webapp/src/components/common/EllipsisTooltip.js +++ b/covalent_ui/webapp/src/components/common/EllipsisTooltip.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { useRef, useEffect, useState } from 'react' diff --git a/covalent_ui/webapp/src/components/common/ErrorCard.js b/covalent_ui/webapp/src/components/common/ErrorCard.js index a237fd3d5..a8d9010ad 100644 --- a/covalent_ui/webapp/src/components/common/ErrorCard.js +++ b/covalent_ui/webapp/src/components/common/ErrorCard.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Box, SvgIcon } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/ExecutorSection.js b/covalent_ui/webapp/src/components/common/ExecutorSection.js index ebf1f787b..9e737c11c 100644 --- a/covalent_ui/webapp/src/components/common/ExecutorSection.js +++ b/covalent_ui/webapp/src/components/common/ExecutorSection.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/common/Heading.js b/covalent_ui/webapp/src/components/common/Heading.js index 4e31f74ac..b3e46b13a 100644 --- a/covalent_ui/webapp/src/components/common/Heading.js +++ b/covalent_ui/webapp/src/components/common/Heading.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Typography } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/InputSection.js b/covalent_ui/webapp/src/components/common/InputSection.js index d56fc0bdc..1edfe0952 100644 --- a/covalent_ui/webapp/src/components/common/InputSection.js +++ b/covalent_ui/webapp/src/components/common/InputSection.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useState } from 'react' diff --git a/covalent_ui/webapp/src/components/common/LatticeDrawer.js b/covalent_ui/webapp/src/components/common/LatticeDrawer.js index ed72a6ad5..6c28e2cf6 100644 --- a/covalent_ui/webapp/src/components/common/LatticeDrawer.js +++ b/covalent_ui/webapp/src/components/common/LatticeDrawer.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Drawer } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/LogOutput.js b/covalent_ui/webapp/src/components/common/LogOutput.js index 2a0f61e4b..f5e880afd 100644 --- a/covalent_ui/webapp/src/components/common/LogOutput.js +++ b/covalent_ui/webapp/src/components/common/LogOutput.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Paper, Typography } from '@mui/material' import Heading from './Heading' diff --git a/covalent_ui/webapp/src/components/common/MobileAppBar.js b/covalent_ui/webapp/src/components/common/MobileAppBar.js index fe8177046..5539d9328 100644 --- a/covalent_ui/webapp/src/components/common/MobileAppBar.js +++ b/covalent_ui/webapp/src/components/common/MobileAppBar.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { alpha, AppBar, IconButton, Toolbar } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/NavDrawer.js b/covalent_ui/webapp/src/components/common/NavDrawer.js index d8c51c72f..144ce95ad 100644 --- a/covalent_ui/webapp/src/components/common/NavDrawer.js +++ b/covalent_ui/webapp/src/components/common/NavDrawer.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { useState } from 'react' diff --git a/covalent_ui/webapp/src/components/common/NodeDrawer.js b/covalent_ui/webapp/src/components/common/NodeDrawer.js index 34af0d927..26e9e58b8 100644 --- a/covalent_ui/webapp/src/components/common/NodeDrawer.js +++ b/covalent_ui/webapp/src/components/common/NodeDrawer.js @@ -1,38 +1,33 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. - * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' import React, { useEffect } from 'react' -import { Close } from '@mui/icons-material' import { useStoreActions } from 'react-flow-renderer' +import { Close } from '@mui/icons-material' import { useDispatch, useSelector } from 'react-redux' import { Box, Divider, Drawer, - IconButton, Paper, Typography, Skeleton, + SvgIcon, + Grid, } from '@mui/material' import { alpha } from '@mui/material/styles' @@ -58,16 +53,34 @@ import { electronError, electronInput, } from '../../redux/electronSlice' +import QElectronCard from './QElectronCard' +import { ReactComponent as QelectronSvg } from '../../assets/qelectron/qelectron.svg' +import CopyButton from './CopyButton' import { Prettify } from '../../utils/misc' export const nodeDrawerWidth = 360 -const NodeDrawer = ({ node, dispatchId, prettify }) => { + +const NodeDrawer = ({ + node, + dispatchId, + toggleQelectron, + openQelectronDrawer, + setOpenQelectronDrawer, + prettify +}) => { const dispatch = useDispatch() const electronId = node !== undefined && node.node_id const electronDetail = useSelector( (state) => state.electronResults.electronList ) + + const qElectronExists = useSelector( + (state) => state.electronResults.electronList?.qelectron_data_exists + ) + const qElectronDetails = useSelector( + (state) => state.electronResults.electronList?.qelectron + ) const electronInputResult = useSelector( (state) => state.electronResults.electronInput ) @@ -102,6 +115,7 @@ const NodeDrawer = ({ node, dispatchId, prettify }) => { useEffect(() => { if (!!node) { + setOpenQelectronDrawer(false); dispatch(electronDetails({ electronId, dispatchId })) dispatch(electronInput({ dispatchId, electronId, params: 'inputs' })) dispatch(electronResult({ dispatchId, electronId, params: 'result' })) @@ -123,9 +137,16 @@ const NodeDrawer = ({ node, dispatchId, prettify }) => { ) const handleClose = () => { + setOpenQelectronDrawer(false) setSelectedElements([]) } + useEffect(() => { + if (!node) { + setOpenQelectronDrawer(false) + } + }) + const nodeLabel = (type, name) => { switch (type) { case 'parameter': @@ -144,6 +165,7 @@ const NodeDrawer = ({ node, dispatchId, prettify }) => { return ( ({ width: nodeDrawerWidth, '& .MuiDrawer-paper': { @@ -174,6 +196,7 @@ const NodeDrawer = ({ node, dispatchId, prettify }) => { <> { {!electronDetail && electronDetailIsFetching ? ( ) : ( - - {prettify - ? Prettify(electronDetail?.name, electronDetail?.type || '') - : nodeLabel(electronDetail?.type, electronDetail?.name)} - - )} + + + + {prettify + ? Prettify(electronDetail?.name, electronDetail?.type || '') + : nodeLabel(electronDetail?.type, electronDetail?.name)} + {qElectronExists && ( + + + + )} + + + - - - - + > + + + + + + )} {/* Status */} - {electronDetail.status && ( - <> - Status - {!electronDetail && electronDetailIsFetching ? ( - - ) : ( - - {statusIcon(electronDetail.status)} -   - {statusLabel(electronDetail.status)} - + + + {electronDetail.status && ( + + Status + {!electronDetail && electronDetailIsFetching ? ( + + ) : ( + + {statusIcon(electronDetail.status)} +   + {statusLabel(electronDetail.status)} + + )} + )} - - )} + + + + + {electronDetail.node_id} + + + + + + + {electronErrorData && } @@ -333,6 +423,14 @@ const NodeDrawer = ({ node, dispatchId, prettify }) => { )} + {qElectronExists && ( + + )} + )} diff --git a/covalent_ui/webapp/src/components/common/PageLoading.js b/covalent_ui/webapp/src/components/common/PageLoading.js index bb9178cd9..d669c903d 100644 --- a/covalent_ui/webapp/src/components/common/PageLoading.js +++ b/covalent_ui/webapp/src/components/common/PageLoading.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { CircularProgress } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/common/PrimaryButton.js b/covalent_ui/webapp/src/components/common/PrimaryButton.js index 9927323b9..41930a46b 100644 --- a/covalent_ui/webapp/src/components/common/PrimaryButton.js +++ b/covalent_ui/webapp/src/components/common/PrimaryButton.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import Button from '@mui/material/Button' diff --git a/covalent_ui/webapp/src/components/common/QElectronCard.js b/covalent_ui/webapp/src/components/common/QElectronCard.js new file mode 100644 index 000000000..9b635e867 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/QElectronCard.js @@ -0,0 +1,152 @@ +/* eslint-disable react/jsx-no-comment-textnodes */ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import { Button, Grid, Typography, SvgIcon, Chip } from '@mui/material' +import React from 'react' +import { ReactComponent as ViewSvg } from '../../assets/qelectron/view.svg' +import { ReactComponent as QelectronSvg } from '../../assets/qelectron/qelectron.svg' +import { formatQElectronTime } from '../../utils/misc' + +const QElectronCard = (props) => { + const { qElectronDetails, toggleQelectron, openQelectronDrawer } = props + + const handleButtonClick = (e) => { + e.stopPropagation() + toggleQelectron() + } + + return ( + //main container + theme.palette.background.default, + border: '1px solid', + borderRadius: '8px', + cursor: 'pointer', + borderColor: (theme) => theme.palette.primary.grey, + '&:hover': { + backgroundColor: (theme) => theme.palette.background.coveBlack02, + }, + }} + data-testid="QelectronCard-grid" + > + + + + qelectrons + + + + + + + + + + + + + Quantum Calls + + {qElectronDetails.total_quantum_calls} + + + + Avg Time Of Call + + {formatQElectronTime(qElectronDetails.avg_quantum_calls)} + + + + + ) +} + +export default QElectronCard diff --git a/covalent_ui/webapp/src/components/common/QElectronDrawer.js b/covalent_ui/webapp/src/components/common/QElectronDrawer.js new file mode 100644 index 000000000..c7f79dd39 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/QElectronDrawer.js @@ -0,0 +1,213 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import React, { useEffect } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { + Grid, + Drawer, + Snackbar, + SvgIcon +} from '@mui/material' +import QElectronTopBar from './QElectronTopBar' +import { ReactComponent as closeIcon } from '../../assets/close.svg' +import QElelctronAccordion from './QElelctronAccordion' +import QElectronList from '../qelectron/QElectronList' +import { + qelectronJobs, + qelectronJobOverview +} from '../../redux/electronSlice' + +const nodeDrawerWidth = 1110 + +const QElectronDrawer = ({ toggleQelectron, openQelectronDrawer, dispatchId, electronId }) => { + const dispatch = useDispatch() + const [expanded, setExpanded] = React.useState(true) + const [currentJob, setCurrentJob] = React.useState(''); + const [defaultId, setDefaultId] = React.useState(''); + + const isErrorJobs = useSelector( + (state) => state.electronResults.qelectronJobsList.error + ); + + const isErrorOverview = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.error + ); + const [openSnackbar, setOpenSnackbar] = React.useState(Boolean(isErrorOverview) || Boolean(isErrorJobs)); + const [snackbarMessage, setSnackbarMessage] = React.useState(null); + + // check if there are any API errors and show a sncakbar + useEffect(() => { + if (isErrorOverview) { + setOpenSnackbar(true) + if (isErrorOverview?.detail && isErrorOverview?.detail?.length > 0 && isErrorOverview?.detail[0] && isErrorOverview?.detail[0]?.msg) { + setSnackbarMessage(isErrorOverview?.detail[0]?.msg) + } + else { + setSnackbarMessage( + 'Something went wrong,please contact the administrator!' + ) + } + } + if (isErrorJobs) { + setOpenSnackbar(true) + if (isErrorJobs?.detail && isErrorJobs?.detail?.length > 0 && isErrorJobs?.detail[0] && isErrorJobs?.detail[0]?.msg) { + setSnackbarMessage(isErrorJobs?.detail[0]?.msg) + } + else { + setSnackbarMessage( + 'Something went wrong,please contact the administrator!' + ) + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isErrorOverview, isErrorJobs]); + + const listData = useSelector( + (state) => state.electronResults.qelectronJobs + ); + + const overviewData = useSelector( + (state) => state.electronResults.qelectronJobOverview + ); + + const handleDrawerClose = () => { + toggleQelectron() + } + + const rowClickHandler = (job_id) => { + setCurrentJob(job_id) + if (job_id !== currentJob) dispatch(qelectronJobOverview({ dispatchId, electronId, jobId: job_id })) + } + + const details = { + title: overviewData?.overview?.job_name, + status: overviewData?.overview?.status, + id: currentJob + } + + useEffect(() => { + setDefaultId(''); + if (openQelectronDrawer) { + setExpanded(true); + } + if (!(electronId === null || electronId === undefined) && openQelectronDrawer) { + const bodyParams = { + sort_by: 'start_time', + direction: 'DESC', + offset: 0 + } + dispatch( + qelectronJobs({ + dispatchId, + electronId, + bodyParams + }) + ).then((res) => { + let job_id = '' + if (res?.payload && res?.payload.length > 0 && res?.payload[0]?.job_id) job_id = res?.payload[0]?.job_id + setCurrentJob(job_id) + setDefaultId(job_id) + dispatch(qelectronJobOverview({ dispatchId, electronId, jobId: job_id })) + }) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [openQelectronDrawer]) + + return ( + <> + setOpenSnackbar(false)} + action={ + setOpenSnackbar(false)} + /> + } + /> + ({ + position: 'relative', + width: nodeDrawerWidth, + '& .MuiDrawer-paper': { + width: nodeDrawerWidth, + boxSizing: 'border-box', + border: 'none', + p: 3, + marginRight: '10px', + marginTop: '22px', + maxHeight: '95vh', + bgcolor: (theme) => theme.palette.background.qelectronDrawerbg, + boxShadow: '0px 16px 50px rgba(0, 0, 0, 0.9)', + backdropFilter: 'blur(8px)', + borderRadius: '16px', + '@media (max-width: 1290px)': { + height: '92vh', + marginTop: '70px', + }, + }, + })} + anchor="right" + variant="persistent" + open={openQelectronDrawer} + onClose={handleDrawerClose} + data-testid="qElectronDrawer" + > + + + + + + + + + + ) +} + +export default QElectronDrawer diff --git a/covalent_ui/webapp/src/components/common/QElectronTab.js b/covalent_ui/webapp/src/components/common/QElectronTab.js new file mode 100644 index 000000000..3f807c62a --- /dev/null +++ b/covalent_ui/webapp/src/components/common/QElectronTab.js @@ -0,0 +1,99 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import React from 'react' +import Box from '@mui/material/Box' +import Tab from '@mui/material/Tab' +import TabContext from '@mui/lab/TabContext' +import TabList from '@mui/lab/TabList' +import Divider from '@mui/material/Divider' + +const QElectronTab = (props) => { + const { handleChange, value } = props + return ( + + + theme.palette.text.tertiary, + '&.Mui-selected': { + color: (theme) => theme.palette.text.secondary, + }, + }, + }} + > + + + + + + + + + ) +} + +export default QElectronTab diff --git a/covalent_ui/webapp/src/components/common/QElectronTopBar.js b/covalent_ui/webapp/src/components/common/QElectronTopBar.js new file mode 100644 index 000000000..7d1530379 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/QElectronTopBar.js @@ -0,0 +1,145 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import { Grid, IconButton, Typography, Box, Tooltip, Skeleton } from '@mui/material' +import React from 'react' +import { ChevronRight, } from '@mui/icons-material' +import { statusIcon, statusColor, statusLabel } from '../../utils/misc' +import CopyButton from './CopyButton' +import { useSelector } from 'react-redux'; + +const QElectronTopBar = (props) => { + const { details, toggleQelectron } = props + const qelectronJobOverviewIsFetching = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.isFetching + ) + return ( + theme.palette.background.coveBlack02, + }} + data-testid="QelectronTopBar-grid" + > + + toggleQelectron()} + data-testid="backbtn" + sx={{ + color: 'text.disabled', + cursor: 'pointer', + mr: 1, + backgroundColor: (theme) => theme.palette.background.buttonBg, + borderRadius: '10px', + width: '32px', + height: '32px', + }} + > + + + {qelectronJobOverviewIsFetching && !details ? + : <> + + {details?.title} + + } + theme.palette.background.coveBlack02, + borderRadius: '8px 0px 0px 8px', + backgroundColor: (theme) => theme.palette.background.buttonBg, + }} + > + {qelectronJobOverviewIsFetching && !details ? + : <> + +
+ {details?.id} +
+
+ } +
+ theme.palette.background.coveBlack02, + borderRadius: '0px 8px 8px 0px', + backgroundColor: (theme) => theme.palette.background.buttonBg, + }} + > + + +
+ + {qelectronJobOverviewIsFetching && !details ? + : <> + + {statusIcon(details?.status)} +   + {statusLabel(details?.status)} + + } + +
+ ) +} + +export default QElectronTopBar diff --git a/covalent_ui/webapp/src/components/common/QElelctronAccordion.js b/covalent_ui/webapp/src/components/common/QElelctronAccordion.js new file mode 100644 index 000000000..101499a88 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/QElelctronAccordion.js @@ -0,0 +1,97 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import React from 'react' +import Accordion from '@mui/material/Accordion' +import AccordionSummary from '@mui/material/AccordionSummary' +import AccordionDetails from '@mui/material/AccordionDetails' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { Grid, IconButton } from '@mui/material' +import QElectronTab from './QElectronTab' +import Overview from '../qelectron/Overview' +import Circuit from '../qelectron/Circuit' +import Executor from '../qelectron/Executor' + +const QElelctronAccordion = (props) => { + const { expanded, setExpanded, overviewData, openQelectronDrawer } = props + const [value, setValue] = React.useState('1') + + React.useEffect(() => { + if (openQelectronDrawer) setValue('1') + }, [openQelectronDrawer]); + + const handleAccordChange = () => { + setExpanded(!expanded) + } + + const handleChange = (event, newValue) => { + setValue(newValue) + setExpanded(true) + } + return ( + + theme.palette.background.qelectronDrawerbg, + border: '2px solid', + borderRadius: '8px', + minHeight: expanded ? '19rem' : '2rem', + borderColor: (theme) => theme.palette.background.qelectronbg, + }} + > + + + + } + aria-controls="panel1a-content" + id="panel1a-header" + > + + + + {value === '1' && } + {value === '2' && } + {value === '3' && } + + + + ) +} + +export default QElelctronAccordion diff --git a/covalent_ui/webapp/src/components/common/ResultSection.js b/covalent_ui/webapp/src/components/common/ResultSection.js index e0339d3b5..738083824 100644 --- a/covalent_ui/webapp/src/components/common/ResultSection.js +++ b/covalent_ui/webapp/src/components/common/ResultSection.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useState } from 'react' diff --git a/covalent_ui/webapp/src/components/common/SyntaxHighlighter.js b/covalent_ui/webapp/src/components/common/SyntaxHighlighter.js index f65057cd8..bd80cb5b0 100644 --- a/covalent_ui/webapp/src/components/common/SyntaxHighlighter.js +++ b/covalent_ui/webapp/src/components/common/SyntaxHighlighter.js @@ -1,52 +1,176 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. - * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - +import * as React from 'react' +import Box from '@mui/material/Box' +import Modal from '@mui/material/Modal' +import Skeleton from '@mui/material/Skeleton' import _ from 'lodash' import { Light } from 'react-syntax-highlighter' import python from 'react-syntax-highlighter/dist/cjs/languages/hljs/python' import yaml from 'react-syntax-highlighter/dist/cjs/languages/hljs/yaml' import json from 'react-syntax-highlighter/dist/cjs/languages/hljs/json' import style from 'react-syntax-highlighter/dist/cjs/styles/hljs/androidstudio' +import { Grid, SvgIcon, Tooltip } from '@mui/material' +import { ReactComponent as ViewSvg } from '../../assets/codeview.svg' +import { ReactComponent as CloseSvg } from '../../assets/close.svg' + +import { useState } from 'react' + Light.registerLanguage('python', python) Light.registerLanguage('yaml', yaml) Light.registerLanguage('json', json) -const SyntaxHighlighter = ({ src, ...props }) => { +const SyntaxHighlighter = ({ src, preview, fullwidth, ...props }) => { + const { isFetching } = props; + const [open, setOpen] = useState(false) + const handleOpen = () => setOpen(true) + const handleClose = () => setOpen(false) + + const styles = { + outline: 'none', + position: 'absolute', + top: '50%', + left: '49%', + transform: 'translate(-50%, -50%)', + p: 4, + width: ' 95%', + height: '95%', + bgcolor: '#0B0B11E5', + border: '2px solid transparent', + boxShadow: 24, + } + return ( - - {_.trim(src, '"" \n')} - + <> + + + {isFetching && !src ? + + : <> + + {_.trim(_.truncate(src, { length: 200 }), '"" \n')} + } + + + {preview && (!isFetching || src) && ( + + + + + + )} + + + + + + + + {_.trim(src, '"" \n')} + + + + + + + + + + + ) } diff --git a/covalent_ui/webapp/src/components/common/__tests__/CopyButton.test.js b/covalent_ui/webapp/src/components/common/__tests__/CopyButton.test.js index 17c502af1..97ea88fa2 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/CopyButton.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/CopyButton.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import '@testing-library/jest-dom' import { render, screen, fireEvent } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/DialogBox.test.js b/covalent_ui/webapp/src/components/common/__tests__/DialogBox.test.js index 8235d352f..02d6a790d 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/DialogBox.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/DialogBox.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen, fireEvent } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/DownloadButton.test.js b/covalent_ui/webapp/src/components/common/__tests__/DownloadButton.test.js index 589ab55bf..9eefaefa7 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/DownloadButton.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/DownloadButton.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import '@testing-library/jest-dom' import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/EllipsisTooltip.test.js b/covalent_ui/webapp/src/components/common/__tests__/EllipsisTooltip.test.js index e0adfecb1..0f2f18fa3 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/EllipsisTooltip.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/EllipsisTooltip.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/ErrorCard.test.js b/covalent_ui/webapp/src/components/common/__tests__/ErrorCard.test.js index a5186e781..538c85772 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/ErrorCard.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/ErrorCard.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/ExecutorSection.test.js b/covalent_ui/webapp/src/components/common/__tests__/ExecutorSection.test.js index a3394b410..466c4874d 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/ExecutorSection.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/ExecutorSection.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/Heading.test.js b/covalent_ui/webapp/src/components/common/__tests__/Heading.test.js index 98fc887b8..4ae57b05b 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/Heading.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/Heading.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/InputSection.test.js b/covalent_ui/webapp/src/components/common/__tests__/InputSection.test.js index 5ea1aa5fe..79d9de176 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/InputSection.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/InputSection.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { fireEvent, render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/LatticeDrawer.test.js b/covalent_ui/webapp/src/components/common/__tests__/LatticeDrawer.test.js index 3fd69e249..9a0445aa5 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/LatticeDrawer.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/LatticeDrawer.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/LogOutput.test.js b/covalent_ui/webapp/src/components/common/__tests__/LogOutput.test.js index 5d8d04672..80bbc1972 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/LogOutput.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/LogOutput.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/MobileAppBar.test.js b/covalent_ui/webapp/src/components/common/__tests__/MobileAppBar.test.js index 735671f81..66116d89b 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/MobileAppBar.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/MobileAppBar.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen, fireEvent } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/common/__tests__/NavDrawer.test.js b/covalent_ui/webapp/src/components/common/__tests__/NavDrawer.test.js index a273e9b56..fd0da704e 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/NavDrawer.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/NavDrawer.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen, fireEvent } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/NodeDrawer.test.js b/covalent_ui/webapp/src/components/common/__tests__/NodeDrawer.test.js index cffa4a83e..3e9ea1921 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/NodeDrawer.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/NodeDrawer.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render, screen, fireEvent } from '@testing-library/react' import NodeDrawer from '../NodeDrawer' @@ -117,6 +111,7 @@ const node = { status: 'COMPLETED', type: 'function', } +const setOpenQelectronDrawer = jest.fn(); const dispatchId = 'edcd9b3e-6d52-44ac-baa5-d45614e25699' const electronId = 42 @@ -145,6 +140,7 @@ describe('electronNode file Rendered', () => { electronDetailIsFetching={true} electronDetailStatus={electronDetail.status} electronDetail={electronDetail} + setOpenQelectronDrawer={setOpenQelectronDrawer} /> ) const linkElement = screen.getByTestId('nodeDrawer') @@ -158,6 +154,7 @@ describe('electronNode file Rendered', () => { dispatchId={dispatchId} electronId={electronId} electronDetailIsFetching={false} + setOpenQelectronDrawer={setOpenQelectronDrawer} /> ) const linkElement = screen.getByTestId('nodeDrawer') @@ -165,13 +162,13 @@ describe('electronNode file Rendered', () => { }) test('renders electronNode', async () => { - reduxRender() + reduxRender() const linkElement = screen.getByTestId('nodeDrawer') expect(linkElement).toBeInTheDocument() }) test('renders Node drawer for handleclose function', async () => { - reduxRender() + reduxRender() const linkElement = screen.getByTestId('node__dra_close') fireEvent.click(screen.getByTestId('CloseIcon')) expect(linkElement).toBeInTheDocument() diff --git a/covalent_ui/webapp/src/components/common/__tests__/PageLoading.test.js b/covalent_ui/webapp/src/components/common/__tests__/PageLoading.test.js index da298b8f4..ab028b753 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/PageLoading.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/PageLoading.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/PrimaryButton.test.js b/covalent_ui/webapp/src/components/common/__tests__/PrimaryButton.test.js index d5787f289..1c5ca7932 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/PrimaryButton.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/PrimaryButton.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/QElectronCard.test.js b/covalent_ui/webapp/src/components/common/__tests__/QElectronCard.test.js new file mode 100644 index 000000000..b238756b8 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/__tests__/QElectronCard.test.js @@ -0,0 +1,57 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElectronCard' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron card', () => { + const cardDetails = { + 'total_quantum_calls': 10, + 'avg_quantum_calls': 0.01 + } + test('Qelectron Card is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('QelectronCard-grid') + expect(linkElement).toBeInTheDocument() + }) + +}) diff --git a/covalent_ui/webapp/src/components/common/__tests__/QElectronDrawer.test.js b/covalent_ui/webapp/src/components/common/__tests__/QElectronDrawer.test.js new file mode 100644 index 000000000..e5e7f211c --- /dev/null +++ b/covalent_ui/webapp/src/components/common/__tests__/QElectronDrawer.test.js @@ -0,0 +1,104 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElectronDrawer' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const initialState = { + electronResults: { + qelectronJobsList: { + error: true + }, + qelectronJobOverviewList: { + error: true + } + } + } + const store = configureStore({ + reducer: reducers, + preloadedState: initialState, + }) + + return render( + + + {renderedComponent} + + + ) +} + + +function reduxRenderMock(renderedComponent) { + const initialState = { + electronResults: { + qelectronJobsList: { + error: { + detail: [{ 'msg': 'Something went wrong' }] + } + }, + qelectronJobOverviewList: { + error: { + detail: [{ 'msg': 'Something went wrong' }] + } + } + } + } + const store = configureStore({ + reducer: reducers, + preloadedState: initialState, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron drawer', () => { + + test('Qelectron Drawer is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('qElectronDrawer') + expect(linkElement).toBeInTheDocument() + }) + + test('Qelectron Drawer is rendered with error detail', () => { + reduxRenderMock() + const linkElement = screen.getByTestId('qElectronDrawer') + expect(linkElement).toBeInTheDocument() + const ele = screen.getByTestId('qElectronDrawerSnackbar') + expect(ele).toBeInTheDocument() + fireEvent.click(ele) + }) + +}) diff --git a/covalent_ui/webapp/src/components/common/__tests__/QElectronTab.test.js b/covalent_ui/webapp/src/components/common/__tests__/QElectronTab.test.js new file mode 100644 index 000000000..e272bd03a --- /dev/null +++ b/covalent_ui/webapp/src/components/common/__tests__/QElectronTab.test.js @@ -0,0 +1,54 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElectronTab' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron Tab', () => { + + test('Qelectron Tab is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('QelectronTab-box') + expect(linkElement).toBeInTheDocument() + }) + +}) diff --git a/covalent_ui/webapp/src/components/common/__tests__/QElectronTopBar.test.js b/covalent_ui/webapp/src/components/common/__tests__/QElectronTopBar.test.js new file mode 100644 index 000000000..ceedcfab2 --- /dev/null +++ b/covalent_ui/webapp/src/components/common/__tests__/QElectronTopBar.test.js @@ -0,0 +1,54 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElectronTopBar' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron Top Bar', () => { + + test('Qelectron TopBar is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('QelectronTopBar-grid') + expect(linkElement).toBeInTheDocument() + }) + +}) diff --git a/covalent_ui/webapp/src/components/common/__tests__/QElelctronAccordion.test.js b/covalent_ui/webapp/src/components/common/__tests__/QElelctronAccordion.test.js new file mode 100644 index 000000000..1a2e88a7c --- /dev/null +++ b/covalent_ui/webapp/src/components/common/__tests__/QElelctronAccordion.test.js @@ -0,0 +1,61 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElelctronAccordion' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron accordion', () => { + + test('Qelectron Accordion is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('Accordion-grid') + expect(linkElement).toBeInTheDocument() + }) + + test('Qelectron accordion click events', () => { + reduxRender() + const ele = screen.getByLabelText('Toggle accordion') + expect(ele).toBeInTheDocument() + fireEvent.click(ele) + }) + +}) diff --git a/covalent_ui/webapp/src/components/common/__tests__/ResultSection.test.js b/covalent_ui/webapp/src/components/common/__tests__/ResultSection.test.js index 00db978f3..3fd8b33a8 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/ResultSection.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/ResultSection.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen, fireEvent } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/common/__tests__/SyntaxHighlighter.test.js b/covalent_ui/webapp/src/components/common/__tests__/SyntaxHighlighter.test.js index 4a33506ce..dedfa9c23 100644 --- a/covalent_ui/webapp/src/components/common/__tests__/SyntaxHighlighter.test.js +++ b/covalent_ui/webapp/src/components/common/__tests__/SyntaxHighlighter.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dashboard/Dashboard.js b/covalent_ui/webapp/src/components/dashboard/Dashboard.js index b187c9c84..694c5ab75 100644 --- a/covalent_ui/webapp/src/components/dashboard/Dashboard.js +++ b/covalent_ui/webapp/src/components/dashboard/Dashboard.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Container } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/dashboard/DashboardCard.js b/covalent_ui/webapp/src/components/dashboard/DashboardCard.js index bbef1ad99..f81cc8b3b 100644 --- a/covalent_ui/webapp/src/components/dashboard/DashboardCard.js +++ b/covalent_ui/webapp/src/components/dashboard/DashboardCard.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { useEffect, useState } from 'react' diff --git a/covalent_ui/webapp/src/components/dashboard/__tests__/Dashboard.test.js b/covalent_ui/webapp/src/components/dashboard/__tests__/Dashboard.test.js index 6e58d27fb..76fb39d12 100644 --- a/covalent_ui/webapp/src/components/dashboard/__tests__/Dashboard.test.js +++ b/covalent_ui/webapp/src/components/dashboard/__tests__/Dashboard.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dashboard/__tests__/DashboardCard.test.js b/covalent_ui/webapp/src/components/dashboard/__tests__/DashboardCard.test.js index 09a074aab..ebaac67f0 100644 --- a/covalent_ui/webapp/src/components/dashboard/__tests__/DashboardCard.test.js +++ b/covalent_ui/webapp/src/components/dashboard/__tests__/DashboardCard.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render, fireEvent } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatch/DispatchDrawerContents.js b/covalent_ui/webapp/src/components/dispatch/DispatchDrawerContents.js index bef630a1b..15be00da6 100644 --- a/covalent_ui/webapp/src/components/dispatch/DispatchDrawerContents.js +++ b/covalent_ui/webapp/src/components/dispatch/DispatchDrawerContents.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useState, useEffect } from 'react' diff --git a/covalent_ui/webapp/src/components/dispatch/DispatchLayout.js b/covalent_ui/webapp/src/components/dispatch/DispatchLayout.js index c087791b9..3254d52c2 100644 --- a/covalent_ui/webapp/src/components/dispatch/DispatchLayout.js +++ b/covalent_ui/webapp/src/components/dispatch/DispatchLayout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' @@ -38,10 +32,12 @@ import { resetLatticeState } from '../../redux/latticeSlice' import { resetElectronState } from '../../redux/electronSlice' import DispatchTopBar from './DispatchTopBar' import DispatchDrawerContents from './DispatchDrawerContents' +import QElectronDrawer from '../common/QElectronDrawer' export function DispatchLayout() { const { dispatchId } = useParams() const dispatch = useDispatch() + const [openQelectronDrawer, setOpenQelectronDrawer] = useState(false) const graph_result = useSelector((state) => state.graphResults.graphList) const [prettify, setPrettify] = useState(true) const latDetailError = useSelector( @@ -92,6 +88,7 @@ export function DispatchLayout() { if (latDetailError !== null && latDetailError.status === 400) { return } + return ( <> @@ -121,8 +118,24 @@ export function DispatchLayout() { + + { + setOpenQelectronDrawer((prev) => !prev)} + openQelectronDrawer={openQelectronDrawer} + dispatchId={ + sublatticesDispatchId + ? sublatticesDispatchId?.dispatchId + : dispatchId + } + electronId={selectedElectron?.node_id} + /> + } {Object.keys(graph_result).length !== 0 ? ( setOpenQelectronDrawer((prev) => !prev)} + openQelectronDrawer={openQelectronDrawer} prettify={prettify} node={selectedElectron} graph={graph_result} @@ -142,7 +155,7 @@ export function DispatchLayout() { const UUID_PATTERN = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/; -export function DispatchLayoutValidate () { +export function DispatchLayoutValidate() { let { dispatchId } = useParams() if (!UUID_PATTERN.test(dispatchId)) { return diff --git a/covalent_ui/webapp/src/components/dispatch/DispatchTopBar.js b/covalent_ui/webapp/src/components/dispatch/DispatchTopBar.js index e85167790..a423bf015 100644 --- a/covalent_ui/webapp/src/components/dispatch/DispatchTopBar.js +++ b/covalent_ui/webapp/src/components/dispatch/DispatchTopBar.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' diff --git a/covalent_ui/webapp/src/components/dispatch/LatticeDispatchOverview.js b/covalent_ui/webapp/src/components/dispatch/LatticeDispatchOverview.js index a7b3a7b8f..f5755b48d 100644 --- a/covalent_ui/webapp/src/components/dispatch/LatticeDispatchOverview.js +++ b/covalent_ui/webapp/src/components/dispatch/LatticeDispatchOverview.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Divider, diff --git a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchDrawerContents.test.js b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchDrawerContents.test.js index 98ee7bbbd..8d653365b 100644 --- a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchDrawerContents.test.js +++ b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchDrawerContents.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchLayout.test.js b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchLayout.test.js index d3dabda7f..cfd0c48d8 100644 --- a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchLayout.test.js +++ b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchLayout.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchTopBar.test.js b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchTopBar.test.js index 9368c1170..5a50ed769 100644 --- a/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchTopBar.test.js +++ b/covalent_ui/webapp/src/components/dispatch/_tests_/DispatchTopBar.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatch/_tests_/LatticeDispatchOverview.test.js b/covalent_ui/webapp/src/components/dispatch/_tests_/LatticeDispatchOverview.test.js index c93124e92..7baaecee4 100644 --- a/covalent_ui/webapp/src/components/dispatch/_tests_/LatticeDispatchOverview.test.js +++ b/covalent_ui/webapp/src/components/dispatch/_tests_/LatticeDispatchOverview.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { screen, render } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatches/ResultListing.js b/covalent_ui/webapp/src/components/dispatches/ResultListing.js index 64ef4907b..15f5ab176 100644 --- a/covalent_ui/webapp/src/components/dispatches/ResultListing.js +++ b/covalent_ui/webapp/src/components/dispatches/ResultListing.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' @@ -907,7 +901,7 @@ const ResultListing = () => { /> ) : ( - {!result.runTime ? '-' : secondsToHms(result.runTime)} + {!result?.runTime && result?.runTime !== 0 ? '-' : secondsToHms(result.runTime)} )} diff --git a/covalent_ui/webapp/src/components/dispatches/ResultProgress.js b/covalent_ui/webapp/src/components/dispatches/ResultProgress.js index 1c193d71f..6b24edb15 100644 --- a/covalent_ui/webapp/src/components/dispatches/ResultProgress.js +++ b/covalent_ui/webapp/src/components/dispatches/ResultProgress.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Box, LinearProgress, Tooltip } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/dispatches/Runtime.js b/covalent_ui/webapp/src/components/dispatches/Runtime.js index 22aad42a4..76560ca9d 100644 --- a/covalent_ui/webapp/src/components/dispatches/Runtime.js +++ b/covalent_ui/webapp/src/components/dispatches/Runtime.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/dispatches/SortDispatch.js b/covalent_ui/webapp/src/components/dispatches/SortDispatch.js index fef3c3bb9..3d45fc86d 100644 --- a/covalent_ui/webapp/src/components/dispatches/SortDispatch.js +++ b/covalent_ui/webapp/src/components/dispatches/SortDispatch.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' diff --git a/covalent_ui/webapp/src/components/dispatches/SublatticesListing.js b/covalent_ui/webapp/src/components/dispatches/SublatticesListing.js index 5cc323f1b..4d5ab4301 100644 --- a/covalent_ui/webapp/src/components/dispatches/SublatticesListing.js +++ b/covalent_ui/webapp/src/components/dispatches/SublatticesListing.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/dispatches/__tests__/ResultListing.test.js b/covalent_ui/webapp/src/components/dispatches/__tests__/ResultListing.test.js index e117e9f38..64be29eb5 100644 --- a/covalent_ui/webapp/src/components/dispatches/__tests__/ResultListing.test.js +++ b/covalent_ui/webapp/src/components/dispatches/__tests__/ResultListing.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen, fireEvent } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/dispatches/__tests__/ResultProgress.test.js b/covalent_ui/webapp/src/components/dispatches/__tests__/ResultProgress.test.js index d0457da26..f4128aa37 100644 --- a/covalent_ui/webapp/src/components/dispatches/__tests__/ResultProgress.test.js +++ b/covalent_ui/webapp/src/components/dispatches/__tests__/ResultProgress.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatches/__tests__/Runtime.test.js b/covalent_ui/webapp/src/components/dispatches/__tests__/Runtime.test.js index f7d6cad26..3c8a8bd53 100644 --- a/covalent_ui/webapp/src/components/dispatches/__tests__/Runtime.test.js +++ b/covalent_ui/webapp/src/components/dispatches/__tests__/Runtime.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatches/__tests__/SortDispatch.test.js b/covalent_ui/webapp/src/components/dispatches/__tests__/SortDispatch.test.js index 57b604c9c..6ed7eaebb 100644 --- a/covalent_ui/webapp/src/components/dispatches/__tests__/SortDispatch.test.js +++ b/covalent_ui/webapp/src/components/dispatches/__tests__/SortDispatch.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { fireEvent, render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/dispatches/__tests__/SublatticesListing.test.js b/covalent_ui/webapp/src/components/dispatches/__tests__/SublatticesListing.test.js index 722942051..172bf1816 100644 --- a/covalent_ui/webapp/src/components/dispatches/__tests__/SublatticesListing.test.js +++ b/covalent_ui/webapp/src/components/dispatches/__tests__/SublatticesListing.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen , fireEvent} from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/graph/DirectedEdge.js b/covalent_ui/webapp/src/components/graph/DirectedEdge.js index e797b018b..0c1d973f4 100644 --- a/covalent_ui/webapp/src/components/graph/DirectedEdge.js +++ b/covalent_ui/webapp/src/components/graph/DirectedEdge.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { BezierEdge } from 'react-flow-renderer' diff --git a/covalent_ui/webapp/src/components/graph/ElectronNode.js b/covalent_ui/webapp/src/components/graph/ElectronNode.js index 1371fee25..38ea90152 100644 --- a/covalent_ui/webapp/src/components/graph/ElectronNode.js +++ b/covalent_ui/webapp/src/components/graph/ElectronNode.js @@ -1,30 +1,25 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ -import { Grid, Paper, Tooltip, tooltipClasses, Typography } from '@mui/material' +import { Grid, Paper, Tooltip, tooltipClasses, Typography, SvgIcon } from '@mui/material' import { styled } from '@mui/material/styles' import { Handle } from 'react-flow-renderer' import CopyButton from '../common/CopyButton' import { truncateMiddle, nodeLabelIcon, statusIcon } from '../../utils/misc' +import { ReactComponent as QelectronSvg } from '../../assets/qelectron/qelectron.svg' export const NODE_TEXT_COLOR = 'rgba(250, 250, 250, 0.6)' @@ -145,6 +140,7 @@ export const ElectronNode = ({ data-testid="handleelectronNode" /> {nodeLabelIcon(data.nodeType)} + {data?.isQelectron ? : <>} {statusIcon(data.status)} {data.label} diff --git a/covalent_ui/webapp/src/components/graph/LatticeControls.js b/covalent_ui/webapp/src/components/graph/LatticeControls.js index f307e353a..b844889d7 100644 --- a/covalent_ui/webapp/src/components/graph/LatticeControls.js +++ b/covalent_ui/webapp/src/components/graph/LatticeControls.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useZoomPanHelper } from 'react-flow-renderer' diff --git a/covalent_ui/webapp/src/components/graph/LatticeControlsElk.js b/covalent_ui/webapp/src/components/graph/LatticeControlsElk.js index 05a88ca42..f7c0bb6c1 100644 --- a/covalent_ui/webapp/src/components/graph/LatticeControlsElk.js +++ b/covalent_ui/webapp/src/components/graph/LatticeControlsElk.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useZoomPanHelper } from 'react-flow-renderer' diff --git a/covalent_ui/webapp/src/components/graph/LatticeGraph.js b/covalent_ui/webapp/src/components/graph/LatticeGraph.js index 2c9cf6ea0..0994a2735 100644 --- a/covalent_ui/webapp/src/components/graph/LatticeGraph.js +++ b/covalent_ui/webapp/src/components/graph/LatticeGraph.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useEffect, useRef, useState, createRef, memo, useMemo } from 'react' import { useScreenshot, createFileName } from 'use-react-screenshot' diff --git a/covalent_ui/webapp/src/components/graph/Layout.js b/covalent_ui/webapp/src/components/graph/Layout.js index 53e886f68..b95f3f7f4 100644 --- a/covalent_ui/webapp/src/components/graph/Layout.js +++ b/covalent_ui/webapp/src/components/graph/Layout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/graph/LayoutElk.js b/covalent_ui/webapp/src/components/graph/LayoutElk.js index 62314bc86..705f73811 100644 --- a/covalent_ui/webapp/src/components/graph/LayoutElk.js +++ b/covalent_ui/webapp/src/components/graph/LayoutElk.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' @@ -75,8 +69,8 @@ const mapGraphToElements = ( const name = isParam ? node?.name?.replace(':parameter:', '') : prettify - ? Prettify(node.name, node.type) - : nodeLabel(node?.type, node.name) + ? Prettify(node.name, node.type) + : nodeLabel(node?.type, node.name) return { id: String(node.id), type: isParam ? 'parameter' : 'electron', @@ -94,6 +88,7 @@ const mapGraphToElements = ( sublattices_id: node.sublattice_dispatch_id ? node.sublattice_dispatch_id : null, + isQelectron: node?.qelectron_data_exists }, targetPosition: handlePositions.target, sourcePosition: handlePositions.source, diff --git a/covalent_ui/webapp/src/components/graph/LayoutOptions.js b/covalent_ui/webapp/src/components/graph/LayoutOptions.js index 46210806a..6b9eaaa7c 100644 --- a/covalent_ui/webapp/src/components/graph/LayoutOptions.js +++ b/covalent_ui/webapp/src/components/graph/LayoutOptions.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import * as React from 'react' diff --git a/covalent_ui/webapp/src/components/graph/ParameterNode.js b/covalent_ui/webapp/src/components/graph/ParameterNode.js index af11c0542..70e9c6bb1 100644 --- a/covalent_ui/webapp/src/components/graph/ParameterNode.js +++ b/covalent_ui/webapp/src/components/graph/ParameterNode.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/graph/ReactFlowHooks.js b/covalent_ui/webapp/src/components/graph/ReactFlowHooks.js index 28b742714..c978fc529 100644 --- a/covalent_ui/webapp/src/components/graph/ReactFlowHooks.js +++ b/covalent_ui/webapp/src/components/graph/ReactFlowHooks.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { useMemo } from 'react' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/DirectedEdge.test.js b/covalent_ui/webapp/src/components/graph/__tests__/DirectedEdge.test.js index fafd3438b..12e7f3756 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/DirectedEdge.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/DirectedEdge.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render } from '@testing-library/react' import DirectedEdge from '../DirectedEdge' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/ElectronNode.test.js b/covalent_ui/webapp/src/components/graph/__tests__/ElectronNode.test.js index bd6d1d0d9..2a936453c 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/ElectronNode.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/ElectronNode.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render, screen } from '@testing-library/react' import { ElectronNode } from '../ElectronNode' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/LatticeControls.test.js b/covalent_ui/webapp/src/components/graph/__tests__/LatticeControls.test.js index 5b6ad3c9f..fd6627222 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/LatticeControls.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/LatticeControls.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render, diff --git a/covalent_ui/webapp/src/components/graph/__tests__/LatticeControlsElk.test.js b/covalent_ui/webapp/src/components/graph/__tests__/LatticeControlsElk.test.js index b4c0f7ec0..7c44a7c20 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/LatticeControlsElk.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/LatticeControlsElk.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render, diff --git a/covalent_ui/webapp/src/components/graph/__tests__/LatticeGraph.test.js b/covalent_ui/webapp/src/components/graph/__tests__/LatticeGraph.test.js index 996432b18..c7b455c04 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/LatticeGraph.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/LatticeGraph.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render } from '@testing-library/react' // import {screen} from '@testing-library/dom' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/Layout.test.js b/covalent_ui/webapp/src/components/graph/__tests__/Layout.test.js index 5d0c2ae0c..409445968 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/Layout.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/Layout.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { render } from '@testing-library/react' // import {screen} from '@testing-library/dom' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/LayoutOptions.test.js b/covalent_ui/webapp/src/components/graph/__tests__/LayoutOptions.test.js index c11c5f6b1..459a00f5f 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/LayoutOptions.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/LayoutOptions.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { fireEvent, render, screen } from '@testing-library/react' import { LayoutOptions } from '../LayoutOptions' diff --git a/covalent_ui/webapp/src/components/graph/__tests__/ParameterNode.test.js b/covalent_ui/webapp/src/components/graph/__tests__/ParameterNode.test.js index 1a7d9b09d..f9233cc8d 100644 --- a/covalent_ui/webapp/src/components/graph/__tests__/ParameterNode.test.js +++ b/covalent_ui/webapp/src/components/graph/__tests__/ParameterNode.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { screen, render } from '@testing-library/react' // import {render} from '@testing-library/dom' diff --git a/covalent_ui/webapp/src/components/logs/LogsLayout.js b/covalent_ui/webapp/src/components/logs/LogsLayout.js index 1b471d440..947bcc2a0 100644 --- a/covalent_ui/webapp/src/components/logs/LogsLayout.js +++ b/covalent_ui/webapp/src/components/logs/LogsLayout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import NavDrawer from '../common/NavDrawer' diff --git a/covalent_ui/webapp/src/components/logs/LogsListing.js b/covalent_ui/webapp/src/components/logs/LogsListing.js index c12386c27..c3259e1b4 100644 --- a/covalent_ui/webapp/src/components/logs/LogsListing.js +++ b/covalent_ui/webapp/src/components/logs/LogsListing.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/logs/__tests__/LogsLayout.test.js b/covalent_ui/webapp/src/components/logs/__tests__/LogsLayout.test.js index 829ac88d0..a254f3176 100644 --- a/covalent_ui/webapp/src/components/logs/__tests__/LogsLayout.test.js +++ b/covalent_ui/webapp/src/components/logs/__tests__/LogsLayout.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/logs/__tests__/LogsListing.test.js b/covalent_ui/webapp/src/components/logs/__tests__/LogsListing.test.js index e09f1de91..261bd6205 100644 --- a/covalent_ui/webapp/src/components/logs/__tests__/LogsListing.test.js +++ b/covalent_ui/webapp/src/components/logs/__tests__/LogsListing.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { fireEvent, render, screen, act } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/preview/ExecutorSection.js b/covalent_ui/webapp/src/components/preview/ExecutorSection.js index 7bc0759a0..09dee122b 100644 --- a/covalent_ui/webapp/src/components/preview/ExecutorSection.js +++ b/covalent_ui/webapp/src/components/preview/ExecutorSection.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/preview/LatticePreviewLayout.js b/covalent_ui/webapp/src/components/preview/LatticePreviewLayout.js index 187dfc858..41d0e5084 100644 --- a/covalent_ui/webapp/src/components/preview/LatticePreviewLayout.js +++ b/covalent_ui/webapp/src/components/preview/LatticePreviewLayout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/preview/NodePreviewDrawer.js b/covalent_ui/webapp/src/components/preview/NodePreviewDrawer.js index ecc910e57..19798a142 100644 --- a/covalent_ui/webapp/src/components/preview/NodePreviewDrawer.js +++ b/covalent_ui/webapp/src/components/preview/NodePreviewDrawer.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' import { useSelector } from 'react-redux' diff --git a/covalent_ui/webapp/src/components/preview/PreviewDrawerContents.js b/covalent_ui/webapp/src/components/preview/PreviewDrawerContents.js index 893129469..ad0952fc7 100644 --- a/covalent_ui/webapp/src/components/preview/PreviewDrawerContents.js +++ b/covalent_ui/webapp/src/components/preview/PreviewDrawerContents.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/components/preview/__tests__/ExecutorSection.test.js b/covalent_ui/webapp/src/components/preview/__tests__/ExecutorSection.test.js index 5af4dbea9..96f8b922e 100644 --- a/covalent_ui/webapp/src/components/preview/__tests__/ExecutorSection.test.js +++ b/covalent_ui/webapp/src/components/preview/__tests__/ExecutorSection.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/preview/__tests__/LatticePreviewLayout.test.js b/covalent_ui/webapp/src/components/preview/__tests__/LatticePreviewLayout.test.js index 0090f343c..70f00684a 100644 --- a/covalent_ui/webapp/src/components/preview/__tests__/LatticePreviewLayout.test.js +++ b/covalent_ui/webapp/src/components/preview/__tests__/LatticePreviewLayout.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import App from '../LatticePreviewLayout' diff --git a/covalent_ui/webapp/src/components/preview/__tests__/NodePreviewDrawer.test.js b/covalent_ui/webapp/src/components/preview/__tests__/NodePreviewDrawer.test.js index d3bf95e4c..630f035d4 100644 --- a/covalent_ui/webapp/src/components/preview/__tests__/NodePreviewDrawer.test.js +++ b/covalent_ui/webapp/src/components/preview/__tests__/NodePreviewDrawer.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import App from '../NodePreviewDrawer.js' diff --git a/covalent_ui/webapp/src/components/preview/__tests__/PreviewDrawerContents.test.js b/covalent_ui/webapp/src/components/preview/__tests__/PreviewDrawerContents.test.js index 1e261c730..0988ad48f 100644 --- a/covalent_ui/webapp/src/components/preview/__tests__/PreviewDrawerContents.test.js +++ b/covalent_ui/webapp/src/components/preview/__tests__/PreviewDrawerContents.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import App from '../PreviewDrawerContents' diff --git a/covalent_ui/webapp/src/components/qelectron/Circuit.js b/covalent_ui/webapp/src/components/qelectron/Circuit.js new file mode 100644 index 000000000..970047597 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/Circuit.js @@ -0,0 +1,223 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import { Grid, Typography, SvgIcon, Box, Modal, Paper, Skeleton } from '@mui/material' +import React, { useState } from 'react' +import theme from '../../utils/theme' +import { ReactComponent as CircuitLarge } from '../../assets/qelectron/circuit-large.svg' +import { ReactComponent as CloseSvg } from '../../assets/close.svg' +import SyntaxHighlighter from '../common/SyntaxHighlighter' +import { useSelector } from 'react-redux'; + +const styles = { + outline: 'none', + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + p: 4, + width: ' 95%', + height: '95%', + bgcolor: '#0B0B11E5', + border: '2px solid transparent', + boxShadow: 24, +} + +const SingleGrid = ({ title, value, id }) => { + + const qelectronJobOverviewIsFetching = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.isFetching + ); + + return ( + + theme.palette.text.tertiary, + }} + > + {title} + + {qelectronJobOverviewIsFetching && !value ? + : <> + theme.palette.text.primary, + }} + > + {value || value === 0 ? value : '-'} + + } + + ) +} + +const Circuit = ({ circuitDetails }) => { + const [openModal, setOpenModal] = useState(false) + const [circuitData, setCircuitData] = useState(circuitDetails); + + const handleClose = () => { + setOpenModal(false) + } + const qelectronJobOverviewIsFetching = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.isFetching + ); + + React.useEffect(() => { + const details = { ...circuitData }; + const gatesArray = []; + Object?.keys(details)?.forEach((item, index) => { + const obj = {}; + if (/qbit[0-9]+_gates/.test(item)) { + obj['value'] = details[item]; + const i = item?.substring(4, item?.indexOf('_')); + obj['title'] = `No. ${i}-Qubit Gates`; + obj['id'] = item; + gatesArray?.push(obj); + } + }) + details['gates'] = [...gatesArray]; + setCircuitData({ ...details }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [circuitDetails]) + + const renderQubitgates = () => { + return circuitData?.gates?.map((detail, index) => ( + + )); + } + + return ( + + + + {renderQubitgates()} + + + + theme.palette.text.tertiary, + }} + > + Circuit + + + + ({ + bgcolor: theme.palette.background.outRunBg, + })} + > + {' '} + + + + + + + + + + + theme.palette.text.primary, + }} + component={CircuitLarge} + viewBox="0 0 900 320" // Specify the viewBox to match the desired container size + /> + + + + + + + + + + + + + + + ) +} + +export default Circuit diff --git a/covalent_ui/webapp/src/components/qelectron/Executor.js b/covalent_ui/webapp/src/components/qelectron/Executor.js new file mode 100644 index 000000000..64ae6000b --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/Executor.js @@ -0,0 +1,48 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import { Grid, Paper } from '@mui/material' +import React from 'react' +import SyntaxHighlighter from '../common/SyntaxHighlighter' +import { useSelector } from 'react-redux'; + +const Executor = (props) => { + const { code } = props + const qelectronJobOverviewIsFetching = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.isFetching + ) + return ( + + ({ + bgcolor: theme.palette.background.outRunBg, + })} + > + {' '} + + + + ) +} + +export default Executor diff --git a/covalent_ui/webapp/src/components/qelectron/Overview.js b/covalent_ui/webapp/src/components/qelectron/Overview.js new file mode 100644 index 000000000..a480d437d --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/Overview.js @@ -0,0 +1,139 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import React from 'react' +import { Grid, Typography, Paper, Skeleton } from '@mui/material' +import theme from '../../utils/theme' +import SyntaxHighlighter from '../common/SyntaxHighlighter' +import { formatQElectronTime, getLocalStartTime, formatDate } from '../../utils/misc' +import { useSelector } from 'react-redux'; + +const Overview = (props) => { + const { details } = props + const code = details?.result; + + const qelectronJobOverviewIsFetching = useSelector( + (state) => state.electronResults.qelectronJobOverviewList.isFetching + ) + + return ( + <> + {' '} + theme.palette.text.primary, + fontSize: theme.typography.sidebarh2, + fontWeight: 'bold', + }} + > + Execution Details + + + + theme.palette.text.tertiary, + }} + > + Backend + + theme.palette.text.primary, + }} + > + {qelectronJobOverviewIsFetching && !details ? + + : <>{(details?.backend) ? (details?.backend) : '-'}} + + theme.palette.text.tertiary, + }} + > + Time Elapsed + + theme.palette.text.primary, + }} + > + {qelectronJobOverviewIsFetching && !details ? + : <> + {(details?.time_elapsed) ? (formatQElectronTime(details?.time_elapsed)) : '-'} + } + + theme.palette.text.tertiary, + }} + > + Start time - End time + + {details?.start_time && details?.end_time && + theme.palette.text.primary, + }} + > + {qelectronJobOverviewIsFetching && !details ? + : <> + {formatDate(getLocalStartTime(details?.start_time))} + {` - ${formatDate(getLocalStartTime(details?.end_time))}`} + } + } + + + ({ + bgcolor: theme.palette.background.outRunBg, + })} + > + + + + + + ) +} + +export default Overview diff --git a/covalent_ui/webapp/src/components/qelectron/QElectronList.js b/covalent_ui/webapp/src/components/qelectron/QElectronList.js new file mode 100644 index 000000000..004655423 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/QElectronList.js @@ -0,0 +1,575 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ + +import _ from 'lodash' +import { useEffect, useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { + Table, + TableRow, + TableHead, + TableCell, + TableBody, + Typography, + TableContainer, + TableSortLabel, + Box, + styled, + tableCellClasses, + tableRowClasses, + tableBodyClasses, + tableSortLabelClasses, + linkClasses, + Grid, + SvgIcon, + Tooltip, + Skeleton +} from '@mui/material' + +import { statusIcon, getLocalStartTime, formatDate, truncateMiddle } from '../../utils/misc' +import { Table as RTable } from 'react-virtualized'; +import { ReactComponent as FilterSvg } from '../../assets/qelectron/filter.svg' +import CopyButton from '../common/CopyButton' +import useMediaQuery from '@mui/material/useMediaQuery' +import { + qelectronJobs, +} from '../../redux/electronSlice' + +const headers = [ + { + id: 'job_id', + getter: 'job_id', + label: 'Job Id / Status', + sortable: true, + }, + { + id: 'start_time', + getter: 'start_time', + label: 'Start Time', + sortable: true, + }, + { + id: 'executor', + getter: 'executor', + label: 'Executor', + sortable: true, + }, +] + +const ResultsTableHead = ({ order, orderBy, onSort }) => { + return ( + + + {_.map(headers, (header) => { + return ( + ({ + border: 'none', + borderColor: + theme.palette.background.coveBlack03 + '!important', + paddingLeft: header?.id === 'executor' ? '2.3rem' : header?.id === 'start_time' ? '0.5rem' : '' + })} + > + {header.sortable ? ( + onSort(header.id)} + sx={{ + fontSize: '12px', + width: '100%', + mr: header.id === 'job_id' ? 20 : null, + '.Mui-active': { + color: (theme) => theme.palette.text.secondary, + }, + }} + > + {header.id === 'job_id' && ( + + + + + + )} + {header.label} + + ) : ( + header.label + )} + + ) + })} + + + ) +} + +const StyledTable = styled(Table)(({ theme }) => ({ + // stripe every odd body row except on select and hover + // [`& .MuiTableBody-root .MuiTableRow-root:nth-of-type(odd):not(.Mui-selected):not(:hover)`]: + // { + // backgroundColor: theme.palette.background.paper, + // }, + + // customize text + [`& .${tableBodyClasses.root} .${tableCellClasses.root}, & .${tableCellClasses.head}`]: + { + fontSize: '1rem', + }, + + // subdue header text + [`& .${tableCellClasses.head}, & .${tableSortLabelClasses.active}`]: { + color: theme.palette.text.tertiary, + backgroundColor: 'transparent', + }, + + // copy btn on hover + [`& .${tableBodyClasses.root} .${tableRowClasses.root}`]: { + '& .copy-btn': { visibility: 'hidden' }, + '&:hover .copy-btn': { visibility: 'visible' }, + }, + + // customize hover + [`& .${tableBodyClasses.root} .${tableRowClasses.root}:hover`]: { + backgroundColor: theme.palette.background.coveBlack02, + + [`& .${tableCellClasses.root}`]: { + borderColor: 'transparent', + paddingTop: 4, + paddingBottom: 4, + }, + [`& .${linkClasses.root}`]: { + color: theme.palette.text.secondary, + }, + }, + + [`& .${tableBodyClasses.root} .${tableRowClasses.root}`]: { + backgroundColor: 'transparent', + cursor: 'pointer', + + [`& .${tableCellClasses.root}`]: { + borderColor: 'transparent', + paddingTop: 4, + paddingBottom: 4, + }, + // [`& .${linkClasses.root}`]: { + // color: theme.palette.text.secondary, + // }, + }, + + // customize selected + [`& .${tableBodyClasses.root} .${tableRowClasses.root}.Mui-selected`]: { + backgroundColor: theme.palette.background.coveBlack02, + }, + [`& .${tableBodyClasses.root} .${tableRowClasses.root}.Mui-selected:hover`]: { + backgroundColor: theme.palette.background.default, + }, + + // customize border + [`& .${tableCellClasses.root}`]: { + borderColor: 'transparent', + paddingTop: 4, + paddingBottom: 4, + }, + + [`& .${tableCellClasses.root}:first-of-type`]: { + borderTopLeftRadius: 8, + borderBottomLeftRadius: 8, + }, + [`& .${tableCellClasses.root}:last-of-type`]: { + borderTopRightRadius: 8, + borderBottomRightRadius: 8, + }, +})) + +const QElectronList = ({ expanded, data, rowClick, electronId, dispatchId, setExpanded, defaultId, setOpenSnackbar, setSnackbarMessage }) => { + const dispatch = useDispatch() + const [selected, setSelected] = useState([]) + const [selectedId, setSelectedId] = useState(defaultId) + const [sortColumn, setSortColumn] = useState('start_time') + const [sortOrder, setSortOrder] = useState('DESC') + const isHeightAbove850px = useMediaQuery('(min-height: 850px)') + const isHeight900920px = useMediaQuery('(min-height: 900px) and (max-height: 920px)') + const isHeight920940px = useMediaQuery('(min-height: 920px) and (max-height: 940px)') + const isHeightAbove940px = useMediaQuery('(min-height: 940px)') + const isHeightAbove945px = useMediaQuery('(min-height: 945px)') + const isHeightAbove1024px = useMediaQuery('(min-height: 1024px)') + const isHeightAbove1040px = useMediaQuery('(min-height: 1040px)') + const isFetching = useSelector( + (state) => state.electronResults.qelectronJobsList.isFetching + ) + + useEffect(() => { + setSelectedId(defaultId) + }, [defaultId]) + + const isError = useSelector( + (state) => state.electronResults.qelectronJobsList.error + ); + + // check if there are any API errors and show a sncakbar + useEffect(() => { + if (isError) { + setOpenSnackbar(true) + if (isError?.detail && isError?.detail?.length > 0 && isError?.detail[0] && isError?.detail[0]?.msg) { + setSnackbarMessage(isError?.detail[0]?.msg) + } + else { + setSnackbarMessage( + 'Something went wrong,please contact the administrator!' + ) + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isError]); + + useEffect(() => { + if (electronId || electronId === 0) { + const bodyParams = { + sort_by: sortColumn, + direction: sortOrder, + offset: 0 + } + dispatch( + qelectronJobs({ + dispatchId, + electronId, + bodyParams + }) + ) + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [sortColumn, sortOrder]) + + const handleChangeSort = (column) => { + setSelected([]) + const isAsc = sortColumn === column && sortOrder === 'asc' + setSortOrder(isAsc ? 'desc' : 'asc') + setSortColumn(column) + } + + // const getHeight = () => { + // if (xlmatches) { + // return expanded ? '23rem' : '40rem' + // } else if (xxlmatches) { + // return expanded ? '63rem' : '40rem' + // } else if (slmatches) { + // return expanded ? '24rem' : '48rem' + // } else { + // return expanded ? '16rem' : '32rem' + // } + // } + + const renderHeader = () => { + return (<> + {!(_.isEmpty(data)) && + } + + ) + } + + const getReactVirHeight = () => { + let height = !expanded ? 450 : 200 + if (isHeightAbove850px) { + height = !expanded ? 550 : 310 + } + if (isHeight900920px) { + height = !expanded ? 583 : 360 + } + if (isHeight920940px) { + height = !expanded ? 610 : 360 + } + if (isHeightAbove940px) { + height = !expanded ? 600 : 400 + } + if (isHeightAbove945px) { + height = !expanded ? 660 : 410 + } + if (isHeightAbove1024px) { + height = !expanded ? 700 : 480 + } + if (isHeightAbove1040px) { + height = !expanded ? 750 : 500 + } + return height; + } + + const getReactVirCount = () => { + let count = expanded ? 3 : 5; + if (isHeightAbove940px) { + count = !expanded ? 5 : 8 + } + if (isHeightAbove1040px) { + count = !expanded ? 8 : 11; + } + return count; + } + + function renderRow({ index, key, style }) { + const result = data[index] + return ( +
+ theme.palette.background.coveBlack02 + }, + '&.MuiTableRow-root.Mui-selected': { + backgroundColor: (theme) => theme.palette.background.coveBlack02 + }, + '&.MuiTableRow-root.Mui-selected:hover': { + backgroundColor: (theme) => theme.palette.background.default, + }, + '& .MuiTableCell-root': { + borderColor: 'transparent', + paddingTop: 0.2, + paddingBottom: 0.1, + cursor: 'pointer' + }, + '& .MuiTableCell-root:first-of-type': { + borderTopLeftRadius: 8, + borderBottomLeftRadius: 8, + }, + '& .MuiTableCell-root:last-of-type': { + borderTopRightRadius: 8, + borderBottomRightRadius: 8, + } + }} + data-testid="copyMessage" + data-tip + data-for="logRow" + onClick={() => { + setExpanded(true); + setSelectedId(result?.job_id) + rowClick(result?.job_id) + }} + hover + selected={result?.job_id === selectedId} + key={key} + > + theme.typography.logsFont, + }} + > + + {statusIcon(result?.status)} + + theme.palette.text.secondary, + }} + width="12rem" + > + {truncateMiddle(result?.job_id, 8, 13)} + + + + + + + + {formatDate(getLocalStartTime(result?.start_time))} + + + + + {result.executor} + + + +
+ ); + } + + return ( + theme.palette.background.qListBg, + }} + data-testid="QelectronList-grid" + > + + {!isFetching && data && ( + + + {!_.isEmpty(data) && !isFetching && + data[index]} + />} + + {_.isEmpty(data) && !isFetching && ( + + No results found. + + )} + + ) + } + + {isFetching && _.isEmpty(data) && ( + <> + {/* */} + {/* */} + + + + {[...Array(3)].map(() => ( + + + + + + + + + + + + ))} + + + + + ) + } + + ) +} + +export default QElectronList diff --git a/covalent_ui/webapp/src/components/qelectron/__tests__/Circuit.test.js b/covalent_ui/webapp/src/components/qelectron/__tests__/Circuit.test.js new file mode 100644 index 000000000..1964a1257 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/__tests__/Circuit.test.js @@ -0,0 +1,66 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { screen, render } from '@testing-library/react' +import App from '../Circuit' +import { BrowserRouter } from 'react-router-dom' +import React from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Circuit Tab', () => { + const circuitDetails = { + "total_qbits": 2, + "qbit1_gates": 2, + "qbit2_gates": 1, + "depth": 2, + "circuit": "RX!0.7984036206686643![0]Hadamard[1]CNOT[0, 1]|||ObservableReturnTypes.Expectation!['PauliY', 'PauliX'][0, 1]" + } + test('circuit tab is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('Circuit-grid') + expect(linkElement).toBeInTheDocument() + }) + + const filterData = Object.keys(circuitDetails); + test.each(filterData)('checks rendering for qubit values', (arg) => { + reduxRender() + const linkElement = screen.getByTestId(arg) + expect(linkElement).toBeInTheDocument() + }) +}) diff --git a/covalent_ui/webapp/src/components/qelectron/__tests__/Executor.test.js b/covalent_ui/webapp/src/components/qelectron/__tests__/Executor.test.js new file mode 100644 index 000000000..d2f202638 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/__tests__/Executor.test.js @@ -0,0 +1,83 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { screen, render } from '@testing-library/react' +import App from '../Executor' +import { BrowserRouter } from 'react-router-dom' +import React from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Executor Tab', () => { + const code = { + "name": "Simulator", + "executor": { + "persist_data": true, + "qnode_device_import_path": "pennylane.devices.default_qubit:DefaultQubit", + "qnode_device_shots": null, + "qnode_device_wires": 4, + "pennylane_active_return": true, + "device": "default.qubit", + "parallel": "thread", + "workers": 10, + "shots": 0, + "name": "Simulator", + "_backend": { + "persist_data": true, + "qnode_device_import_path": "pennylane.devices.default_qubit:DefaultQubit", + "qnode_device_shots": null, + "qnode_device_wires": 4, + "pennylane_active_return": true, + "device": "default.qubit", + "num_threads": 10, + "name": "BaseThreadPoolQExecutor" + } + } + } + test('executor tab is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('Executor-grid') + expect(linkElement).toBeInTheDocument() + }) + + test('checks rendering for executor code block', () => { + reduxRender() + const linkElement = screen.getByTestId('syntax') + expect(linkElement).toBeInTheDocument() + }) +}) diff --git a/covalent_ui/webapp/src/components/qelectron/__tests__/Overview.test.js b/covalent_ui/webapp/src/components/qelectron/__tests__/Overview.test.js new file mode 100644 index 000000000..515598eb7 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/__tests__/Overview.test.js @@ -0,0 +1,52 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { screen, render } from '@testing-library/react' +import App from '../Overview' +import { BrowserRouter } from 'react-router-dom' +import React from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Overview Tab', () => { + test('overview tab is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('Overview-grid') + expect(linkElement).toBeInTheDocument() + }) +}) diff --git a/covalent_ui/webapp/src/components/qelectron/__tests__/QElectronList.test.js b/covalent_ui/webapp/src/components/qelectron/__tests__/QElectronList.test.js new file mode 100644 index 000000000..77b413919 --- /dev/null +++ b/covalent_ui/webapp/src/components/qelectron/__tests__/QElectronList.test.js @@ -0,0 +1,125 @@ +/** + * Copyright 2023 Agnostiq Inc. + * + * This file is part of Covalent. + * + * Licensed under the GNU Affero General Public License 3.0 (the "License"). + * A copy of the License may be obtained with this software package or at + * + * https://www.gnu.org/licenses/agpl-3.0.en.html + * + * Use of this file is prohibited except in compliance with the License. Any + * modifications or derivative works of this file must retain this copyright + * notice, and modified files must contain a notice indicating that they have + * been altered from the originals. + * + * Covalent is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * + * Relief from the License may be granted by purchasing a commercial license. + */ +import { fireEvent, screen, render } from '@testing-library/react' +import App from '../QElectronList' +import { BrowserRouter } from 'react-router-dom' +import React, { useState } from 'react' +import { Provider } from 'react-redux' +import reducers from '../../../redux/reducers' +import { configureStore } from '@reduxjs/toolkit' +import theme from '../../../utils/theme' +import ThemeProvider from '@mui/system/ThemeProvider' + +function reduxRender(renderedComponent) { + const store = configureStore({ + reducer: reducers, + }) + + return render( + + + {renderedComponent} + + + ) +} + +function reduxRenderMock(renderedComponent) { + const initialState = { + electronResults: { + qelectronJobsList: { + isFetching: true + } + } + } + const store = configureStore({ + reducer: reducers, + preloadedState: initialState, + }) + + return render( + + + {renderedComponent} + + + ) +} + +describe('Qelectron List', () => { + test('Qelectron List Grid is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('QelectronList-grid') + expect(linkElement).toBeInTheDocument() + }) + + const data = [ + { + "job_id": "circuit_0@6418e062-7892-4239-8734-39926c5558fc", + "start_time": "2023-06-13T21:19:27.057015", + "executor": "QiskitExecutor", + "status": "COMPLETED" + }, + { + "job_id": "circuit_0@a86bf847-84a3-4414-adbe-2bc1d6727371", + "start_time": "2023-06-13T21:19:27.033453", + "executor": "QiskitExecutor", + "status": "COMPLETED" + }, + { + "job_id": "circuit_0@25352acb-de2a-4195-99a8-afe60c8ff675", + "start_time": "2023-06-13T21:19:27.009380", + "executor": "QiskitExecutor", + "status": "COMPLETED" + }, + { + "job_id": "circuit_0@75a6a5e1-63f3-4231-beea-9374705cbfc8", + "start_time": "2023-06-13T21:19:26.960943", + "executor": "QiskitExecutor", + "status": "COMPLETED" + } + ]; + test('Qelectron List data is rendered', () => { + reduxRender() + const linkElement = screen.getByTestId('QelectronList-table') + expect(linkElement).toBeInTheDocument() + const ele = screen.queryAllByTestId('tableHeader'); + expect(ele[0]).toBeInTheDocument() + fireEvent.click(ele[0]) + const ele1 = screen.queryAllByTestId('copyMessage'); + expect(ele1[0]).toBeInTheDocument() + fireEvent.click(ele1[0]) + }) + + test('Qelectron List empty data is rendered', () => { + reduxRender() + const linkElement = screen.queryByText('No results found.') + expect(linkElement).toBeInTheDocument() + }) + + test('Qelectron List empty data with isFetching', () => { + reduxRenderMock() + const linkElement = screen.queryByText('No results found.') + expect(linkElement).not.toBeInTheDocument() + }) + +}) diff --git a/covalent_ui/webapp/src/components/settings/DialogBox.js b/covalent_ui/webapp/src/components/settings/DialogBox.js index f9cdca1e2..eb426f381 100644 --- a/covalent_ui/webapp/src/components/settings/DialogBox.js +++ b/covalent_ui/webapp/src/components/settings/DialogBox.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import * as React from 'react' diff --git a/covalent_ui/webapp/src/components/settings/Settings.js b/covalent_ui/webapp/src/components/settings/Settings.js index 5c3099496..374aa6528 100644 --- a/covalent_ui/webapp/src/components/settings/Settings.js +++ b/covalent_ui/webapp/src/components/settings/Settings.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Container } from '@mui/material' diff --git a/covalent_ui/webapp/src/components/settings/SettingsCard.js b/covalent_ui/webapp/src/components/settings/SettingsCard.js index b97427f29..70c908904 100644 --- a/covalent_ui/webapp/src/components/settings/SettingsCard.js +++ b/covalent_ui/webapp/src/components/settings/SettingsCard.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { useEffect, useState } from 'react' diff --git a/covalent_ui/webapp/src/components/settings/SettingsLayout.js b/covalent_ui/webapp/src/components/settings/SettingsLayout.js index 138e0cfae..064db87d0 100644 --- a/covalent_ui/webapp/src/components/settings/SettingsLayout.js +++ b/covalent_ui/webapp/src/components/settings/SettingsLayout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { Box } from '@mui/system' diff --git a/covalent_ui/webapp/src/components/settings/__tests__/DialogBox.test.js b/covalent_ui/webapp/src/components/settings/__tests__/DialogBox.test.js index b82fd3642..5bf50bf1f 100644 --- a/covalent_ui/webapp/src/components/settings/__tests__/DialogBox.test.js +++ b/covalent_ui/webapp/src/components/settings/__tests__/DialogBox.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { render, screen } from '@testing-library/react' diff --git a/covalent_ui/webapp/src/components/settings/__tests__/Settings.test.js b/covalent_ui/webapp/src/components/settings/__tests__/Settings.test.js index ad31a8fc8..4c2564b70 100644 --- a/covalent_ui/webapp/src/components/settings/__tests__/Settings.test.js +++ b/covalent_ui/webapp/src/components/settings/__tests__/Settings.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/settings/__tests__/SettingsCard.test.js b/covalent_ui/webapp/src/components/settings/__tests__/SettingsCard.test.js index d48c83d50..a67f83c84 100644 --- a/covalent_ui/webapp/src/components/settings/__tests__/SettingsCard.test.js +++ b/covalent_ui/webapp/src/components/settings/__tests__/SettingsCard.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/settings/__tests__/SettingsLayout.test.js b/covalent_ui/webapp/src/components/settings/__tests__/SettingsLayout.test.js index 407dcc7df..c6b6ab572 100644 --- a/covalent_ui/webapp/src/components/settings/__tests__/SettingsLayout.test.js +++ b/covalent_ui/webapp/src/components/settings/__tests__/SettingsLayout.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/components/terminal/Terminal.js b/covalent_ui/webapp/src/components/terminal/Terminal.js index e3ccccabc..e3ec17aaa 100644 --- a/covalent_ui/webapp/src/components/terminal/Terminal.js +++ b/covalent_ui/webapp/src/components/terminal/Terminal.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { useRef, useEffect, memo } from 'react' diff --git a/covalent_ui/webapp/src/components/terminal/TerminalLayout.js b/covalent_ui/webapp/src/components/terminal/TerminalLayout.js index 4e0f4575a..b80d208ae 100644 --- a/covalent_ui/webapp/src/components/terminal/TerminalLayout.js +++ b/covalent_ui/webapp/src/components/terminal/TerminalLayout.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React, { Suspense, lazy } from 'react' import { Box } from '@mui/system' diff --git a/covalent_ui/webapp/src/components/terminal/__tests__/TerminalLayout.test.js b/covalent_ui/webapp/src/components/terminal/__tests__/TerminalLayout.test.js index 4b35b7d5e..c40c38254 100644 --- a/covalent_ui/webapp/src/components/terminal/__tests__/TerminalLayout.test.js +++ b/covalent_ui/webapp/src/components/terminal/__tests__/TerminalLayout.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' import { render, screen } from '../../../testHelpers/testUtils' diff --git a/covalent_ui/webapp/src/index.js b/covalent_ui/webapp/src/index.js index 5d0d22da0..ec3d8d6dd 100644 --- a/covalent_ui/webapp/src/index.js +++ b/covalent_ui/webapp/src/index.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' diff --git a/covalent_ui/webapp/src/redux/_tests_/commonSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/commonSlice.test.js index 71156d04a..9bc4b514c 100644 --- a/covalent_ui/webapp/src/redux/_tests_/commonSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/commonSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { commonSlice } from '../commonSlice' diff --git a/covalent_ui/webapp/src/redux/_tests_/dashboardSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/dashboardSlice.test.js index e24801b41..6a1e7659e 100644 --- a/covalent_ui/webapp/src/redux/_tests_/dashboardSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/dashboardSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { fetchDashboardList, diff --git a/covalent_ui/webapp/src/redux/_tests_/electronSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/electronSlice.test.js index 8bee9ad15..15d9526b9 100644 --- a/covalent_ui/webapp/src/redux/_tests_/electronSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/electronSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { electronDetails, diff --git a/covalent_ui/webapp/src/redux/_tests_/graphSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/graphSlice.test.js index c59184f0f..7069f91b9 100644 --- a/covalent_ui/webapp/src/redux/_tests_/graphSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/graphSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { graphResults, graphSlice } from '../graphSlice' diff --git a/covalent_ui/webapp/src/redux/_tests_/latticePreviewSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/latticePreviewSlice.test.js index 67a4bab38..d82e15b59 100644 --- a/covalent_ui/webapp/src/redux/_tests_/latticePreviewSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/latticePreviewSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { latticePreviewSlice } from '../latticePreviewSlice' diff --git a/covalent_ui/webapp/src/redux/_tests_/latticeSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/latticeSlice.test.js index b20f64a37..d4006bef9 100644 --- a/covalent_ui/webapp/src/redux/_tests_/latticeSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/latticeSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { latticeDetails, diff --git a/covalent_ui/webapp/src/redux/_tests_/logsSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/logsSlice.test.js index 3c0376ccd..99401f3ce 100644 --- a/covalent_ui/webapp/src/redux/_tests_/logsSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/logsSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { fetchLogsList, downloadCovalentLogFile, logsSlice } from '../logsSlice' diff --git a/covalent_ui/webapp/src/redux/_tests_/resultsSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/resultsSlice.test.js index 459f78d8c..4a9af39ad 100644 --- a/covalent_ui/webapp/src/redux/_tests_/resultsSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/resultsSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { fetchResult, diff --git a/covalent_ui/webapp/src/redux/_tests_/settingsSlice.test.js b/covalent_ui/webapp/src/redux/_tests_/settingsSlice.test.js index ff52bb0a6..ac2f59e2c 100644 --- a/covalent_ui/webapp/src/redux/_tests_/settingsSlice.test.js +++ b/covalent_ui/webapp/src/redux/_tests_/settingsSlice.test.js @@ -1,24 +1,18 @@ -// /** -// * Copyright 2021 Agnostiq Inc. -// * -// * This file is part of Covalent. -// * -// * Licensed under the GNU Affero General Public License 3.0 (the "License"). -// * A copy of the License may be obtained with this software package or at -// * -// * https://www.gnu.org/licenses/agpl-3.0.en.html -// * -// * Use of this file is prohibited except in compliance with the License. Any -// * modifications or derivative works of this file must retain this copyright -// * notice, and modified files must contain a notice indicating that they have -// * been altered from the originals. -// * -// * Covalent is distributed in the hope that it will be useful, but WITHOUT -// * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -// * -// * Relief from the License may be granted by purchasing a commercial license. -// */ +/** + * This file is part of Covalent. + * + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { settingsResults, diff --git a/covalent_ui/webapp/src/redux/commonSlice.js b/covalent_ui/webapp/src/redux/commonSlice.js index bc8cb859f..d35aaf496 100644 --- a/covalent_ui/webapp/src/redux/commonSlice.js +++ b/covalent_ui/webapp/src/redux/commonSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/dashboardSlice.js b/covalent_ui/webapp/src/redux/dashboardSlice.js index 559d37705..df2dadf95 100644 --- a/covalent_ui/webapp/src/redux/dashboardSlice.js +++ b/covalent_ui/webapp/src/redux/dashboardSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/electronSlice.js b/covalent_ui/webapp/src/redux/electronSlice.js index 03a2391e2..140236089 100644 --- a/covalent_ui/webapp/src/redux/electronSlice.js +++ b/covalent_ui/webapp/src/redux/electronSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. - * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' @@ -31,12 +25,16 @@ const initialState = { electronInput: {}, electronError: {}, electronExecutor: {}, + qelectronJobs: [], + qelectronJobOverview: {}, electronDetailsList: { isFetching: false, error: null }, electronResultList: { isFetching: false, error: null }, electronFunctionStringList: { isFetching: false, error: null }, electronInputList: { isFetching: false, error: null }, electronErrorList: { isFetching: false, error: null }, electronExecutorList: { isFetching: false, error: null }, + qelectronJobsList: { isFetching: false, error: null }, + qelectronJobOverviewList: { isFetching: false, error: null }, } export const electronDetails = createAsyncThunk( @@ -75,6 +73,18 @@ export const electronExecutor = createAsyncThunk( api.get(`api/v1/dispatches/${dispatchId}/electron/${electronId}/details/${params}`).catch(thunkAPI.rejectWithValue) ) +export const qelectronJobs = createAsyncThunk( + 'electronResults/qelectronJobs', + ({ dispatchId, electronId, bodyParams }, thunkAPI) => + api.get(`api/v1/dispatches/${dispatchId}/electron/${electronId}/jobs?&sort_by=${bodyParams.sort_by}&sort_direction=${bodyParams.direction}&offset=${bodyParams.offset}`).catch(thunkAPI.rejectWithValue) +) + +export const qelectronJobOverview = createAsyncThunk( + 'electronResults/qelectronJobOverview', + ({ dispatchId, electronId, jobId }, thunkAPI) => + api.get(`api/v1/dispatches/${dispatchId}/electron/${electronId}/jobs/${jobId}`).catch(thunkAPI.rejectWithValue) +) + export const electronSlice = createSlice({ name: 'electronResults', initialState, @@ -169,6 +179,33 @@ export const electronSlice = createSlice({ state.electronExecutorList.error = payload }) + // qelectron Jobs + .addCase(qelectronJobs.fulfilled, (state, { payload }) => { + state.qelectronJobsList.isFetching = false + state.qelectronJobs = payload + }) + .addCase(qelectronJobs.pending, (state) => { + state.qelectronJobsList.isFetching = true + state.qelectronJobsList.error = null + }) + .addCase(qelectronJobs.rejected, (state, { payload }) => { + state.qelectronJobsList.isFetching = false + state.qelectronJobsList.error = payload + }) + + // qelectron Job Overview + .addCase(qelectronJobOverview.fulfilled, (state, { payload }) => { + state.qelectronJobOverviewList.isFetching = false + state.qelectronJobOverview = payload + }) + .addCase(qelectronJobOverview.pending, (state) => { + state.qelectronJobOverviewList.isFetching = true + state.qelectronJobOverviewList.error = null + }) + .addCase(qelectronJobOverview.rejected, (state, { payload }) => { + state.qelectronJobOverviewList.isFetching = false + state.qelectronJobOverviewList.error = payload + }) }, }) diff --git a/covalent_ui/webapp/src/redux/graphSlice.js b/covalent_ui/webapp/src/redux/graphSlice.js index dc79221e7..c811ad5f5 100644 --- a/covalent_ui/webapp/src/redux/graphSlice.js +++ b/covalent_ui/webapp/src/redux/graphSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/latticePreviewSlice.js b/covalent_ui/webapp/src/redux/latticePreviewSlice.js index bed5bfa52..415fab622 100644 --- a/covalent_ui/webapp/src/redux/latticePreviewSlice.js +++ b/covalent_ui/webapp/src/redux/latticePreviewSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/latticeSlice.js b/covalent_ui/webapp/src/redux/latticeSlice.js index cdb6940b5..fe34e8993 100644 --- a/covalent_ui/webapp/src/redux/latticeSlice.js +++ b/covalent_ui/webapp/src/redux/latticeSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/logsSlice.js b/covalent_ui/webapp/src/redux/logsSlice.js index c4f788f34..d9fb4ec27 100644 --- a/covalent_ui/webapp/src/redux/logsSlice.js +++ b/covalent_ui/webapp/src/redux/logsSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/popupSlice.js b/covalent_ui/webapp/src/redux/popupSlice.js index 5f157dd5a..bc1852715 100644 --- a/covalent_ui/webapp/src/redux/popupSlice.js +++ b/covalent_ui/webapp/src/redux/popupSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/reducers.js b/covalent_ui/webapp/src/redux/reducers.js index f4559cea8..8cc2ef5ec 100644 --- a/covalent_ui/webapp/src/redux/reducers.js +++ b/covalent_ui/webapp/src/redux/reducers.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { commonSlice } from './commonSlice' diff --git a/covalent_ui/webapp/src/redux/resultsSlice.js b/covalent_ui/webapp/src/redux/resultsSlice.js index f74c24d71..4ce37dd70 100644 --- a/covalent_ui/webapp/src/redux/resultsSlice.js +++ b/covalent_ui/webapp/src/redux/resultsSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/redux/settingsSlice.js b/covalent_ui/webapp/src/redux/settingsSlice.js index e75e60d7a..3af3ac960 100644 --- a/covalent_ui/webapp/src/redux/settingsSlice.js +++ b/covalent_ui/webapp/src/redux/settingsSlice.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { createSlice, createAsyncThunk } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/redux/store.js b/covalent_ui/webapp/src/redux/store.js index 5f6ecfd0d..932571c1e 100644 --- a/covalent_ui/webapp/src/redux/store.js +++ b/covalent_ui/webapp/src/redux/store.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import { configureStore } from '@reduxjs/toolkit' diff --git a/covalent_ui/webapp/src/setupTests.js b/covalent_ui/webapp/src/setupTests.js index 85fad5091..c9b5fd211 100644 --- a/covalent_ui/webapp/src/setupTests.js +++ b/covalent_ui/webapp/src/setupTests.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ // jest-dom adds custom jest matchers for asserting on DOM nodes. diff --git a/covalent_ui/webapp/src/testHelpers/testUtils.js b/covalent_ui/webapp/src/testHelpers/testUtils.js index 5ed183c73..7d5bedd03 100644 --- a/covalent_ui/webapp/src/testHelpers/testUtils.js +++ b/covalent_ui/webapp/src/testHelpers/testUtils.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' diff --git a/covalent_ui/webapp/src/utils/__tests__/api.test.js b/covalent_ui/webapp/src/utils/__tests__/api.test.js index 2ea5786af..9b738c3f9 100644 --- a/covalent_ui/webapp/src/utils/__tests__/api.test.js +++ b/covalent_ui/webapp/src/utils/__tests__/api.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import axios from 'axios' jest.mock('axios') diff --git a/covalent_ui/webapp/src/utils/__tests__/misc.test.js b/covalent_ui/webapp/src/utils/__tests__/misc.test.js index 530ca6a61..35164768a 100644 --- a/covalent_ui/webapp/src/utils/__tests__/misc.test.js +++ b/covalent_ui/webapp/src/utils/__tests__/misc.test.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import '@testing-library/jest-dom' diff --git a/covalent_ui/webapp/src/utils/api.js b/covalent_ui/webapp/src/utils/api.js index 52dfc1e0c..6528a00c1 100644 --- a/covalent_ui/webapp/src/utils/api.js +++ b/covalent_ui/webapp/src/utils/api.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import axios from 'axios' diff --git a/covalent_ui/webapp/src/utils/constants/settingsConstant.js b/covalent_ui/webapp/src/utils/constants/settingsConstant.js index 635eb3661..a2d1711d5 100644 --- a/covalent_ui/webapp/src/utils/constants/settingsConstant.js +++ b/covalent_ui/webapp/src/utils/constants/settingsConstant.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ export const CONFIG_SECTIONS = { diff --git a/covalent_ui/webapp/src/utils/demo/draw-a.js b/covalent_ui/webapp/src/utils/demo/draw-a.js index 5ec7b1263..b5c828069 100644 --- a/covalent_ui/webapp/src/utils/demo/draw-a.js +++ b/covalent_ui/webapp/src/utils/demo/draw-a.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ const latticePreview = { diff --git a/covalent_ui/webapp/src/utils/demo/result-a.js b/covalent_ui/webapp/src/utils/demo/result-a.js index 7bdeabdeb..69b10a5b1 100644 --- a/covalent_ui/webapp/src/utils/demo/result-a.js +++ b/covalent_ui/webapp/src/utils/demo/result-a.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ const result = { diff --git a/covalent_ui/webapp/src/utils/demo/result-b.js b/covalent_ui/webapp/src/utils/demo/result-b.js index 9a1ac8b02..0dc0cbd55 100644 --- a/covalent_ui/webapp/src/utils/demo/result-b.js +++ b/covalent_ui/webapp/src/utils/demo/result-b.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ const result = { diff --git a/covalent_ui/webapp/src/utils/demo/result-c.js b/covalent_ui/webapp/src/utils/demo/result-c.js index cc087a566..127c67e39 100644 --- a/covalent_ui/webapp/src/utils/demo/result-c.js +++ b/covalent_ui/webapp/src/utils/demo/result-c.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ const result = { diff --git a/covalent_ui/webapp/src/utils/demo/setup.js b/covalent_ui/webapp/src/utils/demo/setup.js index 01572de18..06f003b00 100644 --- a/covalent_ui/webapp/src/utils/demo/setup.js +++ b/covalent_ui/webapp/src/utils/demo/setup.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' diff --git a/covalent_ui/webapp/src/utils/misc.js b/covalent_ui/webapp/src/utils/misc.js index a1670a254..e35c424fc 100644 --- a/covalent_ui/webapp/src/utils/misc.js +++ b/covalent_ui/webapp/src/utils/misc.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import _ from 'lodash' @@ -28,7 +22,7 @@ import { ReactComponent as ActivitySvg } from '../assets/status/pending.svg' import { ReactComponent as CheckSvg } from '../assets/status/checkmark.svg' import { ReactComponent as ErrorSvg } from '../assets/status/error.svg' import { ReactComponent as CancelSvg } from '../assets/status/stop.svg' -import { ReactComponent as LoaderSvg } from '../assets/loader.svg' +import { ReactComponent as LoaderSvg } from '../assets/status/running.svg' import { ReactComponent as FunctionSvg } from '../assets/nodeType/fuction.svg' import { ReactComponent as ParameterSvg } from '../assets/nodeType/parameter.svg' import { ReactComponent as SubLattice } from '../assets/nodeType/sublattice.svg' @@ -49,6 +43,8 @@ import { ReactComponent as CompletingSvg } from '../assets/status/completing.svg import { ReactComponent as RunningTopBarSvg } from '../assets/sublattice/runningTopBar.svg' import { ReactComponent as FailedTopBarSvg } from '../assets/sublattice/failedTopBar.svg' import { ReactComponent as SuccessTopBarSvg } from '../assets/sublattice/successTopBar.svg' +import './style.css' + export const secondsToHms = (ms) => { let time = '' const sec = Math.floor(ms / 1000) @@ -249,9 +245,7 @@ export const statusIcon = (status) => { case 'RUNNING': case 'STARTING': return ( - - - + ) case 'NEW_OBJECT': case 'PENDING': @@ -291,7 +285,7 @@ export const statusIcon = (status) => { case 'PROVISION_FAILED': case 'DEPROVISION_FAILED': return ( - + ) @@ -444,3 +438,22 @@ export const getLocalStartTime = (time) => { let startTimeToLocal = new Date((time = time + 'Z')) return startTimeToLocal.toISOString() } + +export const formatQElectronTime = (sec) => { + let time = '' + const days = Math.floor(sec / (3600 * 24)) + const hours = Math.floor(sec / 3600) + const minutes = ('0' + (Math.floor(sec / 60) % 60)).slice(-2) + if (sec > 0 && sec < 60) { + time = '< 1min' + } else if (sec > 60 && sec < 3600) { + time = `${Math.round(minutes)}m` + } else if (sec > 3600 && sec < 86400) { + time = `${Math.round(hours)}h ${Math.round(minutes)}m` + } else if (sec > 86400 && sec < 172800) { + time = '> 1 day' + } else if (sec > 172800) { + time = `${Math.round(days)} days` + } + return time +} diff --git a/covalent_ui/webapp/src/utils/socket.js b/covalent_ui/webapp/src/utils/socket.js index 809bf170a..0b9c2adbf 100644 --- a/covalent_ui/webapp/src/utils/socket.js +++ b/covalent_ui/webapp/src/utils/socket.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import io from 'socket.io-client' diff --git a/covalent_ui/webapp/src/utils/style.css b/covalent_ui/webapp/src/utils/style.css new file mode 100644 index 000000000..5d959bf2c --- /dev/null +++ b/covalent_ui/webapp/src/utils/style.css @@ -0,0 +1,13 @@ +@keyframes rotate { + from { + transform: rotateZ(-360deg); + } + to { + transform: rotateZ(360deg); + } +} + +.circleRunningStatus { + animation: rotate 7s linear; + animation-iteration-count: infinite; +} diff --git a/covalent_ui/webapp/src/utils/theme.js b/covalent_ui/webapp/src/utils/theme.js index fcb05cede..4b4ad9387 100644 --- a/covalent_ui/webapp/src/utils/theme.js +++ b/covalent_ui/webapp/src/utils/theme.js @@ -1,23 +1,17 @@ /** - * Copyright 2021 Agnostiq Inc. - * * This file is part of Covalent. * - * Licensed under the GNU Affero General Public License 3.0 (the "License"). - * A copy of the License may be obtained with this software package or at - * - * https://www.gnu.org/licenses/agpl-3.0.en.html - * - * Use of this file is prohibited except in compliance with the License. Any - * modifications or derivative works of this file must retain this copyright - * notice, and modified files must contain a notice indicating that they have - * been altered from the originals. + * Licensed under the Apache License 2.0 (the "License"). A copy of the + * License may be obtained with this software package or at * - * Covalent is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. + * https://www.apache.org/licenses/LICENSE-2.0 * - * Relief from the License may be granted by purchasing a commercial license. + * Use of this file is prohibited except in compliance with the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ import React from 'react' @@ -33,6 +27,9 @@ const defaultTheme = createTheme({ typography: { fontFamily: '"DM Sans", "Helvetica", "Arial", sans-serif', logsFont: '"Inter", "Arial", sans-serif', + sidebarh1: '1rem', + sidebarh2: '0.875rem', + sidebarh3: '0.75rem', }, palette: { mode: 'dark', @@ -43,6 +40,8 @@ const defaultTheme = createTheme({ blue04: '#6473FF', white: '#ffff', highlightBlue: '#1B2632', + grey: '#AEB6FF4D', + blue02: '#323267', }, secondary: { light: '#DAC3FF', @@ -51,6 +50,7 @@ const defaultTheme = createTheme({ }, background: { default: '#08081A', + defaultLight: '#08081A66', paper: '#1C1C46', coveBlack01: '#464660', coveBlack02: '#303067', @@ -58,7 +58,10 @@ const defaultTheme = createTheme({ darkblackbg: '#101820', buttonBg: '#10102C', executorBg: '#1E1E2E', - outRunBg:'#0B0B11' + outRunBg: '#0B0B11', + qelectronbg: '#30306780', + qelectronDrawerbg: '#1C1C46CC', + qListBg: '#08081A66', }, error: { main: '#FF6464', diff --git a/doc/.gitignore b/doc/.gitignore index 9cac819c7..a7f5ecdad 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # XML files *.xml diff --git a/doc/Makefile b/doc/Makefile index 60a830a71..cf81fe099 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Minimal makefile for Sphinx documentation diff --git a/doc/generate_docs.py b/doc/generate_docs.py index 0bed25345..a5e404e68 100644 --- a/doc/generate_docs.py +++ b/doc/generate_docs.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import subprocess diff --git a/doc/requirements.txt b/doc/requirements.txt index dae96eee1..02b9d5eb6 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,3 +1,4 @@ +autodoc-pydantic>=1.9.0 autodocsumm==0.2.6 docutils furo>=2022.6.21 diff --git a/doc/source/api/api.rst b/doc/source/api/api.rst index a40f907a3..2a603c728 100644 --- a/doc/source/api/api.rst +++ b/doc/source/api/api.rst @@ -4,7 +4,203 @@ Covalent API ############ -This is the component reference for the Covalent Python API. +The following API documentation describes how to use Covalent. + +- :ref:`electrons_api` and :ref:`lattices_api` are used for constructing workflows +- :ref:`qelectrons_api` are used to customize and track quantum circuit execution +- :ref:`qclusters_api` are used to distribute Quantum Electrons across multiple quantum backends. +- :ref:`local_executor` is used to execute electrons locally +- :ref:`file_transfer` is used to queue remote or local file transfer operations prior or post electron execution. +- :ref:`file_transfer_strategies` are used to perform download/upload/copy operations over various protocols. +- :ref:`triggers` are used to execute a workflow triggered by a specific type of event +- :ref:`dask_executor` is used to execute electrons in a Dask cluster +- :ref:`deps` are used to specify any kind of electron dependency +- :ref:`deps_pip` are used to specify PyPI packages that are required to run an electron +- :ref:`deps_bash` are used to specify optional pre-execution shell commands for an electron +- :ref:`deps_call` are used to specify functions or dependencies that are called in an electron's execution environment +- :ref:`results_interface` is used for collecting and manipulating results +- :ref:`dispatcher_interface` is used for dispatching workflows and stopping triggered dispatches +- The :ref:`dispatcher_server_api` is used for interfacing with the Covalent server + +.. _electrons_api: + +Electron +""""""""""""""""""""""""""" +.. autodecorator:: electron + + +.. autoclass:: covalent._workflow.electron.Electron + :members: + + +---------------------------------------------------------------- + +.. _lattices_api: + +Lattice +""""""""""""""""""""""""""" + +.. autodecorator:: lattice + + +.. autoclass:: covalent._workflow.lattice.Lattice + :members: + +---------------------------------------------------------------- + +.. _qelectrons_api: + +Quantum Electrons +""""""""""""""""""""""""""" + +.. autodecorator:: covalent.qelectron + + +---------------------------------------------------------------- + +.. _qclusters_api: + +Quantum Clusters +""""""""""""""""""""""""""" + +.. autopydantic_model:: covalent.executor.QCluster + + +---------------------------------------------------------------- + +.. _local_executor: + +Local Executor +""""""""""""""""""""""""""" + +Executing tasks (electrons) directly on the local machine + +.. autoclass:: covalent.executor.executor_plugins.local.LocalExecutor + :members: + :inherited-members: + +---------------------------------------------------------------- + +.. _file_transfer: + +File Transfer +""""""""""""""""""""""""""" + +File Transfer from (source) and to (destination) local or remote files prior/post electron execution. Instances are provided to `files` keyword argument in an electron decorator. + +.. autoclass:: covalent._file_transfer.file.File + :members: + :inherited-members: + +.. autoclass:: covalent._file_transfer.folder.Folder + :members: + :inherited-members: + +.. autoclass:: covalent._file_transfer.file_transfer.FileTransfer + :members: + :inherited-members: + +.. autofunction:: covalent._file_transfer.file_transfer.TransferFromRemote + +.. autofunction:: covalent._file_transfer.file_transfer.TransferToRemote + +---------------------------------------------------------------- + +.. _file_transfer_strategies: + +File Transfer Strategies +""""""""""""""""""""""""""" + +A set of classes with a shared interface to perform copy, download, and upload operations given two (source & destination) File objects that support various protocols. + + +.. autoclass:: covalent._file_transfer.strategies.transfer_strategy_base.FileTransferStrategy + :members: + :inherited-members: + +.. autoclass:: covalent._file_transfer.strategies.rsync_strategy.Rsync + :members: + :inherited-members: + +---------------------------------------------------------------- + +.. _triggers: + +Triggers +""""""""" + +Execute a workflow triggered by a specific type of event + +.. automodule:: covalent.triggers + :imported-members: + :members: + :undoc-members: + :show-inheritance: + +---------------------------------------------------------------- + +.. _dask_executor: + +Dask Executor +""""""""""""""""""""""""""" + +Executing tasks (electrons) in a Dask cluster + +.. autoclass:: covalent.executor.executor_plugins.dask.DaskExecutor + :members: + :inherited-members: + +---------------------------------------------------------------- + +.. _deps: + +Dependencies +"""""""""""""" + +Generic dependencies for an electron + +.. autoclass:: covalent._workflow.deps.Deps + :members: + +---------------------------------------------------------------- + +.. _deps_pip: + +Pip Dependencies +"""""""""""""""""" + +PyPI packages to be installed before executing an electron + +.. autoclass:: covalent._workflow.depspip.DepsPip + :members: + +---------------------------------------------------------------- + +.. _deps_bash: + +Bash Dependencies +"""""""""""""""""" + +Shell commands to run before an electron + +.. autoclass:: covalent._workflow.depsbash.DepsBash + :members: + +---------------------------------------------------------------- + +.. _deps_call: + +Call Dependencies +"""""""""""""""""" + +Functions, shell commands, PyPI packages, and other types of dependencies to be called in an electron's execution environment + +.. autoclass:: covalent._workflow.depscall.DepsCall + :members: + +---------------------------------------------------------------- + +.. _dispatcher_interface: Index ##### diff --git a/doc/source/api/executors/braketqubit.rst b/doc/source/api/executors/braketqubit.rst new file mode 100644 index 000000000..58c0e2201 --- /dev/null +++ b/doc/source/api/executors/braketqubit.rst @@ -0,0 +1,122 @@ + +AWS Braket Qubit Executor +""""""""""""" + +This quantum executor accesses quantum resources operating under the qubit model as +made available through AWS (:code:`"braket.aws.qubit"`). + +It utilizes the Pennylane plugin found `here `_. +:code:`BraketQubitExecutor` introduces thread-based parallelism for circuit execution on the :code:`"braket.aws.qubit"` device. + +=============== +1. Installation +=============== + +:code:`BraketQubitExecutor` is not included in base Covalent. +To use it, you will need to install the Covalent with: + +.. code:: console + + pip install covalent[braket] + +and have valid AWS credentials as specified `here `_. + +================ +2. Usage Example +================ + +Using :code:`BraketQubitExecutor` requires specifying an AWS Quantum backend through the :code:`device_arn` argument. + +.. code:: python + + # Statevector simulator + sv1 = ct.executor.BraketQubitExecutor( + device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", + shots=1024, + s3_destination_folder=(), + ) + # Tensor network simulator + tn1 = ct.executor.BraketQubitExecutor( + device_arn="arn:aws:braket:::device/quantum-simulator/amazon/tn1", + shots=1024, + s3_destination_folder=(), + ) + + @ct.qelectron(executors=[sv1, tn1]) + @qml.qnode(qml.device("default.qubit", wires=2, shots=1000)) + def circuit(x): + qml.IQPEmbedding(features=x, wires=[0, 1]) + qml.Hadamard(wires=1) + return [qml.expval(qml.PauliZ(0)), qml.expval(qml.PauliZ(1))] + +As a QElectron, the circuit can be called either normally or asynchronously using :code:`circuit.run_later()`. With the default :code:`"cyclic"` selector, circuit calls will `alternate` between the executors, :code:`[sv1, tn1]`. + +Synchronous example output is below + +.. code:: python + + >>> print(circuit([0.5, 0.1])) # alternate between sv1 and tn1 + + [array(0.008), array(0.996)] + + +and asynchronously: + +.. code:: python + + >>> x = [0.6, -1.57] + + >>> # Queue jobs for all three circuit calls simultaneously on AWS Braket. + >>> # Uses same executor order as above (sv1, tn1, ...). + >>> futs = [circuit.run_later(x) for _ in range(3)] + + >>> # Wait for all circuits to finish. + >>> [fut.result() for fut in futs] + + [[array(-0.02), array(0.01)], + [array(0.014), array(-0.022)], + [array(-0.074), array(0.05)]] + +============================ +3. Overview of Configuration +============================ + +The :code:`BraketQubitExecutor` configuration is found under :code:`[qelectron.BraketQubitExecutor]` in the `Covalent configuration file `_. + +.. list-table:: + :widths: 2 1 2 3 + :header-rows: 1 + + * - Config Key + - Is Required + - Default + - Description + * - device_arn + - Yes + - "" (blank string) + - A unique identifier used to represent and reference AWS resources. Stands for "Amazon Resource Name". + * - poll_timeout_seconds + - No + - 432000 + - Number of seconds before a poll to remote device is considered timed-out. + * - poll_interval_seconds + - No + - 1 + - Number of seconds between polling of a remote device's status. + * - max_connections + - No + - 100 + - the maximum number of connections in the :code:`Boto3` connection pool. + * - max_retries + - No + - 3 + - The maximum number of times a job will be re-sent if it failed. +=========================== +4. Required Cloud Resources +=========================== + +Users must acquire AWS credentials and make them discoverable following the instructions `here `_. + +----- + +.. autopydantic_model:: covalent.executor.BraketQubitExecutor diff --git a/doc/source/api/executors/ibmq.rst b/doc/source/api/executors/ibmq.rst new file mode 100644 index 000000000..52ead7cb6 --- /dev/null +++ b/doc/source/api/executors/ibmq.rst @@ -0,0 +1,122 @@ + +IBMQ Executor +""""""""""""" + +This quantum executor accesses IBM Quantum backends through Pennylane's :code:`"qiskit.ibmq"` `device `_. :code:`IBMQExecutor` introduces thread-based parallelism for circuit execution on the `"qiskit.ibmq"` device. Note that the more efficient :code:`QiskitExecutor` is recommended over :code:`IBMQExecutor` for production use. + +=============== +1. Installation +=============== + +The IBMQ executor is not included with base Covalent. To install it, run + +.. code:: console + + pip install covalent[qiskit] + +================ +2. Usage Example +================ + +Using `IBMQExecutor` requires specifying an IBM Quantum backend through the :code:`backend` argument. The :code:`ibmqx_token` is required if not specified in the configuration (see next section). + +.. code:: python + + import covalent as ct + import pennylane as qml + + # IBMQ executor that uses "ibmq_qasm_simulator" (default). + ibmq_qasm = ct.executor.IBMQExecutor() + + # IBMQ executor that uses the "ibmq_lima" QPU. + ibmq_lima = ct.executor.IBMQExecutor( + backend="ibmq_lima", + ibmqx_token="", + ) + + @ct.qelectron(executors=[ibmq_qasm, ibmq_lima]) + @qml.qnode(qml.device("default.qubit", wires=2, shots=1024), interface="jax") + def circuit(x): + qml.IQPEmbedding(features=x, wires=[0, 1]) + qml.Hadamard(wires=1) + return qml.probs(wires=range(2)) + +As a QElectron, the circuit can be called either normally or asynchronously using :code:`circuit.run_later()`. With the default :code:`"cyclic"` selector, circuit calls will `alternate` between the executors, :code:`[ibmq_qasm, ibmq_lima]`. + +A synchronous example is shown below. + +.. code:: python + + >>> print(circuit([0.5, 0.1])) # ibmq_qasm_simulator + + DeviceArray([0.51660156, 0.00097656, 0.4814453 , 0.00097656], dtype=float32) + + >>> print(circuit([0.5, 0.1])) # ibmq_lima + + DeviceArray([0.5048828 , 0.00195312, 0.49316406, 0. ], dtype=float32) + + >>> print(circuit([0.5, 0.1])) # ibmq_qasm_simulator (again) + + DeviceArray([0.5097656 , 0.00292969, 0.4873047 , 0. ], dtype=float32) + +Doing this asynchronously: + +.. code:: python + + >>> x = [0.6, -1.57] + + >>> # Queue jobs for all three circuit calls simultaneously on IBM Quantum. + >>> # Uses same executor order as above (qasm, lima, qasm, ...). + >>> futs = [circuit.run_later(x) for _ in range(3)] + + >>> # Wait for all circuits to finish. + >>> [fut.result() for fut in futs] + + [DeviceArray([0.51660156, 0.00097656, 0.4814453 , 0.00097656], dtype=float32), + DeviceArray([0.5048828 , 0.00195312, 0.49316406, 0. ], dtype=float32), + DeviceArray([0.5097656 , 0.00292969, 0.4873047 , 0. ], dtype=float32)] + +============================ +3. Overview of Configuration +============================ + +The :code:`IBMQExecutor` configuration is found under :code:`[qelectron.IBMQExecutor]` in the `Covalent configuration file `_. + +.. list-table:: + :widths: 2 1 2 3 + :header-rows: 1 + + * - Config Key + - Is Required + - Default + - Description + * - backend + - Yes + - ibm_qasm_simulator + - The name of an IBM Quantum system or simulator. + * - ibmqx_token + - Yes/No + - + - An access token obtained from IBM Quantum. Required for non-local execution. + * - hub + - No + - ibm-q + - Hub name for IBM Quantum. + * - group + - No + - open + - Group name for IBM Quantum. + * - project + - No + - main + - Project name for IBM Quantum. + +=========================== +4. Required Cloud Resources +=========================== + +Users must acquire an access token from the `IBM Quantum Experience `_ in order to use IBM systems and simulators. + +----- + +.. autopydantic_model:: covalent.executor.IBMQExecutor diff --git a/doc/source/api/executors/index.rst b/doc/source/api/executors/index.rst index aadaa3a43..d8e90e123 100644 --- a/doc/source/api/executors/index.rst +++ b/doc/source/api/executors/index.rst @@ -39,3 +39,18 @@ The way in which workflows and tasks interface with the hardware is through exec basesync asyncbase + + +Quantum Executors +================= + +Quantum executors are special executors designed for quantum circuits. Together with quantum electrons, they allow quantum circuits to run on various local and/or cloud backends. + +.. toctree:: + :maxdepth: 1 + + qiskit + ibmq + braketqubit + localbraketqubit + simulator diff --git a/doc/source/api/executors/localbraketqubit.rst b/doc/source/api/executors/localbraketqubit.rst new file mode 100644 index 000000000..5fefc10d1 --- /dev/null +++ b/doc/source/api/executors/localbraketqubit.rst @@ -0,0 +1,92 @@ + +Local Braket Qubit Executor +""""""""""""" + +This quantum executor accesses the local Braket quantum circuit simulator (:code:`"braket.local.qubit"`). + +It utilizes the Pennylane plugin found `here `_. +:code:`LocalBraketQubitExecutor` introduces thread-based parallelism for circuit execution on the :code:`"braket.local.qubit"` device. + +=============== +1. Installation +=============== + +:code:`LocalBraketQubitExecutor` is not included in base Covalent. +To use it, you will need to install the Covalent with: + +.. code:: console + + pip install covalent[braket] + +================ +2. Usage Example +================ + +Using :code:`LocalBraketQubitExecutor` is simple: + +.. code:: python + + # Local simulator + executor = ct.executor.LocalBraketQubitExecutor( + device="default", + shots=1024, + num_threads=2 + ) + + @ct.qelectron(executors=executor) + @qml.qnode(qml.device("default.qubit", wires=2, shots=1024)) + def circuit(x): + qml.IQPEmbedding(features=x, wires=[0, 1]) + qml.Hadamard(wires=1) + return [qml.expval(qml.PauliZ(0)), qml.expval(qml.PauliZ(1))] + +As a QElectron, the circuit can be called either normally or asynchronously using :code:`circuit.run_later()`. + +Synchronous example output is below + +.. code:: python + + >>> print(circuit([0.5, 0.1])) + + [array(0.008), array(0.996)] + + +and asynchronously: + +.. code:: python + + >>> x = [0.6, -1.57] + + >>> # Queue jobs for all three circuit calls simultaneously on. + >>> futs = [circuit.run_later(x) for _ in range(3)] + + >>> # Wait for all circuits to finish. + >>> [fut.result() for fut in futs] + + [[array(-0.02), array(0.01)], + [array(0.014), array(-0.022)], + [array(-0.074), array(0.05)]] + +============================ +3. Overview of Configuration +============================ + +The :code:`LocalBraketQubitExecutor` configuration is found under :code:`[qelectron.LocalBraketQubitExecutor]` in the `Covalent configuration file `_. + +.. list-table:: + :widths: 2 1 2 3 + :header-rows: 1 + + * - Config Key + - Is Required + - Default + - Description + * - backend + - No + - "default" + - The type of simulator backend to be used. Choices are :code:`"default"`, :code:`"braket_sv"`, :code:`"braket_dm"` and :code:`"braket_ahs"`. + + +----- + +.. autopydantic_model:: covalent.executor.LocalBraketQubitExecutor diff --git a/doc/source/api/executors/qiskit.rst b/doc/source/api/executors/qiskit.rst new file mode 100644 index 000000000..e7b8eaece --- /dev/null +++ b/doc/source/api/executors/qiskit.rst @@ -0,0 +1,170 @@ +Qiskit Runtime Executor +""""""""""""""""""""""" + +This quantum executor provides efficient access to IBM Quantum backends by using runtime sessions for submitting jobs. :code:`QiskitExecutor` uses asyncio for scalable parallelization. + +=============== +1. Installation +=============== + +The Qiskit Runtime executor is not included with base Covalent. To install it, run + +.. code:: console + + pip install covalent[qiskit] + +================ +2. Usage Example +================ + +Typical usage involves specifying a runtime primitive via the :code:`device` argument and specifying an IBM backend via the :code:`backend` argument. An access token from IBM Quantum can be provided explicitly as :code:`ibmqx_token` or in the `Covalent configuration file `_. + +The following example shows several :code:`QiskitExecutor` instances being utilized as a Quantum Cluster. + +.. code:: python + + import covalent as ct + import pennylane as qml + + # Default local qiskit executor. + qiskit_local = ct.executor.QiskitExecutor() + + # Runtime qiskit executor that uses the "ibmq_qasm_simulator" backend. + qiskit_qasm = ct.executor.QiskitExecutor( + device="sampler", + backend="ibmq_qasm_simulator", + ibmqx_token="", # required if not in config file + ) + + # Runtime qiskit executor that uses the "ibmq_lima" QPU. + qiskit_lima = ct.executor.QiskitExecutor( + device="sampler", + backend="ibmq_lima", + ibmqx_token="", + instance="my-hub/my-group/my-project", + + # Backend settings (optional) + options={ + "optimization_level": 2, + "resilience_level": 1, + # ... + } + ) + + # Create quantum electron that uses a cluster of 3 qiskit executors. + @ct.qelectron(executors=[qiskit_local, qiskit_qasm, qiskit_lima]) + @qml.qnode(qml.device("default.qubit", wires=2, shots=1024), interface="tf") + def circuit(x): + qml.IQPEmbedding(features=x, wires=[0, 1]) + qml.Hadamard(wires=1) + return qml.probs(wires=range(2)) + + +One converted to a QElectron, the circuit can be called normally or asynchronously via :code:`circuit.run_later()`. Since the example uses a quantum cluster with the default :code:`"cyclic"` selector, circuit calls will repeatedly cycle through :code:`executors` in order. + +A synchronous example is shown below. + +.. code:: python + + >>> circuit([0.6, -1.57]) # local + + tf.Tensor([0.0546875 0.42773438 0.46777344 0.04980469], shape=(4,), dtype=float64) + + >>> circuit([0.6, -1.57]) # ibmq_qasm_simulator + + tf.Tensor([0.04589844 0.45507812 0.45898438 0.04003906], shape=(4,), dtype=float64) + + >>> circuit([0.6, -1.57]) # ibmq_lima + + tf.Tensor([0.04199219 0.44628906 0.46679688 0.04492188], shape=(4,), dtype=float64) + + >>> circuit([0.6, -1.57]) # local (again) + + tf.Tensor([0.04394531 0.4609375 0.43945312 0.05566406], shape=(4,), dtype=float64) + +If instead doing this asynchronously: + +.. code:: python + + >>> x = [0.6, -1.57] + + >>> # Queue jobs for all four circuit calls simultaneously on IBM Quantum. + >>> # Uses same executor order as above (local, qasm, lima, local, ...). + >>> futs = [circuit.run_later(x) for _ in range(4)] + + >>> # Wait for all circuits to finish. + >>> [fut.result() for fut in futs] + + [tf.Tensor([0.0546875 0.42773438 0.46777344 0.04980469], shape=(4,), dtype=float64), + tf.Tensor([0.04589844 0.45507812 0.45898438 0.04003906], shape=(4,), dtype=float64), + tf.Tensor([0.04199219 0.44628906 0.46679688 0.04492188], shape=(4,), dtype=float64), + tf.Tensor([0.04394531 0.4609375 0.43945312 0.05566406], shape=(4,), dtype=float64)] + + +============================ +3. Overview of Configuration +============================ + +The :code:`QiskitExecutor` configuration is found under :code:`[qelectron.QiskitExecutor]` in the `Covalent configuration file `_. + +.. list-table:: + :widths: 2 1 2 3 + :header-rows: 1 + + * - Config Key + - Is Required + - Default + - Description + * - device + - Yes + - local_sampler + - The qiskit (e.g. :code:`"local_sampler"`) or qiskit runtime (e.g. :code:`"sampler"`) primitive used for running circuits on an IBM backend. + * - backend + - Yes + - ibm_qasm_simulator + - The name of an IBM Quantum system or simulator. + * - ibmqx_token + - Yes/No + - + - An access token obtained from IBM Quantum. Required for non-local execution. + * - hub + - No + - ibm-q + - Hub name for IBM Quantum. + * - group + - No + - open + - Group name for IBM Quantum. + * - project + - No + - main + - Project name for IBM Quantum. + +The following backend settings are also set by default under :code:`[qelectron.QiskitExecutor.options]`. These represent maximum optimization/resilience levels for the :code:`Sampler` primitive. Users can append additional settings to this configuration or specify them directly when instantiating a :code:`QiskitExecutor`. See the `Qiskit Runtime Options `_ page for a complete list of valid fields. + +.. list-table:: + :widths: 2 1 2 3 + :header-rows: 1 + + * - Config Key + - Is Required + - Default + - Description + * - optimization_level + - No + - 3 + - How much optimization to perform on the circuits. + * - resilience_level + - No + - 1 + - How much resilience to build against errors. + +=========================== +4. Required Cloud Resources +=========================== + +In order to access IBM backends, users must acquire an access token from IBM Quantum. This can be done by creating a free account on the `IBM Quantum Experience `_. + +----- + +.. autopydantic_model:: covalent.executor.QiskitExecutor diff --git a/doc/source/api/executors/simulator.rst b/doc/source/api/executors/simulator.rst new file mode 100644 index 000000000..5905d6a3f --- /dev/null +++ b/doc/source/api/executors/simulator.rst @@ -0,0 +1,56 @@ +Simulator +""""""""" + +This quantum executor introduces thread- or process-based parallelism to Pennylane circuits that utilize simulation-based devices (like :code:`"default.qubit"` or :code:`"lightning.qubit"`). + +=============== +1. Installation +=============== + +No additional installation is required. + +================ +2. Usage Example +================ + +A thread-based :code:`Simulator` is the default quantum executor for QElectrons. + +.. code:: python + + import covalent as ct + import pennylane as qml + + @ct.qelectron + @qml.qnode(qml.device("lightning.qubit", wires=2), interface="torch") + def circuit(x): + qml.IQPEmbedding(features=x, wires=[0, 1]) + qml.Hadamard(wires=1) + return qml.probs(wires=range(2)) + +Once converted to a QElectron, the circuit can be called either normally or asynchronously via :code:`circuit.run_later()`. + +A synchronous example is show below. + +.. code:: python + + >>> circuit([1.3, -0.7]), circuit([1.3, -0.7]) + + (tensor([0.3169, 0.3169, 0.1831, 0.1831], dtype=torch.float64), + tensor([0.3169, 0.3169, 0.1831, 0.1831], dtype=torch.float64)) + +Alternatively, doing this asynchronously: + +.. code:: python + + >>> # Use separate threads to run two circuits simultaneously. + >>> futs = [circuit.run_later([1.3, -0.7]) for _ in range(2)] + + # Wait for all circuits to finish. + >>> [fut.result() for fut in futs] + + [tensor([0.3169, 0.3169, 0.1831, 0.1831], dtype=torch.float64), + tensor([0.3169, 0.3169, 0.1831, 0.1831], dtype=torch.float64)] + +----- + +.. autopydantic_model:: covalent.executor.Simulator diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index 10f908eda..71f0d0155 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -1,4 +1,49 @@ .. currentmodule:: covalent +############ +Covalent API +############ + +.. toctree:: + :maxdepth: 1 + :hidden: + :caption: Basics: + + covalent + cli + electrons + lattice + dispatcher + results + leptons + qelectrons + qclusters + executors/index + deps + data_transfers + triggers + config + cancel + +The following API documentation describes how to use Covalent. + +- :ref:`electrons_api` and :ref:`lattices_api` are used for constructing workflows +- :ref:`qelectrons_api` are used to customize and track quantum circuit execution +- :ref:`qclusters_api` are used to distribute Quantum Electrons across multiple quantum backends. +- :ref:`local_executor` is used to execute electrons locally +- :ref:`file_transfer` is used to queue remote or local file transfer operations prior or post electron execution. +- :ref:`file_transfer_strategies` are used to perform download/upload/copy operations over various protocols. +- :ref:`dask_executor` is used to execute electrons in a Dask cluster +- :ref:`triggers` are used to execute a workflow triggered by a specific type of event +- :ref:`deps` are used to specify any kind of electron dependency +- :ref:`deps_pip` are used to specify PyPI packages that are required to run an electron +- :ref:`deps_bash` are used to specify optional pre-execution shell commands for an electron +- :ref:`deps_call` are used to specify functions or dependencies that are called in an electron's execution environment +- :ref:`results_interface` is used for collecting and manipulating results +- :ref:`dispatcher_interface` is used for dispatching workflows +- The :ref:`dispatcher_server_api` is used for interfacing with the Covalent server +- The :ref:`cancel` API is used for canceling dispatches and individual tasks within a workflow + + ################## Covalent API Index ################## diff --git a/doc/source/api/qclusters.rst b/doc/source/api/qclusters.rst new file mode 100644 index 000000000..3a866c3d5 --- /dev/null +++ b/doc/source/api/qclusters.rst @@ -0,0 +1,6 @@ +.. _qclusters_api: + +Quantum Clusters +""""""""""""""""""""""""""" + +.. autopydantic_model:: covalent.executor.QCluster diff --git a/doc/source/api/qelectrons.rst b/doc/source/api/qelectrons.rst new file mode 100644 index 000000000..c8e058958 --- /dev/null +++ b/doc/source/api/qelectrons.rst @@ -0,0 +1,6 @@ +.. _qelectrons_api: + +Quantum Electrons +""""""""""""""""""""""""""" + +.. autodecorator:: covalent.qelectron diff --git a/doc/source/conf.py b/doc/source/conf.py index 66dad6130..aaf38dc77 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Configuration file for the Sphinx documentation builder.""" @@ -47,13 +43,13 @@ "sphinx_design", "autodocsumm", "nbsphinx", - "sphinx_autodoc_typehints", "sphinx-prompt", "sphinx_inline_tabs", "sphinx_execute_code", "sphinx_click.ext", "sphinx_autodoc_typehints", "myst_parser", + "sphinxcontrib.autodoc_pydantic", ] # Sphinx variables @@ -102,3 +98,8 @@ "deflist", ] myst_heading_anchors = 3 + + +# Options for Pydantic models +autodoc_pydantic_model_show_field_summary = False +autodoc_pydantic_model_show_validator_summary = False diff --git a/doc/source/extensions/sphinx_execute_code.py b/doc/source/extensions/sphinx_execute_code.py index 80864a657..81dfb226f 100644 --- a/doc/source/extensions/sphinx_execute_code.py +++ b/doc/source/extensions/sphinx_execute_code.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ sphinx-execute-code module for execute_code directive diff --git a/doc/source/how_to/coding/test_module.py b/doc/source/how_to/coding/test_module.py index 1c262b109..a05181ed9 100644 --- a/doc/source/how_to/coding/test_module.py +++ b/doc/source/how_to/coding/test_module.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. def entrypoint(x: int, y: int) -> int: diff --git a/doc/source/how_to/execution/custom_executors/__init__.py b/doc/source/how_to/execution/custom_executors/__init__.py index 1fd587835..f652c5b52 100644 --- a/doc/source/how_to/execution/custom_executors/__init__.py +++ b/doc/source/how_to/execution/custom_executors/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .timing_plugin import TimingExecutor diff --git a/doc/source/how_to/execution/custom_executors/timing_plugin.py b/doc/source/how_to/execution/custom_executors/timing_plugin.py index 8cfcc076b..9272e5782 100644 --- a/doc/source/how_to/execution/custom_executors/timing_plugin.py +++ b/doc/source/how_to/execution/custom_executors/timing_plugin.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Timing executor plugin for Covalent.""" diff --git a/doc/source/index.rst b/doc/source/index.rst index 24c060e1d..509992ebb 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -19,7 +19,7 @@ COVALENT DOCUMENTATION
Downloads per Month Badge - AGPL License Badge + Apache License Badge Latest Release Badge Supported Platforms Badge
diff --git a/doc/source/plugins.rst b/doc/source/plugins.rst index 5136424a2..28be2c9cd 100644 --- a/doc/source/plugins.rst +++ b/doc/source/plugins.rst @@ -21,3 +21,12 @@ Covalent offers various plugins, starting with executor plugins. Executors are u api/executors/awsbraket.rst api/executors/azurebatch.rst api/executors/gcpbatch.rst + +.. toctree:: + :maxdepth: 1 + :caption: Quantum Executor Plugins + + api/executors/qiskit.rst + api/executors/ibmq.rst + api/executors/braketqubit.rst + api/executors/localbraketqubit.rst diff --git a/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/diagram.png b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/diagram.png new file mode 100644 index 000000000..7edf57add Binary files /dev/null and b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/diagram.png differ diff --git a/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/streamlit_covalent_imagegen.gif b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/streamlit_covalent_imagegen.gif new file mode 100644 index 000000000..4a1cb2fa4 Binary files /dev/null and b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/streamlit_covalent_imagegen.gif differ diff --git a/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/workflow.gif b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/workflow.gif new file mode 100644 index 000000000..dc53206fc Binary files /dev/null and b/doc/source/tutorials/0_ClassicalMachineLearning/genai/assets/workflow.gif differ diff --git a/doc/source/tutorials/0_ClassicalMachineLearning/genai/requirements.txt b/doc/source/tutorials/0_ClassicalMachineLearning/genai/requirements.txt new file mode 100644 index 000000000..7dca3bbee --- /dev/null +++ b/doc/source/tutorials/0_ClassicalMachineLearning/genai/requirements.txt @@ -0,0 +1,13 @@ +accelerate==0.21.0 +bs4==0.0.1 +covalent-azurebatch-plugin==0.12.0 +diffusers==0.19.3 +emoji==2.8.0 +fastapi==0.103.1 +Pillow==9.5.0 +sentencepiece==0.1.99 +streamlit==1.25.0 +torch==2.0.1 +transformers==4.31.0 +uvicorn==0.18.3 +xformers==0.0.21 diff --git a/doc/source/tutorials/0_ClassicalMachineLearning/genai/source.ipynb b/doc/source/tutorials/0_ClassicalMachineLearning/genai/source.ipynb new file mode 100644 index 000000000..85d9cc184 --- /dev/null +++ b/doc/source/tutorials/0_ClassicalMachineLearning/genai/source.ipynb @@ -0,0 +1,919 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2238f6dc-4462-4c86-8515-4d5cb6da17e7", + "metadata": {}, + "source": [ + "# Building Scalable API Backends with Covalent for LLM and Generative AI Applications\n", + "\n", + "In this tutorial, we'll delve into the intricacies of constructing scalable API backends for Large Language Models (LLMs) and Generative AI applications. We aim to facilitate seamless collaboration between two cornerstone roles in contemporary machine learning projects: **researchers**, who innovate and experiment with models, and **engineers**, tasked with transforming these models into production-grade applications.\n", + "\n", + "Navigating the deployment of high-compute API endpoints, particularly for Generative AI and LLMs, often presents a myriad of challenges. From juggling multiple cloud resources to managing operational overheads and switching between disparate development environments, the endeavor can quickly escalate into a complex ordeal. This tutorial is designed to guide you through these hurdles using [Covalent](https://www.covalent.xyz/), a Pythonic workflow orchestration platform.\n", + "\n", + "### Key Challenges and how Covalent solves them\n", + "- **Resource Management**: The manual management of cloud resources like GPUs is not only tedious but also prone to errors. Covalent automates this, allowing for smooth workflow management right from your Python environment.\n", + " \n", + "- **Operational Overhead**: Tasks like maintaining server uptime, load balancing, and API versioning can complicate the development process. Covalent streamlines these operational aspects, freeing you to focus on development.\n", + " \n", + "- **Environment Switching**: The need to switch between development, testing, and production environments can be a bottleneck, especially in agile, iterative development cycles. Covalent offers a unified environment, simplifying this transition.\n", + " \n", + "- **Multi-Cloud Deployment**: With GPUs often in short supply, the ability to deploy across multiple cloud providers is increasingly crucial. Covalent supports multi-cloud orchestration, making this usually complex task straightforward.\n", + " \n", + "- **Scalability**: High-compute tasks often require dynamic scaling, which can be cumbersome to manage manually. Covalent handles this automatically, adapting to the computational needs of your project.\n", + "\n", + "### Tutorial overview\n", + "\n", + "This tutorial will encompass the following steps:\n", + "\n", + "1. Developing a customizable Covalent [workflow designed to employ AI for news article summarization](#News-Summarization-workflow) [***researcher***],\n", + "2. [Executing experiments on the established Covalent workflows iteratively](#Rerunning-Workflows), aiming for desirable performance outcomes [***researcher***], and\n", + "3. [Rerunning and reusing experiments via the Streamlit application](Rerunning-workflows-via-Streamlit) [***engineer***]" + ] + }, + { + "cell_type": "markdown", + "id": "2b689ccd-c0b8-47cb-a953-489f41587075", + "metadata": {}, + "source": [ + "# Getting started\n", + "\n", + "This tutorial requires [PyTorch](https://pytorch.org/), [Diffusers](https://github.com/huggingface/diffusers), [Hugging Face Transformers](https://huggingface.co/docs/transformers/index) for generative AI. [Streamlit](https://streamlit.io/) and [FastAPI](https://fastapi.tiangolo.com/) will serve to make the user experience smooth. To install all of them, simply use the `requirements.txt` file to replicate this notebook. \n", + "\n", + "The list of packages required to run this tutorial is listed below." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "03a0c441-40ec-4353-82eb-4d395fb8e4e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bs4==0.0.1\n", + "transformers==4.31.0\n", + "diffusers==0.19.3\n", + "sentencepiece==0.1.99\n", + "torch==2.0.1\n", + "accelerate==0.21.0\n", + "Pillow==9.5.0\n", + "streamlit==1.25.0\n", + "xformers==0.0.21\n", + "emoji==2.8.0\n", + "covalent-azurebatch-plugin==0.12.0\n", + "fastapi==0.103.1\n", + "uvicorn==0.18.3\n" + ] + } + ], + "source": [ + "with open(\"./requirements.txt\", \"r\") as file:\n", + " for line in file:\n", + " print(line.rstrip())" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3846e49b-f0fa-4878-b733-5fa53c1452af", + "metadata": {}, + "outputs": [], + "source": [ + "# Uncomment below line to install necessary libraries\n", + "# !pip install requirements.txt" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "063f6e62-402f-4232-b6e2-f94568aee059", + "metadata": {}, + "outputs": [], + "source": [ + "# save under workflow.py\n", + "import os\n", + "import re\n", + "import requests\n", + "from uuid import uuid4\n", + "from bs4 import BeautifulSoup\n", + "\n", + "import transformers\n", + "from transformers import (\n", + " AutoTokenizer, T5Tokenizer, T5ForConditionalGeneration,\n", + " pipeline, AutoModelForSequenceClassification\n", + ")\n", + "from diffusers import DiffusionPipeline\n", + "from PIL import Image, ImageDraw, ImageFont\n", + "import covalent as ct\n", + "import torch\n", + "\n", + "\n", + "# setting loggers to info to avoid too many debug messages\n", + "loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]\n", + "for logger in loggers:\n", + " logger.setLevel(logging.INFO)" + ] + }, + { + "cell_type": "markdown", + "id": "957bdb21-b577-4d56-99a5-b07cea92f1dc", + "metadata": {}, + "source": [ + "# News Summarization workflow\n", + "\n", + "\n", + "We first define executors to use [Azure Batch](https://github.com/AgnostiqHQ/covalent-azurebatch-plugin) as compute. Two types of executors allow us to leverage different executors for different compute " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "13658ad0-c002-4ef6-bc4d-ad9fed565443", + "metadata": {}, + "outputs": [], + "source": [ + "# save under workflow.py\n", + "\n", + "# define dependencies to install on remote execution\n", + "DEPS_ALL = ct.DepsPip(\n", + " packages=[\n", + " \"transformers==4.31.0\", \"diffusers==0.19.3\", \"accelerate==0.21.0\",\n", + " \"cloudpickle==2.2.0\", \"sentencepiece==0.1.99\", \"torch==2.0.1\",\n", + " \"Pillow==9.5.0\", \"xformers==0.0.21\", \"emoji==2.8.0\", \"protobuf\"\n", + " ]\n", + ")\n", + "azure_cpu_executor = ct.executor.AzureBatchExecutor(\n", + " # Ensure to specify your own Azure resource information\n", + " pool_id=\"covalent-cpu\",\n", + " retries=3,\n", + " time_limit=600,\n", + ")\n", + "\n", + "# base_image_uri points to a non-default different docker image to support use nvidia gpu\n", + "azure_gpu_executor = ct.executor.AzureBatchExecutor(\n", + " # Ensure to specify your own Azure resource information\n", + " pool_id=\"covalent-gpu\",\n", + " retries=3,\n", + " time_limit=600,\n", + " base_image_uri=\"docker.io/filipbolt/covalent_azure:0.220.0\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "2a8c2d87-9d9a-4b56-ae9b-8c7b8e2668d2", + "metadata": {}, + "source": [ + "Each electron is associated with an executor, where the computation takes place. Within this framework, less demanding tasks are allocated to the `cpu` executor, while computationally intensive tasks, like generating images from textual prompts, are designated to the `gpu` for compute resources. First, we provide the task outlines. " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "113c6ecd-719a-4be1-940b-d38fefe26733", + "metadata": {}, + "outputs": [], + "source": [ + "# save under workflow.py\n", + "@ct.electron(executor=azure_cpu_executor)\n", + "def extract_news_content(news_url):\n", + " response = requests.get(news_url)\n", + " soup = BeautifulSoup(response.content, \"html.parser\")\n", + "\n", + " # Extracting article text\n", + " paragraphs = soup.find_all(\"p\")\n", + " article = \" \".join([p.get_text() for p in paragraphs])\n", + " return article\n", + "\n", + "@ct.electron(executor=azure_cpu_executor)\n", + "def generate_title(\n", + " article, model_name=\"JulesBelveze/t5-small-headline-generator\",\n", + " max_tokens=84, temperature=1, no_repeat_ngram_size=2\n", + "):\n", + " ...\n", + "\n", + "@ct.electron(executor=azure_gpu_executor)\n", + "def generate_reduced_summary(\n", + " article, model_name=\"t5-small\", max_length=30\n", + "):\n", + " ...\n", + "\n", + "@ct.electron(executor=azure_cpu_executor)\n", + "def add_title_to_image(image, title):\n", + " ...\n", + "\n", + "@ct.electron(executor=azure_gpu_executor)\n", + "def sentiment_analysis(\n", + " article, model_name=\"finiteautomata/bertweet-base-sentiment-analysis\"\n", + "):\n", + " ...\n", + "\n", + "@ct.electron(executor=azure_cpu_executor)\n", + "def generate_image_from_text(\n", + " reduced_summary, model_name=\"OFA-Sys/small-stable-diffusion-v0\", prompt=\"Impressionist image - \"\n", + "):\n", + " ...\n", + "\n", + "@ct.electron(executor=azure_cpu_executor)\n", + "def save_image(image, filename='image'):\n", + " ..." + ] + }, + { + "cell_type": "markdown", + "id": "6d9f45c3-71ff-4e2f-83ae-6b45bbde67ee", + "metadata": {}, + "source": [ + "## Covalent Workflow\n", + "\n", + "The workflow connects all these steps (electrons) into a workflow (lattice) into a cohesive and runnable workflow. " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "8dde7bfe-ead8-4b4b-b2c8-3633f0af9c29", + "metadata": {}, + "outputs": [], + "source": [ + "# save under workflow.py\n", + "@ct.lattice\n", + "def news_content_curator(\n", + " news_url, image_generation_prefix=\"Impressionist image \",\n", + " summarizer_model=\"t5-small\",\n", + " summarizer_max_length=40,\n", + " title_generating_model=\"JulesBelveze/t5-small-headline-generator\",\n", + " image_generation_model=\"OFA-Sys/small-stable-diffusion-v0\",\n", + " temperature=1, max_tokens=64, no_repeat_ngram_size=2,\n", + " content_analysis_model=\"finiteautomata/bertweet-base-sentiment-analysis\"\n", + "):\n", + " article = extract_news_content(news_url)\n", + " content_property = sentiment_analysis(\n", + " article, model_name=content_analysis_model\n", + " )\n", + " reduced_summary = generate_reduced_summary(\n", + " article, model_name=summarizer_model, max_length=summarizer_max_length\n", + " )\n", + " title = generate_title(\n", + " article, model_name=title_generating_model,\n", + " temperature=temperature, max_tokens=max_tokens,\n", + " no_repeat_ngram_size=no_repeat_ngram_size\n", + " )\n", + " generated_image = generate_image_from_text(\n", + " reduced_summary, prompt=image_generation_prefix,\n", + " model_name=image_generation_model\n", + " )\n", + " image_with_title = add_title_to_image(generated_image, title)\n", + " url = save_image(image_with_title)\n", + " return {\n", + " \"content_property\": content_property, \"summary\": reduced_summary,\n", + " \"title\": title, \"image\": url,\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "ebc4ec17-82a8-4fab-a6f2-1e77a685d35a", + "metadata": {}, + "source": [ + "Finally, once a lattice is defined, you must dispatch a workflow to run it. You can dispatch a lattice workflow using Covalent by calling `ct.dispatch` and providing a workflow name and parameters. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "afbe7311-28e8-4f14-8598-e3378ebec946", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a659c4c8-bb63-4ebd-9c02-1c2e02b52591\n" + ] + } + ], + "source": [ + "news_url = 'https://www.quantamagazine.org/math-proof-draws-new-boundaries-around-black-hole-formation-20230816/'\n", + "dispatch_id = ct.dispatch(news_content_curator)(news_url)\n", + "print(dispatch_id)" + ] + }, + { + "cell_type": "markdown", + "id": "3288e10f-b1e5-4524-bce8-cfde58b1ae84", + "metadata": {}, + "source": [ + "The resulting workflow should look like the example below\n", + "\n", + "![NewsSum](assets/workflow.gif \"News summarization AI workflow\")" + ] + }, + { + "cell_type": "markdown", + "id": "83556535-e8af-42ff-958b-79f7233b51f2", + "metadata": {}, + "source": [ + "Now that the workflow successfully runs, we add more logic to the stub tasks we previously built. \n", + "\n", + "Generating text, images, and analyzing content via sentiment analysis can all be implemented via the `transformers` and `diffusers` frameworks: " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "83724676-0bb2-4248-a8ce-08fa5781f706", + "metadata": {}, + "outputs": [], + "source": [ + "# place in workflow.py\n", + "@ct.electron(executor=azure_gpu_executor, deps_pip=DEPS_ALL)\n", + "def generate_title(\n", + " article, model_name=\"JulesBelveze/t5-small-headline-generator\",\n", + " max_tokens=84, temperature=1, no_repeat_ngram_size=2\n", + "):\n", + " WHITESPACE_HANDLER = lambda k: re.sub(\"\\s+\", \" \", re.sub(\"\\n+\", \" \", k.strip()))\n", + "\n", + " if 't5' in model_name:\n", + " tokenizer = T5Tokenizer.from_pretrained(\n", + " model_name, legacy=False\n", + " )\n", + " else:\n", + " tokenizer = AutoTokenizer.from_pretrained(model_name)\n", + "\n", + " model = T5ForConditionalGeneration.from_pretrained(model_name)\n", + "\n", + " # Process and generate title\n", + " input_ids = tokenizer(\n", + " [WHITESPACE_HANDLER(article)], return_tensors=\"pt\",\n", + " padding=\"max_length\", truncation=True, max_length=384,\n", + " )[\"input_ids\"]\n", + "\n", + " output_ids = model.generate(\n", + " input_ids=input_ids, max_length=max_tokens,\n", + " no_repeat_ngram_size=no_repeat_ngram_size, num_beams=4,\n", + " temperature=temperature\n", + " )[0]\n", + "\n", + " return tokenizer.decode(output_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)\n", + " \n", + "@ct.electron(executor=azure_gpu_executor, deps_pip=DEPS_ALL)\n", + "def generate_reduced_summary(\n", + " article, model_name=\"t5-small\", max_length=30\n", + "):\n", + " if 't5' in model_name:\n", + " tokenizer = AutoTokenizer.from_pretrained(model_name + \"_tokenizer\", legacy=False)\n", + " else:\n", + " tokenizer = T5Tokenizer.from_pretrained(model_name + \"_tokenizer\")\n", + "\n", + " model = T5ForConditionalGeneration.from_pretrained(model_name)\n", + "\n", + " # Encode the article and generate a title\n", + " input_text = \"summarize: \" + article\n", + " inputs = tokenizer.encode(\n", + " input_text, return_tensors=\"pt\", max_length=512, truncation=True\n", + " )\n", + " # Generate a title with a maximum of max_length words\n", + " outputs = model.generate(inputs, max_length=max_length, num_beams=4, length_penalty=2.0, early_stopping=True)\n", + " return tokenizer.decode(outputs[0], skip_special_tokens=True)\n", + "\n", + "\n", + "@ct.electron(executor=azure_gpu_executor, deps_pip=DEPS_ALL)\n", + "def sentiment_analysis(\n", + " article,\n", + " model_name=\"finiteautomata/bertweet-base-sentiment-analysis\"\n", + "):\n", + " sentiment_pipeline = pipeline(\n", + " \"sentiment-analysis\", model=model_name,\n", + " padding=True, truncation=True\n", + " )\n", + " mapping = {\n", + " 'NEU': 'neutral',\n", + " 'NEG': 'negative',\n", + " 'POS': 'positive'\n", + " }\n", + " label = sentiment_pipeline(article)[0][\"label\"]\n", + " return mapping.get(label, label)\n", + "\n", + "@ct.electron(executor=azure_gpu_executor, deps_pip=DEPS_ALL)\n", + "def generate_image_from_text(reduced_summary, model_name=\"OFA-Sys/small-stable-diffusion-v0\", prompt=\"Impressionist image - \"):\n", + " model = DiffusionPipeline.from_pretrained(\n", + " model_name, safety_checker=None,\n", + " torch_dtype=torch.float16\n", + " )\n", + " model.enable_attention_slicing()\n", + " \n", + " # Generate image using DiffusionPipeline\n", + " reduced_summary = prompt + reduced_summary\n", + " _ = model(reduced_summary, num_inference_steps=1)\n", + " return model(reduced_summary).images[0]" + ] + }, + { + "cell_type": "markdown", + "id": "8590ad85-6537-49a8-a9f7-ec3b9012be03", + "metadata": {}, + "source": [ + "The generated images and text can be patched together, and the image may then be uploaded to a cloud storage to make it easier to transfer it via an API. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a010e2cf-b86f-4af1-b513-3ba8753a8d2a", + "metadata": {}, + "outputs": [], + "source": [ + "@ct.electron(executor=azure_cpu_executor, deps_pip=DEPS_ALL)\n", + "def add_title_to_image(image, title):\n", + " # Create a new image with space for the title\n", + " new_image = Image.new(\n", + " \"RGB\", (image.width, image.height + 40), color=\"black\"\n", + " )\n", + " new_image.paste(image, (0, 40))\n", + "\n", + " # Create a drawing context\n", + " draw = ImageDraw.Draw(new_image)\n", + " font = ImageFont.load_default()\n", + "\n", + " # Sanitize title to remove non-latin-1 characters\n", + " sanitized_title = \"\".join([i if ord(i) < 128 else \" \" for i in title])\n", + "\n", + " # Split the title into multiple lines if it's too long\n", + " words = sanitized_title.split()\n", + " lines = []\n", + " while words:\n", + " line = \"\"\n", + " while words and font.getlength(line + words[0]) <= image.width:\n", + " line += words.pop(0) + \" \"\n", + " lines.append(line)\n", + "\n", + " # Calculate position to center the text\n", + " y_text = 10\n", + " for line in lines:\n", + " # Calculate width and height of the text to be drawn\n", + " _, _, width, height = draw.textbbox(xy=(0, 0), text=line, font=font)\n", + " position = ((new_image.width - width) / 2, y_text)\n", + " draw.text(position, line, font=font, fill=\"white\")\n", + " y_text += height\n", + "\n", + " return new_image" + ] + }, + { + "cell_type": "markdown", + "id": "3a9ab8e9-f61e-4671-961e-91f520e0ae04", + "metadata": {}, + "source": [ + "Finally, we will upload the image to Azure blob storage. The URL is used in the Streamlit app which then downloads and renders the image. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bf8c5f33-9b56-45c7-b10e-6fbebb43bfad", + "metadata": {}, + "outputs": [], + "source": [ + "# Your Azure Storage account connection string\n", + "connection_string = \"\"\n", + "\n", + "# Name of the container where you want to upload the file\n", + "container_name = \"\"\n", + "\n", + "# Name for the blob (file) in the container\n", + "blob_name = \"\"\n", + "\n", + "@ct.electron(executor=azure_cpu_executor, deps_pip=DEPS_ALL, files=[ft])\n", + "def save_image(image, filename='file_destination'):\n", + " image.save(f\"{filename}.jpg\")\n", + " # Create a BlobServiceClient\n", + " blob_service_client = BlobServiceClient.from_connection_string(connection_string)\n", + " # Get a reference to the container\n", + " container_client = blob_service_client.get_container_client(container_name)\n", + " \n", + " # Create or get a BlobClient to upload the file\n", + " blob_client = container_client.get_blob_client(blob_name)\n", + "\n", + " # Upload the file\n", + " with open(f\"{filename}.jpg\", \"rb\") as data:\n", + " blob_client.upload_blob(data)\n", + "\n", + " # Set the blob's access level to Blob (public read access)\n", + " blob_client.set_blob_access_tier(\"Cool\")\n", + " blob_client.set_blob_access_policy(sas_token=None, permission=BlobSasPermissions(read=True), expiry=datetime.datetime.utcnow() + datetime.timedelta(days=365))\n", + "\n", + " sas_token = generate_blob_sas(\n", + " account_name=blob_service_client.account_name,\n", + " container_name=container_name,\n", + " blob_name=blob_name,\n", + " account_key=blob_service_client.credential.account_key,\n", + " permission=BlobSasPermissions(read=True),\n", + " expiry=datetime.datetime.utcnow() + datetime.timedelta(days=365)\n", + " )\n", + " blob_url_with_sas = f\"https://{blob_service_client.account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas_token}\"\n", + "\n", + " return blob_url_with_sas" + ] + }, + { + "cell_type": "markdown", + "id": "473134d0-c533-45fd-9918-bd92aa9c8de2", + "metadata": {}, + "source": [ + "# Rerunning Workflows\n", + "\n", + "Upon the execution of a Covalent workflow, an associated `dispatch_id` is generated, serving as a unique workflow execution identifier. This dispatch ID serves a dual purpose: it acts as a reference point for the specific workflow and also facilitates the rerun of the entire workflow. Covalent retains a record of all previously executed workflows in a **scalable database**, thus forming a comprehensive history that can be rerun using their respective dispatch IDs.\n", + "\n", + "[Redispatching](https://docs.covalent.xyz/docs/features/redispatch/) a workflow to summarize a different news article can be done by providing the `dispatch_id` to the `redispatch` method:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "264b2e78-8531-45fd-ba77-10cc978756f8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a9e020a7-628f-4e3f-82fc-7e90fd379d94\n" + ] + } + ], + "source": [ + "new_url = \"https://www.quantamagazine.org/what-a-contest-of-consciousness-theories-really-proved-20230824/\"\n", + "redispatch_id = ct.redispatch(dispatch_id)(new_url)\n", + "print(redispatch_id)" + ] + }, + { + "cell_type": "markdown", + "id": "922bba8f-8196-49c2-8bd0-473ffdf9af58", + "metadata": {}, + "source": [ + "It's important to distinguish between dispatching workflows (using `ct.dispatch`) and redispatching them (using `ct.redispatch`). **Dispatching** is typically carried out during the stages of designing a new workflow, while **redispatching** involves replicating and refining a previously created and dispatched workflow." + ] + }, + { + "cell_type": "markdown", + "id": "a159c4fd-a8ac-4e87-8c92-0d62527cc0e9", + "metadata": {}, + "source": [ + "It's also possible to rerun a workflow while [reusing previously computed results](https://docs.covalent.xyz/docs/features/redispatch/#reuse-previously-computed-results). For instance, if you want to experiment with a different prompt for generating images from the same news article, while keeping the summarization and headline generation unchanged, you can initiate the workflow again, preserving the use of previous results:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "62642c3c-2054-403f-a9d5-170bd84f3f02", + "metadata": {}, + "outputs": [], + "source": [ + "redispatch_id = ct.redispatch(dispatch_id, reuse_previous_results=True)(new_url, \"Cubistic image\")" + ] + }, + { + "cell_type": "markdown", + "id": "5e296642-6d4d-413b-ab32-00a0782929a0", + "metadata": {}, + "source": [ + "Furthermore, it's possible to tailor a previously executed workflow by replacing tasks. We can achieve this by employing the `replace_electrons` feature, [which allows us to substitute one task with another](https://docs.covalent.xyz/docs/features/redispatch/#re-executing-the-workflow-with-new-input-arguments). " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e93cdf93-098a-47b7-b464-659fabba20d4", + "metadata": {}, + "outputs": [], + "source": [ + "@ct.electron(executor=azure_cpu_executor)\n", + "def classify_news_genre(\n", + " article, model_name=\"abhishek/autonlp-bbc-news-classification-37229289\"\n", + "):\n", + " tokenizer = AutoTokenizer.from_pretrained(model_name)\n", + " model = AutoModelForSequenceClassification.from_pretrained(model_name)\n", + "\n", + " inputs = tokenizer(\n", + " article, return_tensors=\"pt\", truncation=True, max_length=512\n", + " )\n", + " outputs = model(**inputs)\n", + " id2label = {\n", + " 0: \"business\",\n", + " 1: \"entertainment\",\n", + " 2: \"politics\",\n", + " 3: \"sport\",\n", + " 4: \"tech\"\n", + " }\n", + " return id2label[outputs.logits.argmax().item()]\n", + "\n", + "replace_electrons = {\n", + " \"sentiment_analysis\": classify_news_genre\n", + "}\n", + "\n", + "redispatch_id = ct.redispatch(dispatch_id, replace_electrons=replace_electrons)(\n", + " new_url, \"Cubistic image\", content_analysis_model=\"abhishek/autonlp-bbc-news-classification-37229289\"\n", + ")\n", + "print(redispatch_id)" + ] + }, + { + "cell_type": "markdown", + "id": "05c3f63c-5e34-49d8-a903-5bdc67820c37", + "metadata": {}, + "source": [ + "# Rerunning workflows via Streamlit\n", + "\n", + "\n", + "\n", + "Instead of running and rerunning python scripts, we provide you with a [Streamlit](https://streamlit.io/) app that allows reruns simply by using a dispatch ID string. To be able to do so, we've added another layer of efficiency. A lightweight [FastAPI](https://fastapi.tiangolo.com/) server residing on the same machine as the Covalent server acts as a middleware. This server receives a JSON payload containing inputs and the dispatch ID, and forwards it to Covalent. This setup further decouples Streamlit from Covalent, allowing your Streamlit server to operate even more efficiently. \n", + "\n", + "\n", + "At this point, we recommend to decouple the python code into three files:\n", + "1. `workflow.py` containing the code to run the Covalent workflow\n", + "2. `streamlit_app.py` containing streamlit code\n", + "3. `fast_api.py` containing fast API code\n", + "\n", + "The outline of the middleware FastAPI layer can then be (`fast_api.py`):" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "46b82422-4acf-4698-bea4-79ea406c5a27", + "metadata": {}, + "outputs": [], + "source": [ + "# save as fast_api.py\n", + "import uvicorn\n", + "from fastapi import FastAPI, Request\n", + "import covalent as ct\n", + "\n", + "app = FastAPI()\n", + "\n", + "@app.post(\"/news_content_curator\")\n", + "async def news_content_api(dispatch_id: str, request: Request):\n", + " params = await request.json()\n", + " selected_content_analysis = params.pop('selected_content_analysis')\n", + "\n", + " redispatch_id = ct.redispatch(\n", + " dispatch_id, reuse_previous_results=True,\n", + " )(**params)\n", + " return {\n", + " 'status': 'success',\n", + " 'dispatch_id': redispatch_id\n", + " }\n", + "\n", + "@app.get(\"/get_result\")\n", + "async def get_result(dispatch_id: str):\n", + " result = ct.get_result(dispatch_id, wait=True)\n", + " workflow_result = result.result\n", + " return workflow_result" + ] + }, + { + "cell_type": "markdown", + "id": "e7ce8c63-834d-4197-ac2e-483f84caff17", + "metadata": {}, + "source": [ + "To execute the FastAPI in a distinct Python script, you can include the subsequent code and store it as a separate script (`fast_api.py`).\n", + "\n", + "```python\n", + "if __name__ == \"__main__\":\n", + " uvicorn.run(app, host=\"0.0.0.0\", port=8085)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "99e29327-2fc4-4be0-aa51-002eda668e13", + "metadata": {}, + "source": [ + "After saving, run it using `python fast_api.py` in a separate shell." + ] + }, + { + "cell_type": "markdown", + "id": "343f3507-bfb8-4afb-9210-72966f861b80", + "metadata": {}, + "source": [ + "Now that we have the capability to execute and re-execute Covalent workflows, our goal is to offer users a user-friendly interface. Streamlit enables us to achieve precisely that! We have developed a compact Streamlit application that enables users to adjust parameters for the AI news summarization workflow mentioned earlier and trigger previously executed workflows using their dispatch IDs. The sidebar of the Streamlit app will contain the parameters, with some proposed default values, whereas the central part of the Streamlit app will serve to render the results of the Covalent workflows. " + ] + }, + { + "cell_type": "markdown", + "id": "f995197b-d196-4dbe-8048-5df6d881168a", + "metadata": {}, + "source": [ + "The Streamlit sidebar can be defined as:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "0d31b26a-57b1-48fb-bedf-08b710c903d0", + "metadata": {}, + "outputs": [], + "source": [ + "import streamlit as st\n", + "\n", + "def create_streamlit_sidebar(\n", + " stable_diffusion_models, news_summary_generation,\n", + " headline_generation_models, sentiment_analysis_models,\n", + " genre_analysis_models\n", + "):\n", + " with st.sidebar:\n", + " # Define the location of the remote fast API middleware server\n", + " server_location = st.text_input(\n", + " \"Remote server URL\", value=\"http://localhost:8085\"\n", + " )\n", + " news_article_url = st.text_input(\n", + " \"News article URL\",\n", + " value=\"https://www.quantamagazine.org/math-proof-draws-new-boundaries-around-black-hole-formation-20230816/\" # noqa\n", + " )\n", + " st.header(\"Parameters\")\n", + " st.subheader(\"Image generation\")\n", + "\n", + " image_generation_prefix = st.text_input(\n", + " \"Image generation prompt\",\n", + " value=\"impressionist style\"\n", + " )\n", + " image_generation_model = stable_diffusion_models[0]\n", + " st.subheader(\"Text summarization\")\n", + " summarizer_model = news_summary_generation[0]\n", + " summarizer_max_length = st.slider(\n", + " \"Summarizer length\", min_value=5, max_value=200, value=64,\n", + " )\n", + "\n", + " st.subheader(\"Text generation parameters\")\n", + " title_generating_model = headline_generation_models[0]\n", + "\n", + " temperature = st.slider(\n", + " \"Temperature\", min_value=0.0, max_value=100.0, value=1.0,\n", + " step=0.1\n", + " )\n", + " max_tokens = st.slider(\n", + " \"Max tokens\", min_value=5, max_value=200, value=64,\n", + " )\n", + " no_repeat_ngram_size = st.slider(\n", + " \"No repeat ngram size\", min_value=1, max_value=10, value=2,\n", + " )\n", + " st.subheader(\"Content analysis\")\n", + " selected_content_analysis = st.selectbox(\n", + " \"Content analysis option\", options=[\n", + " \"sentiment analysis\",\n", + " \"genre classification\"\n", + " ]\n", + " )\n", + " if selected_content_analysis == \"sentiment analysis\":\n", + " content_analysis_model = sentiment_analysis_models[0]\n", + " else:\n", + " content_analysis_model = genre_analysis_models[0]\n", + "\n", + " return server_location, {\n", + " 'news_url': news_article_url,\n", + " 'image_generation_prefix': image_generation_prefix,\n", + " 'summarizer_model': summarizer_model,\n", + " 'summarizer_max_length': summarizer_max_length,\n", + " 'title_generating_model': title_generating_model,\n", + " 'image_generation_model': image_generation_model,\n", + " 'temperature': temperature,\n", + " 'max_tokens': max_tokens,\n", + " 'no_repeat_ngram_size': no_repeat_ngram_size,\n", + " 'content_analysis_model': content_analysis_model,\n", + " 'selected_content_analysis': selected_content_analysis\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "60f2975c-9e60-4716-a50e-06a84b8c8941", + "metadata": {}, + "source": [ + "The central part of the Streamlit app is designed to render results from Covalent server, using the parameters configured in the sidebar. This triggers the generation of an AI-generated summary of the news article, a proposed title, and an AI-generated image depicting the content of the news article." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "f7c9b8e5-23ff-48f3-ad1b-dc7f97eb165c", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "\n", + "st.title(\"News article AI summarization\")\n", + "dispatch_id_area = st.text_area(\"Dispatch IDs\")\n", + "\n", + "if st.button(\"Generate image and text summary\"):\n", + " st.write(\"Generating...\")\n", + "\n", + " container = st.container()\n", + " response = make_redispatch(\n", + " server_location, parameters, dispatch_id,\n", + " )\n", + " if response['status'] == \"error\":\n", + " st.write(f\"Error: {response['message']}\")\n", + " else:\n", + " redispatch_id = response['dispatch_id']\n", + "\n", + " covalent_info = get_covalent_info(server_location).json()\n", + " address = covalent_info['address']\n", + " port = covalent_info['port']\n", + " covalent_url = f\"{address}:{port}/{redispatch_id}\"\n", + "\n", + " st.write(f\"Covalent URL on remote server: http://{covalent_url}\")\n", + "\n", + " with container:\n", + " result = get_dispatch_result(server_location, redispatch_id)\n", + " if result and result.json():\n", + " result = result.json()\n", + " st.subheader(\n", + " \"Article generated title: \" +\n", + " f\"{result['title']}\"\n", + " )\n", + " st.write(\n", + " \"In terms of \" +\n", + " parameters['selected_content_analysis'] +\n", + " \" content is: \" + str(result['content_property'])\n", + " )\n", + "\n", + " image_url = result['image']\n", + " response = requests.get(image_url, stream=True)\n", + " local_image = f'/tmp/{redispatch_id}.img.png'\n", + " with open(local_image, 'wb') as out_file:\n", + " shutil.copyfileobj(response.raw, out_file)\n", + " st.image(local_image)\n", + "\n", + " st.text_area(\n", + " label=\"AI generated summary\",\n", + " key=\"summary\",\n", + " value=result['summary'], disabled=True\n", + " )\n", + " else:\n", + " st.write(\"Error with processing, check workflow\")" + ] + }, + { + "cell_type": "markdown", + "id": "29810af4-a4c1-4bb4-9ff1-375432b4bf7b", + "metadata": {}, + "source": [ + "If you saved the provided streamlit code in `streamlit_app.py`, you can run it in a separate python console by running\n", + "\n", + "`streamlit run streamlit_app.py`\n", + "\n", + "This will start the streamlit app on http://localhost:8501\n", + "\n", + "You can use the streamlit app as demonstrated below:\n", + "\n", + "![StreamlitCovalent](assets/streamlit_covalent.gif \"Streamlit + Covalent\")\n", + "\n", + "Generating multiple images with Streamlit via Covalent is demonstrated below\n", + "\n", + "![StreamlitCovalent](assets/streamlit_covalent_imagegen.gif \"Streamlit + Covalent\")" + ] + }, + { + "cell_type": "markdown", + "id": "e721a608-6880-4e1f-a4a1-09018a69798c", + "metadata": {}, + "source": [ + "# Conclusion\n", + "\n", + "Through the integration of Covalent and Streamlit, we have developed a news content summarization application that demonstrates a smooth transition from the design of machine learning experiments to the dependable repetition and enhancement of experimental outcomes. Covalent's capability to re-execute previously performed workflows simplifies collaboration between engineers and researchers who constructed these workflows, enabling the reuse and customization of previously computed workflows. \n", + "\n", + "Leveraging Covalent's capabilities, we structured the application into three distinct components: 1) Covalent workflow design, 2) a FastAPI API layer that serves as an interface to Covalent, and 3) a user-friendly Streamlit interface responsible for invoking the FastAPI API layer and presenting the results in an easily comprehensible format.\n", + "\n", + "This tutorial aims to showcase the remarkable potential of Covalent in conjunction with Streamlit. Covalent is free and [open source](https://www.covalent.xyz/open-source/). Please visit the [Covalent documentation](https://docs.covalent.xyz/docs/) for more information and many more [tutorials](https://docs.covalent.xyz/docs/user-documentation/tutorials/). An example of the Streamlit application described here was deployed [here](https://covalentredispatch-u5xmshqomhpbtwnszya4jv.streamlit.app/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/source/tutorials/tutorials.rst b/doc/source/tutorials/tutorials.rst index db54877ab..afecaa3a3 100644 --- a/doc/source/tutorials/tutorials.rst +++ b/doc/source/tutorials/tutorials.rst @@ -71,6 +71,8 @@ Advanced - :doc:`Tracking stars in the night sky<./2_Astronomy/star_tracker/source>` * - Quantum Gravity - :doc:`Classifying discrete spacetimes by dimension<./4_QuantumGravity/spacetime_classification/source>` + * - Generative AI/LLM + - :doc:`Scalable API backends for LLM and generative AI <./0_ClassicalMachineLearning/genai/source>` --------------------------------- diff --git a/meta.yaml b/meta.yaml index 13a091be5..98d9d9b3e 100644 --- a/meta.yaml +++ b/meta.yaml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. {% set data = load_setup_py_data(setup_file='./setup.py', from_recipe_dir=True) %} @@ -57,7 +53,7 @@ test: about: home: {{ data.get('url') }} - license: AGPL + license: Apache license_file: LICENSE extra: diff --git a/pyproject.toml b/pyproject.toml index 9c5e1b96b..c87d34522 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. [tool.black] target_version = ['py38'] diff --git a/requirements.txt b/requirements.txt index c7338385b..2680d55a5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,10 +7,14 @@ dask[distributed]>=2022.6.0 fastapi>=0.93.0 filelock>=3.12.2 furl>=2.1.3 +lmdbm==0.0.5 +mpire==2.7.1 natsort>=8.4.0 networkx>=2.8.6 +orjson==3.8.10 +pennylane==0.31.1 psutil>=5.9.0 -pydantic>=1.10.1 +pydantic>=2.1.1 python-socketio>=5.7.1 requests>=2.24.0 rich>=12.0.0,<=13.3.5 diff --git a/setup.py b/setup.py index adc9426a2..50e3d6b63 100644 --- a/setup.py +++ b/setup.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import site @@ -202,7 +198,7 @@ def find_sources(self): "maintainer": "Agnostiq", "url": "https://github.com/AgnostiqHQ/covalent", "download_url": f"https://github.com/AgnostiqHQ/covalent/archive/v{version}.tar.gz", - "license": "GNU Affero GPL v3.0", + "license": "Apache License 2.0", "author": "Agnostiq", "author_email": "support@agnostiq.ai", "description": "Covalent Workflow Tool", @@ -214,9 +210,16 @@ def find_sources(self): "extras_require": { "aws": ["boto3>=1.20.48"], "azure": ["azure-identity>=1.13.0", "azure-storage-blob>=12.16.0"], + "braket": ["amazon-braket-pennylane-plugin>=1.17.4", "boto3>=1.28.5"], "gcp": ["google-auth>=2.16.2", "google-cloud-storage>=2.7.0"], "mysql": ["mysqlclient>=2.1.1"], "postgres": ["psycopg2-binary>=2.9.5"], + "qiskit": [ + "pennylane-qiskit==0.30", + "qiskit==0.43.1", + "qiskit-ibm-provider==0.6.1", + "qiskit-ibm-runtime==0.10.0", + ], }, "classifiers": [ "Development Status :: 4 - Beta", @@ -224,7 +227,7 @@ def find_sources(self): "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", - "License :: OSI Approved :: GNU Affero General Public License v3", + "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", diff --git a/tests/.gitignore b/tests/.gitignore index 1ac3b4ea4..325878e28 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Ignore results folders diff --git a/tests/covalent_dispatcher_tests/_cli/cli_test.py b/tests/covalent_dispatcher_tests/_cli/cli_test.py index d7a87293e..1f23b2bd7 100644 --- a/tests/covalent_dispatcher_tests/_cli/cli_test.py +++ b/tests/covalent_dispatcher_tests/_cli/cli_test.py @@ -4,21 +4,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test for Covalent CLI Tool.""" diff --git a/tests/covalent_dispatcher_tests/_cli/groups/db_test.py b/tests/covalent_dispatcher_tests/_cli/groups/db_test.py index c8464424c..2b7690a51 100644 --- a/tests/covalent_dispatcher_tests/_cli/groups/db_test.py +++ b/tests/covalent_dispatcher_tests/_cli/groups/db_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import sys from unittest.mock import Mock diff --git a/tests/covalent_dispatcher_tests/_cli/migrate_test.py b/tests/covalent_dispatcher_tests/_cli/migrate_test.py index 86975937c..ee38cacf8 100644 --- a/tests/covalent_dispatcher_tests/_cli/migrate_test.py +++ b/tests/covalent_dispatcher_tests/_cli/migrate_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Testing results_dir migration script""" diff --git a/tests/covalent_dispatcher_tests/_cli/service_test.py b/tests/covalent_dispatcher_tests/_cli/service_test.py index 7b979cce0..2eab83215 100644 --- a/tests/covalent_dispatcher_tests/_cli/service_test.py +++ b/tests/covalent_dispatcher_tests/_cli/service_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for Covalent command line interface (CLI) Tool.""" @@ -616,7 +612,9 @@ def test_logs(exists, mocker): def test_config(mocker): """Test covalent config cli""" - cfg_read_config_mock = mocker.patch("covalent_dispatcher._cli.service.cm.read_config") + cfg_read_config_mock = mocker.patch( + "covalent_dispatcher._cli.service.ConfigManager.read_config" + ) json_dumps_mock = mocker.patch("covalent_dispatcher._cli.service.json.dumps") click_echo_mock = mocker.patch("covalent_dispatcher._cli.service.click.echo") @@ -1150,8 +1148,7 @@ def test_graceful_start_permission_exception(mocker): click_secho_mock = mocker.patch("covalent_dispatcher._cli.service.click.secho") runner = CliRunner() - result = runner.invoke(start) - assert result.exit_code == 1 + runner.invoke(start) assert graceful_start_mock.called_once() assert click_secho_mock.call_count == 3 diff --git a/tests/covalent_dispatcher_tests/_core/data_manager_test.py b/tests/covalent_dispatcher_tests/_core/data_manager_test.py index 0fdf99681..1271b9027 100644 --- a/tests/covalent_dispatcher_tests/_core/data_manager_test.py +++ b/tests/covalent_dispatcher_tests/_core/data_manager_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Tests for the core functionality of the dispatcher. @@ -103,6 +99,7 @@ async def test_handle_built_sublattice(mocker): return_value="mock-sub-dispatch-id", ) mock_node_result = generate_node_result( + dispatch_id="mock-dispatch-id", node_id=0, node_name="mock_node_name", status=RESULT_STATUS.COMPLETED, @@ -129,6 +126,7 @@ async def test_handle_built_sublattice_exception(mocker): return_value="mock-sub-dispatch-id", ) mock_node_result = generate_node_result( + dispatch_id="mock-dispatch-id", node_id=0, node_name="mock_node_name", status=RESULT_STATUS.COMPLETED, diff --git a/tests/covalent_dispatcher_tests/_core/data_modules/job_manager_test.py b/tests/covalent_dispatcher_tests/_core/data_modules/job_manager_test.py index e363dc021..77ae5bf85 100644 --- a/tests/covalent_dispatcher_tests/_core/data_modules/job_manager_test.py +++ b/tests/covalent_dispatcher_tests/_core/data_modules/job_manager_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from functools import partial diff --git a/tests/covalent_dispatcher_tests/_core/dispatcher_test.py b/tests/covalent_dispatcher_tests/_core/dispatcher_test.py index 866f377a9..4a2473a59 100644 --- a/tests/covalent_dispatcher_tests/_core/dispatcher_test.py +++ b/tests/covalent_dispatcher_tests/_core/dispatcher_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Tests for the core functionality of the dispatcher. diff --git a/tests/covalent_dispatcher_tests/_core/execution_test.py b/tests/covalent_dispatcher_tests/_core/execution_test.py index 40d78d55d..9a9913968 100644 --- a/tests/covalent_dispatcher_tests/_core/execution_test.py +++ b/tests/covalent_dispatcher_tests/_core/execution_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Integration tests for the dispatcher, runner, and result modules @@ -270,17 +266,19 @@ def workflow(x): mocker.patch( "covalent._results_manager.result.Result._get_node_error", return_value="AssertionError" ) - mock_unregister = mocker.patch( - "covalent_dispatcher._core.dispatcher.datasvc.finalize_dispatch" - ) + + mock_persist_result = mocker.patch("covalent_dispatcher._core.data_manager.persist_result") + + mock_unregister = mocker.patch("covalent_dispatcher._core.data_manager.finalize_dispatch") mocker.patch( - "covalent_dispatcher._core.runner.datasvc.get_result_object", return_value=result_object + "covalent_dispatcher._core.data_manager.get_result_object", return_value=result_object ) status_queue = asyncio.Queue() mocker.patch( "covalent_dispatcher._core.data_manager.get_status_queue", return_value=status_queue ) + mock_get_failed_nodes = mocker.patch( "covalent._results_manager.result.Result._get_failed_nodes", return_value=[(0, "failing_task")], @@ -289,6 +287,7 @@ def workflow(x): update.persist(result_object) result_object = await run_workflow(result_object) + mock_persist_result.assert_called_with(result_object.dispatch_id) mock_unregister.assert_called_with(result_object.dispatch_id) assert result_object.status == Result.FAILED assert result_object._error == "The following tasks failed:\n0: failing_task" diff --git a/tests/covalent_dispatcher_tests/_core/runner_test.py b/tests/covalent_dispatcher_tests/_core/runner_test.py index 12103824e..644f6a8c1 100644 --- a/tests/covalent_dispatcher_tests/_core/runner_test.py +++ b/tests/covalent_dispatcher_tests/_core/runner_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Tests for the core functionality of the runner. @@ -134,7 +130,8 @@ async def test_run_abstract_task_exception_handling(mocker): mock_get_result = mocker.patch( "covalent_dispatcher._core.runner.datasvc.get_result_object", return_value=result_object ) - mock_get_task_input_values = mocker.patch( + + mocker.patch( "covalent_dispatcher._core.runner._get_task_input_values", side_effect=RuntimeError(), ) diff --git a/tests/covalent_dispatcher_tests/_db/__init__.py b/tests/covalent_dispatcher_tests/_db/__init__.py index c295e7b9e..5c5d9e156 100644 --- a/tests/covalent_dispatcher_tests/_db/__init__.py +++ b/tests/covalent_dispatcher_tests/_db/__init__.py @@ -4,18 +4,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_dispatcher_tests/_db/data_store_test.py b/tests/covalent_dispatcher_tests/_db/data_store_test.py index 5641497d2..22eda156a 100644 --- a/tests/covalent_dispatcher_tests/_db/data_store_test.py +++ b/tests/covalent_dispatcher_tests/_db/data_store_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Unit tests for DataStore object diff --git a/tests/covalent_dispatcher_tests/_db/db_test.py b/tests/covalent_dispatcher_tests/_db/db_test.py index 0563cf8e2..95e8ee897 100644 --- a/tests/covalent_dispatcher_tests/_db/db_test.py +++ b/tests/covalent_dispatcher_tests/_db/db_test.py @@ -4,21 +4,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from os import path from pathlib import Path diff --git a/tests/covalent_dispatcher_tests/_db/fixtures/__init__.py b/tests/covalent_dispatcher_tests/_db/fixtures/__init__.py index 3fafcc813..a3bc24cec 100644 --- a/tests/covalent_dispatcher_tests/_db/fixtures/__init__.py +++ b/tests/covalent_dispatcher_tests/_db/fixtures/__init__.py @@ -4,21 +4,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import datetime diff --git a/tests/covalent_dispatcher_tests/_db/jobdb_test.py b/tests/covalent_dispatcher_tests/_db/jobdb_test.py index bae861ccb..f76b80b99 100644 --- a/tests/covalent_dispatcher_tests/_db/jobdb_test.py +++ b/tests/covalent_dispatcher_tests/_db/jobdb_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from datetime import datetime as dt from datetime import timezone diff --git a/tests/covalent_dispatcher_tests/_db/load_test.py b/tests/covalent_dispatcher_tests/_db/load_test.py index 73626ab78..0b254ac47 100644 --- a/tests/covalent_dispatcher_tests/_db/load_test.py +++ b/tests/covalent_dispatcher_tests/_db/load_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for result loading (from database) module.""" diff --git a/tests/covalent_dispatcher_tests/_db/update_test.py b/tests/covalent_dispatcher_tests/_db/update_test.py index 88dd1cb0f..00bd6b550 100644 --- a/tests/covalent_dispatcher_tests/_db/update_test.py +++ b/tests/covalent_dispatcher_tests/_db/update_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import shutil @@ -430,6 +426,7 @@ def test_node(mocker, node_name): end_time="mock_time", status="COMPLETED", output="mock_output", + qelectron_data_exists=False, ) if node_name is None: node_name = mock_result.lattice.transport_graph.get_node_value() @@ -440,6 +437,7 @@ def test_node(mocker, node_name): end_time="mock_time", status="COMPLETED", output="mock_output", + qelectron_data_exists=False, error=None, sub_dispatch_id=None, sublattice_result=None, diff --git a/tests/covalent_dispatcher_tests/_db/upsert_test.py b/tests/covalent_dispatcher_tests/_db/upsert_test.py index bd1159eec..4a63395de 100644 --- a/tests/covalent_dispatcher_tests/_db/upsert_test.py +++ b/tests/covalent_dispatcher_tests/_db/upsert_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from pathlib import Path diff --git a/tests/covalent_dispatcher_tests/_db/write_result_to_db_test.py b/tests/covalent_dispatcher_tests/_db/write_result_to_db_test.py index 7b3e4df4a..5312a1759 100644 --- a/tests/covalent_dispatcher_tests/_db/write_result_to_db_test.py +++ b/tests/covalent_dispatcher_tests/_db/write_result_to_db_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the module used to write the decomposed result object to the database.""" @@ -209,6 +205,7 @@ def get_electron_kwargs( deps_filename=DEPS_FILENAME, call_before_filename=CALL_BEFORE_FILENAME, call_after_filename=CALL_AFTER_FILENAME, + qelectron_data_exists=False, cancel_requested=False, created_at=None, updated_at=None, @@ -237,6 +234,7 @@ def get_electron_kwargs( "deps_filename": deps_filename, "call_before_filename": call_before_filename, "call_after_filename": call_after_filename, + "qelectron_data_exists": qelectron_data_exists, "cancel_requested": cancel_requested, "created_at": created_at, "updated_at": updated_at, @@ -610,6 +608,7 @@ def test_update_electrons_data(test_db, mocker): started_at=dt.now(timezone.utc), updated_at=dt.now(timezone.utc), completed_at=None, + qelectron_data_exists=False, ) insert_electrons_data( @@ -627,6 +626,7 @@ def test_update_electrons_data(test_db, mocker): started_at=cur_time, updated_at=cur_time, completed_at=None, + qelectron_data_exists=False, ) with test_db.session() as session: diff --git a/tests/covalent_dispatcher_tests/_service/app_test.py b/tests/covalent_dispatcher_tests/_service/app_test.py index 48db5069f..f05c492ca 100644 --- a/tests/covalent_dispatcher_tests/_service/app_test.py +++ b/tests/covalent_dispatcher_tests/_service/app_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the FastAPI app.""" diff --git a/tests/covalent_dispatcher_tests/_triggers_app/triggers_app_test.py b/tests/covalent_dispatcher_tests/_triggers_app/triggers_app_test.py index 9eab8a420..c64248fc6 100644 --- a/tests/covalent_dispatcher_tests/_triggers_app/triggers_app_test.py +++ b/tests/covalent_dispatcher_tests/_triggers_app/triggers_app_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the Triggers server endpoints""" diff --git a/tests/covalent_dispatcher_tests/entry_point_test.py b/tests/covalent_dispatcher_tests/entry_point_test.py index 47fc1e780..e4c55c352 100644 --- a/tests/covalent_dispatcher_tests/entry_point_test.py +++ b/tests/covalent_dispatcher_tests/entry_point_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the FastAPI app.""" diff --git a/tests/covalent_tests/choose_executor_test.py b/tests/covalent_tests/choose_executor_test.py index a4be751fc..4de88f210 100644 --- a/tests/covalent_tests/choose_executor_test.py +++ b/tests/covalent_tests/choose_executor_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Test for choosing executors. diff --git a/tests/covalent_tests/cloud_resource_manager/__init__.py b/tests/covalent_tests/cloud_resource_manager/__init__.py index 9d1b05526..21d7eaa5c 100644 --- a/tests/covalent_tests/cloud_resource_manager/__init__.py +++ b/tests/covalent_tests/cloud_resource_manager/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_tests/cloud_resource_manager/core_test.py b/tests/covalent_tests/cloud_resource_manager/core_test.py index da675f9e1..e4c389ddd 100644 --- a/tests/covalent_tests/cloud_resource_manager/core_test.py +++ b/tests/covalent_tests/cloud_resource_manager/core_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import subprocess diff --git a/tests/covalent_tests/dispatcher_plugins/base_test.py b/tests/covalent_tests/dispatcher_plugins/base_test.py index b3751c8c7..e0bae5921 100644 --- a/tests/covalent_tests/dispatcher_plugins/base_test.py +++ b/tests/covalent_tests/dispatcher_plugins/base_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest diff --git a/tests/covalent_tests/dispatcher_plugins/local_test.py b/tests/covalent_tests/dispatcher_plugins/local_test.py index 3022ea874..da756a152 100644 --- a/tests/covalent_tests/dispatcher_plugins/local_test.py +++ b/tests/covalent_tests/dispatcher_plugins/local_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for local module in dispatcher_plugins.""" diff --git a/tests/covalent_tests/executor/base_test.py b/tests/covalent_tests/executor/base_test.py index 0aebc0a49..ae45bd1d3 100644 --- a/tests/covalent_tests/executor/base_test.py +++ b/tests/covalent_tests/executor/base_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for the Covalent executor base module.""" diff --git a/tests/covalent_tests/executor/executor_plugins/dask_test.py b/tests/covalent_tests/executor/executor_plugins/dask_test.py index 979249bfb..81b3b8550 100644 --- a/tests/covalent_tests/executor/executor_plugins/dask_test.py +++ b/tests/covalent_tests/executor/executor_plugins/dask_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for Covalent dask executor.""" diff --git a/tests/covalent_tests/executor/executor_plugins/local_test.py b/tests/covalent_tests/executor/executor_plugins/local_test.py index 82ce2d76c..93fa8a04e 100644 --- a/tests/covalent_tests/executor/executor_plugins/local_test.py +++ b/tests/covalent_tests/executor/executor_plugins/local_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for Covalent local executor.""" diff --git a/tests/covalent_tests/executor/executor_plugins/remote_executor_test.py b/tests/covalent_tests/executor/executor_plugins/remote_executor_test.py index 6ba1def7f..c5d3e55f3 100644 --- a/tests/covalent_tests/executor/executor_plugins/remote_executor_test.py +++ b/tests/covalent_tests/executor/executor_plugins/remote_executor_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for Covalent remote executor.""" diff --git a/tests/covalent_tests/executor/init_test.py b/tests/covalent_tests/executor/init_test.py index b752cba3d..0ac66e31d 100644 --- a/tests/covalent_tests/executor/init_test.py +++ b/tests/covalent_tests/executor/init_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for Covalent executor init file.""" diff --git a/tests/covalent_tests/file_transfer/file_transfer_test.py b/tests/covalent_tests/file_transfer/file_transfer_test.py index 82e71a669..746e490c9 100644 --- a/tests/covalent_tests/file_transfer/file_transfer_test.py +++ b/tests/covalent_tests/file_transfer/file_transfer_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest.mock import Mock diff --git a/tests/covalent_tests/file_transfer/strategies/base_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/base_strategy_test.py index 1703737a7..da133c021 100644 --- a/tests/covalent_tests/file_transfer/strategies/base_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/base_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest.mock import Mock diff --git a/tests/covalent_tests/file_transfer/strategies/blob_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/blob_strategy_test.py index 93ac117b5..71b2845a0 100644 --- a/tests/covalent_tests/file_transfer/strategies/blob_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/blob_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import sys from pathlib import Path diff --git a/tests/covalent_tests/file_transfer/strategies/gcloud_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/gcloud_strategy_test.py index 7d14347bb..0f6e6eaa8 100644 --- a/tests/covalent_tests/file_transfer/strategies/gcloud_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/gcloud_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import sys from pathlib import Path diff --git a/tests/covalent_tests/file_transfer/strategies/http_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/http_strategy_test.py index 5ef8bd8a9..615551a6b 100644 --- a/tests/covalent_tests/file_transfer/strategies/http_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/http_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest diff --git a/tests/covalent_tests/file_transfer/strategies/rsync_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/rsync_strategy_test.py index d1cb035c4..2ff56c9f7 100644 --- a/tests/covalent_tests/file_transfer/strategies/rsync_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/rsync_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from subprocess import CalledProcessError from unittest.mock import Mock @@ -141,18 +137,18 @@ def test_get_ssh_rsync_cmd_with_ssh_key(self, mocker): # commands take the form of rsync -s ssh ... [source] [destination] assert ( upload_cmd_with_key - == f'rsync -e "ssh -i {private_key_path}" {self.MOCK_LOCAL_FILEPATH} {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH}' + == f'rsync -ae "ssh -i {private_key_path}" {self.MOCK_LOCAL_FILEPATH} {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH}' ) assert ( download_cmd_with_key - == f'rsync -e "ssh -i {private_key_path}" {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH} {self.MOCK_LOCAL_FILEPATH}' + == f'rsync -ae "ssh -i {private_key_path}" {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH} {self.MOCK_LOCAL_FILEPATH}' ) assert ( upload_cmd_without_key - == f"rsync -e ssh {self.MOCK_LOCAL_FILEPATH} {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH}" + == f"rsync -ae ssh {self.MOCK_LOCAL_FILEPATH} {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH}" ) assert ( download_cmd_without_key - == f"rsync -e ssh {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH} {self.MOCK_LOCAL_FILEPATH}" + == f"rsync -ae ssh {self.MOCK_USER}@{self.MOCK_HOST}:{self.MOCK_REMOTE_FILEPATH} {self.MOCK_LOCAL_FILEPATH}" ) diff --git a/tests/covalent_tests/file_transfer/strategies/s3_strategy_test.py b/tests/covalent_tests/file_transfer/strategies/s3_strategy_test.py index d0799c963..27bc65bb6 100644 --- a/tests/covalent_tests/file_transfer/strategies/s3_strategy_test.py +++ b/tests/covalent_tests/file_transfer/strategies/s3_strategy_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import sys from unittest.mock import MagicMock diff --git a/tests/covalent_tests/results_manager_tests/results_manager_test.py b/tests/covalent_tests/results_manager_tests/results_manager_test.py index 7134cb555..203dea5b2 100644 --- a/tests/covalent_tests/results_manager_tests/results_manager_test.py +++ b/tests/covalent_tests/results_manager_tests/results_manager_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for results manager.""" diff --git a/tests/covalent_tests/results_manager_tests/results_test.py b/tests/covalent_tests/results_manager_tests/results_test.py index 205216d3b..3e2a493e2 100644 --- a/tests/covalent_tests/results_manager_tests/results_test.py +++ b/tests/covalent_tests/results_manager_tests/results_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the Result object.""" diff --git a/tests/covalent_tests/shared_files/config_test.py b/tests/covalent_tests/shared_files/config_test.py index e29cef0b9..e86c16b07 100644 --- a/tests/covalent_tests/shared_files/config_test.py +++ b/tests/covalent_tests/shared_files/config_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import tempfile from dataclasses import asdict @@ -29,6 +25,11 @@ DEFAULT_CONFIG = asdict(DefaultConfig()) +@pytest.fixture +def config_manager(): + return ConfigManager() + + @pytest.mark.parametrize( "dir_env, conf_dir", [ @@ -125,10 +126,10 @@ def test_set_config_dict_key(mocker): cm_write_config.call_count == 2 -def test_generate_default_config(mocker): +def test_generate_default_config(mocker, config_manager): """Tests that the default configuration was loaded.""" - cm = ConfigManager() + cm = config_manager cm_deepcopy_mock = mocker.patch("covalent._shared_files.config.copy.deepcopy", return_value={}) cm.generate_default_config() @@ -136,10 +137,10 @@ def test_generate_default_config(mocker): assert cm.config_data == DEFAULT_CONFIG -def test_read_config(mocker): +def test_read_config(mocker, config_manager): """Test the read_config method for the config manager.""" - cm = ConfigManager() + cm = config_manager test_data = {"test": "test"} toml_load_mock = mocker.patch( "covalent._shared_files.config.toml.load", return_value=test_data @@ -149,18 +150,18 @@ def test_read_config(mocker): assert cm.config_data == test_data -def test_get(): +def test_get(config_manager): """Test the get method for the config manager.""" - cm = ConfigManager() + cm = config_manager assert cm.get("dispatcher.port") == cm.config_data["dispatcher"]["port"] -def test_generate_default_config(): +def test_generate_default_config(config_manager): """Test that the default configuration was loaded.""" - cm = ConfigManager() + cm = config_manager cm.generate_default_config() assert cm.config_data == DEFAULT_CONFIG assert cm.config_data is not DEFAULT_CONFIG @@ -174,10 +175,10 @@ def test_reload_config(mocker): cm_read_config.assert_called_once_with() -def test_purge_config(mocker): +def test_purge_config(mocker, config_manager): """Test the purge_config method for config manager.""" - cm = ConfigManager() + cm = config_manager os_dir_mock = mocker.patch( "covalent._shared_files.config.os.path.dirname", return_value="mock_dir" ) @@ -187,12 +188,10 @@ def test_purge_config(mocker): rmtree_mock.assert_called_once_with("mock_dir", ignore_errors=True) -def test_get_config(): +def test_get_config(config_manager): """Test config retrieval function.""" - from covalent._shared_files.config import ConfigManager - - cm = ConfigManager() + cm = config_manager # Case 1 - Empty list assert get_config(entries=[]) == cm.config_data @@ -213,10 +212,10 @@ def test_get_config(): } -def test_write_config(mocker): +def test_write_config(mocker, config_manager): """Test the write_config method for config manager.""" - cm = ConfigManager() + cm = config_manager toml_dump_mock = mocker.patch("covalent._shared_files.config.toml.dump") open_mock = mocker.patch("covalent._shared_files.config.open") mock_file = open_mock.return_value.__enter__.return_value @@ -249,10 +248,10 @@ def test_update_config(mocker): cm.write_config.assert_called_once() -def test_config_manager_set(mocker): +def test_config_manager_set(mocker, config_manager): """Test the set method in config manager.""" - cm = ConfigManager() + cm = config_manager cm.config_data = {"mock_section": {"mock_dir": "initial_value"}} cm.set("mock_section.mock_dir", "final_value") assert cm.config_data == {"mock_section": {"mock_dir": "final_value"}} diff --git a/tests/covalent_tests/shared_files/defaults_test.py b/tests/covalent_tests/shared_files/defaults_test.py index dc0d351b8..3a4a02051 100644 --- a/tests/covalent_tests/shared_files/defaults_test.py +++ b/tests/covalent_tests/shared_files/defaults_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the defaults module""" diff --git a/tests/covalent_tests/shared_files/metrics_test.py b/tests/covalent_tests/shared_files/metrics_test.py index 73ada7255..e38144a8e 100644 --- a/tests/covalent_tests/shared_files/metrics_test.py +++ b/tests/covalent_tests/shared_files/metrics_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for metrics module.""" diff --git a/tests/covalent_tests/shared_files/utils_test.py b/tests/covalent_tests/shared_files/utils_test.py index 46613452b..6843ad94c 100644 --- a/tests/covalent_tests/shared_files/utils_test.py +++ b/tests/covalent_tests/shared_files/utils_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for Covalent shared util functions.""" diff --git a/tests/covalent_tests/triggers/__init__.py b/tests/covalent_tests/triggers/__init__.py index 9d1b05526..21d7eaa5c 100644 --- a/tests/covalent_tests/triggers/__init__.py +++ b/tests/covalent_tests/triggers/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_tests/triggers/base_test.py b/tests/covalent_tests/triggers/base_test.py index 46add54a4..fedca845f 100644 --- a/tests/covalent_tests/triggers/base_test.py +++ b/tests/covalent_tests/triggers/base_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest import mock diff --git a/tests/covalent_tests/triggers/dir_trigger_test.py b/tests/covalent_tests/triggers/dir_trigger_test.py index 330f8866f..78e7bcf1c 100644 --- a/tests/covalent_tests/triggers/dir_trigger_test.py +++ b/tests/covalent_tests/triggers/dir_trigger_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest import mock diff --git a/tests/covalent_tests/triggers/sqlite_trigger_test.py b/tests/covalent_tests/triggers/sqlite_trigger_test.py index 2b9e38ff6..f4f38764f 100644 --- a/tests/covalent_tests/triggers/sqlite_trigger_test.py +++ b/tests/covalent_tests/triggers/sqlite_trigger_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from sqlite3 import OperationalError diff --git a/tests/covalent_tests/triggers/time_trigger_test.py b/tests/covalent_tests/triggers/time_trigger_test.py index 2984bd4a2..44743ca27 100644 --- a/tests/covalent_tests/triggers/time_trigger_test.py +++ b/tests/covalent_tests/triggers/time_trigger_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from functools import partial from unittest import mock diff --git a/tests/covalent_tests/triggers/trigger_loader_test.py b/tests/covalent_tests/triggers/trigger_loader_test.py index 7a2eb5aff..8153795a4 100644 --- a/tests/covalent_tests/triggers/trigger_loader_test.py +++ b/tests/covalent_tests/triggers/trigger_loader_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest import mock diff --git a/tests/covalent_tests/workflow/__init__.py b/tests/covalent_tests/workflow/__init__.py index 523f77622..cfc23bfdf 100644 --- a/tests/covalent_tests/workflow/__init__.py +++ b/tests/covalent_tests/workflow/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_tests/workflow/dispatch_source_test.py b/tests/covalent_tests/workflow/dispatch_source_test.py index e1089ebf1..94d588b6b 100644 --- a/tests/covalent_tests/workflow/dispatch_source_test.py +++ b/tests/covalent_tests/workflow/dispatch_source_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for writing the dispatch_source.py file""" diff --git a/tests/covalent_tests/workflow/electron_metadata_test.py b/tests/covalent_tests/workflow/electron_metadata_test.py index fd404044e..2d18812f5 100644 --- a/tests/covalent_tests/workflow/electron_metadata_test.py +++ b/tests/covalent_tests/workflow/electron_metadata_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests to test whether electrons inherit lattice metadata correctly""" diff --git a/tests/covalent_tests/workflow/electron_test.py b/tests/covalent_tests/workflow/electron_test.py index 622c03cdb..ddc457c5b 100644 --- a/tests/covalent_tests/workflow/electron_test.py +++ b/tests/covalent_tests/workflow/electron_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for electron""" diff --git a/tests/covalent_tests/workflow/lattice_serialization_test.py b/tests/covalent_tests/workflow/lattice_serialization_test.py index 339e8ce57..8cb833458 100644 --- a/tests/covalent_tests/workflow/lattice_serialization_test.py +++ b/tests/covalent_tests/workflow/lattice_serialization_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct from covalent._workflow.lattice import Lattice diff --git a/tests/covalent_tests/workflow/lattice_test.py b/tests/covalent_tests/workflow/lattice_test.py index 04ee91058..684c9c9c5 100644 --- a/tests/covalent_tests/workflow/lattice_test.py +++ b/tests/covalent_tests/workflow/lattice_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for lattice""" diff --git a/tests/covalent_tests/workflow/lepton_test.py b/tests/covalent_tests/workflow/lepton_test.py index fff93359a..f727a4d82 100644 --- a/tests/covalent_tests/workflow/lepton_test.py +++ b/tests/covalent_tests/workflow/lepton_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for leptons.""" diff --git a/tests/covalent_tests/workflow/postprocessing_test.py b/tests/covalent_tests/workflow/postprocessing_test.py index eb016638b..0ba99f03c 100644 --- a/tests/covalent_tests/workflow/postprocessing_test.py +++ b/tests/covalent_tests/workflow/postprocessing_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for the preprocessing module.""" diff --git a/tests/covalent_tests/workflow/transport_graph_ops_test.py b/tests/covalent_tests/workflow/transport_graph_ops_test.py index 80cbbe391..e12a5e8eb 100644 --- a/tests/covalent_tests/workflow/transport_graph_ops_test.py +++ b/tests/covalent_tests/workflow/transport_graph_ops_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for transport graph operations module.""" diff --git a/tests/covalent_tests/workflow/transport_test.py b/tests/covalent_tests/workflow/transport_test.py index 86ffcbaa3..7b71b0483 100644 --- a/tests/covalent_tests/workflow/transport_test.py +++ b/tests/covalent_tests/workflow/transport_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Unit tests for transport graph.""" diff --git a/tests/covalent_ui_backend_tests/__init__.py b/tests/covalent_ui_backend_tests/__init__.py index 489b98a2a..fd1fb7616 100644 --- a/tests/covalent_ui_backend_tests/__init__.py +++ b/tests/covalent_ui_backend_tests/__init__.py @@ -2,19 +2,16 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from covalent_ui.app import fastapi_app diff --git a/tests/covalent_ui_backend_tests/end_points/electrons_test.py b/tests/covalent_ui_backend_tests/end_points/electrons_test.py index a559b1abb..af3b363e6 100644 --- a/tests/covalent_ui_backend_tests/end_points/electrons_test.py +++ b/tests/covalent_ui_backend_tests/end_points/electrons_test.py @@ -2,24 +2,23 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Electron test""" +import datetime + import pytest +from numpy import array from covalent_dispatcher._db.datastore import DataStore from tests.covalent_ui_backend_tests import fastapi_app @@ -63,6 +62,8 @@ def test_electrons(): ) assert response.status_code == test_data["status_code"] if "response_data" in test_data: + print("sam response ", response.json()) + print("sam data ", test_data["response_data"]) assert response.json() == test_data["response_data"] @@ -287,3 +288,134 @@ def test_electrons_inputs_bad_request(): assert response.status_code == test_data["status_code"] if test_data["response_data"]: assert response.json() == test_data["response_data"] + + +mock_input_data_jobs = { + "circuit_0@b72cce1f-a73f-4f3e-8de2-c31cf1d5092f": { + "electron_node_id": "0", + "dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "circuit_name": "qkernel", + "circuit_description": None, + "circuit_diagram": "0: ──RX──RX─┤ ╭Probs\n1: ──RX──RX─┤ ├Probs\n2: ──RX──RX─┤ ├Probs\n3: ──RX──RX─┤ ├Probs\n4: ──RX──RX─┤ ╰Probs", + "qnode_specs": { + "gate_sizes": {"5": 2}, + "gate_types": {"AngleEmbedding": 1, "Adjoint(AngleEmbedding)": 1}, + "num_operations": 2, + "num_observables": 1, + "num_diagonalizing_gates": 0, + "num_used_wires": 5, + "depth": 2, + "num_trainable_params": 0, + "num_device_wires": 5, + "device_name": "qe_device", + "diff_method": "best", + "expansion_strategy": "gradient", + "gradient_options": {}, + "interface": "auto", + "gradient_fn": "none", + "num_gradient_executions": 0, + "num_parameter_shift_executions": None, + }, + "qexecutor": { + "persist_data": True, + "qnode_device_import_path": "pennylane.devices.default_qubit:DefaultQubit", + "qnode_device_shots": None, + "qnode_device_wires": 5, + "pennylane_active_return": True, + "device": "default.qubit", + "parallel": "thread", + "workers": 10, + "shots": 0, + "name": "Simulator", + "_backend": { + "persist_data": True, + "qnode_device_import_path": "pennylane.devices.default_qubit:DefaultQubit", + "qnode_device_shots": None, + "qnode_device_wires": 5, + "pennylane_active_return": True, + "device": "default.qubit", + "num_threads": 10, + "name": "BaseThreadPoolQExecutor", + }, + }, + "save_time": datetime.datetime(2023, 8, 11, 15, 38, 55, 798495), + "circuit_id": "circuit_0@b72cce1f-a73f-4f3e-8de2-c31cf1d5092f", + "qscript": "RX!8.692890013151683![0]RX!1.5432201574818243![1]RX!9.785937231907651![2]RX!3.148843240541814![3]RX!4.573246180972299![4]RX!0.9098741371966934![4]RX!2.7169925354199522![3]RX!11.084343055037124![2]RX!-9.685382030597465![1]RX!5.623777349527314![0]|||ObservableReturnTypes.Probability!Identity[0, 1, 2, 3, 4]", + "execution_time": 0.0021365240000363883, + "result": [ + array( + [ + 0.0337228, + 0.00602918, + 0.00151217, + 0.00027036, + 0.08562897, + 0.0153093, + 0.00383971, + 0.00068649, + 0.06050233, + 0.010817, + 0.002713, + 0.00048505, + 0.1536276, + 0.02746654, + 0.00688885, + 0.00123163, + 0.04838155, + 0.00864997, + 0.00216949, + 0.00038787, + 0.12285049, + 0.02196401, + 0.00550876, + 0.00098489, + 0.08680171, + 0.01551897, + 0.00389229, + 0.00069589, + 0.22040701, + 0.0394058, + 0.00988331, + 0.001767, + ] + ) + ], + "result_metadata": { + "execution_metadata": [[]], + "device_name": "default.qubit", + "executor_name": "BaseThreadPoolQExecutor", + "executor_backend_name": "", + }, + } +} + + +@pytest.fixture +def qelectron_mocked_data_for_jobs(mocker): + from covalent.quantum.qserver.database import Database + + return mocker.patch.object(Database, "get_db", return_value=mock_input_data_jobs) + + +def test_get_qelectrons_jobs(qelectron_mocked_data_for_jobs): + test_data = output_data["test_get_qelectrons_jobs"]["case_1"] + response = object_test_template( + api_path=output_data["test_get_qelectrons_jobs"]["api_path"], + app=fastapi_app, + method_type=MethodType.GET, + path=test_data["path"], + ) + assert response.status_code == test_data["status_code"] + assert response.json() == test_data["response_data"] + + +def test_get_qelectron_job_detail(qelectron_mocked_data_for_jobs): + test_data = output_data["test_get_qelectron_job_detail"]["case_1"] + response = object_test_template( + api_path=output_data["test_get_qelectron_job_detail"]["api_path"], + app=fastapi_app, + method_type=MethodType.GET, + path=test_data["path"], + ) + assert response.status_code == test_data["status_code"] + assert response.json() == test_data["response_data"] diff --git a/tests/covalent_ui_backend_tests/end_points/graph_test.py b/tests/covalent_ui_backend_tests/end_points/graph_test.py index 5c1882b25..a650381ec 100644 --- a/tests/covalent_ui_backend_tests/end_points/graph_test.py +++ b/tests/covalent_ui_backend_tests/end_points/graph_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Graph test""" diff --git a/tests/covalent_ui_backend_tests/end_points/lattices_test.py b/tests/covalent_ui_backend_tests/end_points/lattices_test.py index 7430ee157..5bcc50d49 100644 --- a/tests/covalent_ui_backend_tests/end_points/lattices_test.py +++ b/tests/covalent_ui_backend_tests/end_points/lattices_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattices test""" from os.path import abspath, dirname diff --git a/tests/covalent_ui_backend_tests/end_points/logs_test.py b/tests/covalent_ui_backend_tests/end_points/logs_test.py index d95daefe2..93dc2e360 100644 --- a/tests/covalent_ui_backend_tests/end_points/logs_test.py +++ b/tests/covalent_ui_backend_tests/end_points/logs_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Logs Test""" import pytest diff --git a/tests/covalent_ui_backend_tests/end_points/main_test.py b/tests/covalent_ui_backend_tests/end_points/main_test.py index 718d04121..d377897d7 100644 --- a/tests/covalent_ui_backend_tests/end_points/main_test.py +++ b/tests/covalent_ui_backend_tests/end_points/main_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Main Test""" diff --git a/tests/covalent_ui_backend_tests/end_points/settings_test.py b/tests/covalent_ui_backend_tests/end_points/settings_test.py index e0dcd2a3b..f82978698 100644 --- a/tests/covalent_ui_backend_tests/end_points/settings_test.py +++ b/tests/covalent_ui_backend_tests/end_points/settings_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Settings API""" diff --git a/tests/covalent_ui_backend_tests/end_points/summary_test.py b/tests/covalent_ui_backend_tests/end_points/summary_test.py index 8710bafe8..5f18264b7 100644 --- a/tests/covalent_ui_backend_tests/end_points/summary_test.py +++ b/tests/covalent_ui_backend_tests/end_points/summary_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Summary Test""" @@ -63,7 +59,7 @@ class MockLattice(MockBase): completed_at = Column(DateTime) -@pytest.mark.skip(reason="Need to fix the test") +@pytest.mark.skip(reason="TODO: Need to fix this test. See failing tests in PR #1778.") def test_overview(): """Test overview""" test_data = output_data["test_overview"]["case1"] @@ -128,11 +124,6 @@ def test_list_invalid_count(): query_data=test_data["request_data"]["query"], ) assert response.status_code == test_data["status_code"] - if "response_data" in test_data: - api_response = response.json() - mock_response = test_data["response_data"] - del api_response["detail"][0]["url"] - assert api_response == mock_response def test_list_search(): diff --git a/tests/covalent_ui_backend_tests/functional_tests/file_handle_test.py b/tests/covalent_ui_backend_tests/functional_tests/file_handle_test.py index 833697842..97067e951 100644 --- a/tests/covalent_ui_backend_tests/functional_tests/file_handle_test.py +++ b/tests/covalent_ui_backend_tests/functional_tests/file_handle_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattice functional test""" diff --git a/tests/covalent_ui_backend_tests/functional_tests/logs_functional_test.py b/tests/covalent_ui_backend_tests/functional_tests/logs_functional_test.py index df72aac28..f3ef436cc 100644 --- a/tests/covalent_ui_backend_tests/functional_tests/logs_functional_test.py +++ b/tests/covalent_ui_backend_tests/functional_tests/logs_functional_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Logs functional test""" diff --git a/tests/covalent_ui_backend_tests/functional_tests/webhook_test.py b/tests/covalent_ui_backend_tests/functional_tests/webhook_test.py index cca01cf97..093820320 100644 --- a/tests/covalent_ui_backend_tests/functional_tests/webhook_test.py +++ b/tests/covalent_ui_backend_tests/functional_tests/webhook_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Result webhook functional test""" diff --git a/tests/covalent_ui_backend_tests/utils/__init__.py b/tests/covalent_ui_backend_tests/utils/__init__.py index 523f77622..cfc23bfdf 100644 --- a/tests/covalent_ui_backend_tests/utils/__init__.py +++ b/tests/covalent_ui_backend_tests/utils/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/__init__.py b/tests/covalent_ui_backend_tests/utils/assert_data/__init__.py index 523f77622..cfc23bfdf 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/__init__.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/config_data.py b/tests/covalent_ui_backend_tests/utils/assert_data/config_data.py index 743833cb0..7dfcfe6db 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/config_data.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/config_data.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Config data""" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/electrons.py b/tests/covalent_ui_backend_tests/utils/assert_data/electrons.py index b71a1d709..61de28089 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/electrons.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/electrons.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Electrons mock data" @@ -48,6 +44,8 @@ def seed_electron_data(): "ended_at": "2022-09-23T10:01:11.483405", "runtime": 0, "description": "", + "qelectron": None, + "qelectron_data_exists": False, }, }, "case_invalid": { @@ -213,7 +211,7 @@ def seed_electron_data(): "electron_id": VALID_NODE_ID, "name": "results", }, - "response_message": "Input should be 'function_string','function','executor','result','value','stdout','deps','call_before','call_after','error','info' or 'inputs'", + "response_message": "value is not a valid enumeration member; permitted: 'function_string', 'function', 'executor', 'result', 'value', 'stdout', 'deps', 'call_before', 'call_after', 'error', 'info', 'inputs'", }, "case_invalid": { "status_code": 400, @@ -233,4 +231,51 @@ def seed_electron_data(): }, }, }, + "test_get_qelectrons_jobs": { + "api_path": "/api/v1/dispatches/{}/electron/{}/jobs", + "case_1": { + "status_code": 200, + "path": {"dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", "node_id": 0}, + "response_data": [ + { + "job_id": "circuit_0@b72cce1f-a73f-4f3e-8de2-c31cf1d5092f", + "start_time": "2023-08-11T15:38:55.798495", + "executor": "BaseThreadPoolQExecutor", + "status": "COMPLETED", + } + ], + }, + }, + "test_get_qelectron_job_detail": { + "api_path": "/api/v1/dispatches/{}/electron/{}/jobs/{}", + "case_1": { + "status_code": 200, + "path": { + "dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "node_id": 0, + "job_id": "circuit_0@b72cce1f-a73f-4f3e-8de2-c31cf1d5092f", + }, + "response_data": { + "overview": { + "job_name": "qkernel", + "backend": "", + "time_elapsed": 0.0021365240000363883, + "result": "array([0.0337228 , 0.00602918, 0.00151217, 0.00027036, 0.08562897,\n 0.0153093 , 0.00383971, 0.00068649, 0.06050233, 0.010817 ,\n 0.002713 , 0.00048505, 0.1536276 , 0.02746654, 0.00688885,\n 0.00123163, 0.04838155, 0.00864997, 0.00216949, 0.00038787,\n 0.12285049, 0.02196401, 0.00550876, 0.00098489, 0.08680171,\n 0.01551897, 0.00389229, 0.00069589, 0.22040701, 0.0394058 ,\n 0.00988331, 0.001767 ])", + "status": "COMPLETED", + "start_time": "2023-08-11T15:38:55.798495", + "end_time": "2023-08-11T15:38:55.800632", + }, + "circuit": { + "total_qbits": 5, + "depth": 2, + "circuit_diagram": "0: ──RX──RX─┤ ╭Probs\n1: ──RX──RX─┤ ├Probs\n2: ──RX──RX─┤ ├Probs\n3: ──RX──RX─┤ ├Probs\n4: ──RX──RX─┤ ╰Probs", + "qbit5_gates": 2, + }, + "executor": { + "name": "Simulator", + "executor": "{'persist_data': True, 'qnode_device_import_path': 'pennylane.devices.default_qubit:DefaultQubit', 'qnode_device_shots': None, 'qnode_device_wires': 5, 'pennylane_active_return': True, 'device': 'default.qubit', 'parallel': 'thread', 'workers': 10, 'shots': 0, 'name': 'Simulator', '_backend': {'persist_data': True, 'qnode_device_import_path': 'pennylane.devices.default_qubit:DefaultQubit', 'qnode_device_shots': None, 'qnode_device_wires': 5, 'pennylane_active_return': True, 'device': 'default.qubit', 'num_threads': 10, 'name': 'BaseThreadPoolQExecutor'}}", + }, + }, + }, + }, } diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/file_handle.py b/tests/covalent_ui_backend_tests/utils/assert_data/file_handle.py index 5c4a35909..aa1aa1685 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/file_handle.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/file_handle.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "File Handler mock data" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/graph.py b/tests/covalent_ui_backend_tests/utils/assert_data/graph.py index d3e6db55b..a03741571 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/graph.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/graph.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Graph mock data""" @@ -48,6 +44,7 @@ def seed_graph_data(): "type": "function", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, { "id": 2, @@ -59,6 +56,7 @@ def seed_graph_data(): "type": "function", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, { "id": 3, @@ -70,6 +68,7 @@ def seed_graph_data(): "type": "parameter", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, { "id": 4, @@ -81,6 +80,7 @@ def seed_graph_data(): "type": "function", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, { "id": 5, @@ -92,6 +92,7 @@ def seed_graph_data(): "type": "function", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, { "id": 6, @@ -103,6 +104,7 @@ def seed_graph_data(): "type": "parameter", "executor_label": "dask", "sublattice_dispatch_id": None, + "qelectron_data_exists": 0, }, ], "links": [ diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/lattices.py b/tests/covalent_ui_backend_tests/utils/assert_data/lattices.py index 7686362de..1c04f490a 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/lattices.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/lattices.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lattice mock data""" @@ -139,7 +135,7 @@ def seed_lattice_data(): "dispatch_id": VALID_DISPATCH_ID, "name": "results", }, - "response_message": "Input should be 'result','function_string','inputs','error','executor','workflow_executor','function' or 'transport_graph'", + "response_message": "value is not a valid enumeration member; permitted: 'result', 'function_string', 'inputs', 'error', 'executor', 'workflow_executor', 'function', 'transport_graph'", }, "case_bad_request": { "status_code": 400, @@ -164,7 +160,7 @@ def seed_lattice_data(): "total_electrons": 120, "total_electrons_completed": 120, "started_at": "2022-10-27T10:08:38.759335", - "ended_at": lattice_end_date, + "ended_at": "2022-10-27T10:08:43.877056", "status": "COMPLETED", "updated_at": "2022-10-27T10:08:43.890454", }, @@ -177,7 +173,7 @@ def seed_lattice_data(): "started_at": "2022-10-27T10:08:34.497285", "ended_at": "2022-10-27T10:08:35.997225", "status": "COMPLETED", - "updated_at": "2022-10-27T10:08:36.00403", + "updated_at": "2022-10-27T10:08:36.004030", }, ] }, @@ -197,7 +193,7 @@ def seed_lattice_data(): "started_at": "2022-10-27T10:08:34.497285", "ended_at": "2022-10-27T10:08:35.997225", "status": "COMPLETED", - "updated_at": "2022-10-27T10:08:36.00403", + "updated_at": "2022-10-27T10:08:36.004030", }, { "dispatch_id": "69dec597-79d9-4c99-96de-8d5f06f3d4dd", @@ -206,7 +202,7 @@ def seed_lattice_data(): "total_electrons": 120, "total_electrons_completed": 120, "started_at": "2022-10-27T10:08:38.759335", - "ended_at": lattice_end_date, + "ended_at": "2022-10-27T10:08:43.877056", "status": "COMPLETED", "updated_at": "2022-10-27T10:08:43.890454", }, diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/logs.py b/tests/covalent_ui_backend_tests/utils/assert_data/logs.py index e701efc1e..ada27bb1b 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/logs.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/logs.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Logs mock data" import copy diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/main.py b/tests/covalent_ui_backend_tests/utils/assert_data/main.py index 708cfecca..74f40b962 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/main.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/main.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Main app mock data" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/sample_result_webhook.py b/tests/covalent_ui_backend_tests/utils/assert_data/sample_result_webhook.py index 97f9d47fa..eff9557e4 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/sample_result_webhook.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/sample_result_webhook.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Result Webhook mock data" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/service_app.py b/tests/covalent_ui_backend_tests/utils/assert_data/service_app.py index f3ad0a875..cc3e6a75e 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/service_app.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/service_app.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Service app mock data" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/settings.py b/tests/covalent_ui_backend_tests/utils/assert_data/settings.py index 152096915..ca6702a9a 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/settings.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/settings.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Settings mock data""" diff --git a/tests/covalent_ui_backend_tests/utils/assert_data/summary.py b/tests/covalent_ui_backend_tests/utils/assert_data/summary.py index cdb71ab01..7b5bc0b29 100644 --- a/tests/covalent_ui_backend_tests/utils/assert_data/summary.py +++ b/tests/covalent_ui_backend_tests/utils/assert_data/summary.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. "Summary mock data" @@ -38,9 +34,9 @@ def seed_summary_data(): "case1": { "status_code": 200, "response_data": { - "total_jobs": 2, + "total_jobs": 3, "total_jobs_running": 0, - "total_jobs_completed": 2, + "total_jobs_completed": 3, "total_jobs_failed": 0, "total_jobs_cancelled": 0, "total_jobs_new_object": 0, @@ -76,7 +72,7 @@ def seed_summary_data(): "updated_at": "2022-10-27T10:08:43.997619", }, { - "dispatch_id": VALID_DISPATCH_ID, + "dispatch_id": "78525234-72ec-42dc-94a0-f4751707f9cd", "lattice_name": "workflow", "runtime": 0, "total_electrons": 6, @@ -84,10 +80,21 @@ def seed_summary_data(): "started_at": "2022-09-23T10:01:11.155428", "ended_at": "2022-09-23T10:01:11.717064", "status": "COMPLETED", - "updated_at": "2022-09-23T10:01:11.72014", + "updated_at": "2022-09-23T10:01:11.720140", + }, + { + "dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "lattice_name": "workflow", + "runtime": 0, + "total_electrons": 2, + "total_electrons_completed": 2, + "started_at": "2023-08-10T10:08:55.420784", + "ended_at": "2023-08-10T10:08:55.902257", + "status": "COMPLETED", + "updated_at": "2023-08-10T10:08:55.946668", }, ], - "total_count": 2, + "total_count": 3, }, }, "case2": { @@ -103,7 +110,7 @@ def seed_summary_data(): "response_data": { "items": [ { - "dispatch_id": VALID_DISPATCH_ID, + "dispatch_id": "78525234-72ec-42dc-94a0-f4751707f9cd", "lattice_name": "workflow", "runtime": 0, "total_electrons": 6, @@ -111,10 +118,10 @@ def seed_summary_data(): "started_at": "2022-09-23T10:01:11.155428", "ended_at": "2022-09-23T10:01:11.717064", "status": "COMPLETED", - "updated_at": "2022-09-23T10:01:11.72014", + "updated_at": "2022-09-23T10:01:11.720140", } ], - "total_count": 2, + "total_count": 3, }, }, "case3": { @@ -129,7 +136,7 @@ def seed_summary_data(): "status_filter": "ALL", } }, - "response_message": "Input should be greater than -1", + "response_message": "ensure this value is greater than -1", }, "case4": { "status_code": 422, @@ -145,11 +152,10 @@ def seed_summary_data(): "response_data": { "detail": [ { - "type": "greater_than", "loc": ["query", "count"], - "msg": "Input should be greater than 0", - "input": "0", - "ctx": {"gt": 0}, + "msg": "ensure this value is greater than 0", + "type": "value_error.number.not_gt", + "ctx": {"limit_value": 0}, } ] }, @@ -207,7 +213,7 @@ def seed_summary_data(): ] } }, - "response_message": "Input should be an instance of UUID", + "response_message": "value is not a valid uuid", }, "case5": { "status_code": 200, @@ -261,9 +267,10 @@ def seed_summary_data(): "response_data": { "success_items": [ "69dec597-79d9-4c99-96de-8d5f06f3d4dd", + "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", ], "failure_items": [], - "message": messages["success"], + "message": "Dispatch(es) have been deleted successfully!", }, }, "case2": { @@ -296,7 +303,7 @@ def seed_summary_data(): "case5": { "status_code": 422, "request_data": {"body": {"status_filter": "failed"}}, - "response_message": "Input should be 'ALL','NEW_OBJECT','COMPLETED','POSTPROCESSING','PENDING_POSTPROCESSING','POSTPROCESSING_FAILED','FAILED','RUNNING' or 'CANCELLED'", + "response_message": "value is not a valid enumeration member; permitted: 'ALL', 'NEW_OBJECT', 'COMPLETED', 'POSTPROCESSING', 'PENDING_POSTPROCESSING', 'POSTPROCESSING_FAILED', 'FAILED', 'RUNNING', 'CANCELLED'", }, "case6": { "status_code": 200, diff --git a/tests/covalent_ui_backend_tests/utils/client_template.py b/tests/covalent_ui_backend_tests/utils/client_template.py index 0b9d994a3..1a78a8d06 100644 --- a/tests/covalent_ui_backend_tests/utils/client_template.py +++ b/tests/covalent_ui_backend_tests/utils/client_template.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Client Template""" diff --git a/tests/covalent_ui_backend_tests/utils/data/electron_dependency.json b/tests/covalent_ui_backend_tests/utils/data/electron_dependency.json index a58c12673..a7670c42c 100644 --- a/tests/covalent_ui_backend_tests/utils/data/electron_dependency.json +++ b/tests/covalent_ui_backend_tests/utils/data/electron_dependency.json @@ -1406,5 +1406,16 @@ "is_active": 1, "updated_at": "2022-10-27 10:08:38.719614", "created_at": "2022-10-27 10:08:38.719609" - } + }, + { + "arg_index": 0, + "created_at": "2023-08-10 10:08:55.410357", + "edge_name": "arg[0]", + "electron_id": 152, + "id": 129, + "is_active": 1, + "parameter_type": "arg", + "parent_electron_id": 151, + "updated_at": "2023-08-10 10:08:55.410363" +} ] diff --git a/tests/covalent_ui_backend_tests/utils/data/electrons.json b/tests/covalent_ui_backend_tests/utils/data/electrons.json index c7d1a0c08..430dbfd6e 100644 --- a/tests/covalent_ui_backend_tests/utils/data/electrons.json +++ b/tests/covalent_ui_backend_tests/utils/data/electrons.json @@ -1,4202 +1,4410 @@ [ - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.483405", - "created_at": "2022-09-23 10:01:11.062647", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 1, - "info_filename": "info.log", - "is_active": 1, - "name": "hello", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.168972", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_0", - "storage_type": "local", - "transport_graph_node_id": 0, - "type": "function", - "updated_at": "2022-09-23 10:01:11.490513", - "value_filename": "value.pkl", - "job_id":0 - }, - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.520838", - "created_at": "2022-09-23 10:01:11.075465", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 2, - "info_filename": "info.log", - "is_active": 1, - "name": "moniker", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.264347", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_1", - "storage_type": "local", - "transport_graph_node_id": 1, - "type": "function", - "updated_at": "2022-09-23 10:01:11.526865", - "value_filename": "value.pkl", - "job_id":0 - }, - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.194419", - "created_at": "2022-09-23 10:01:11.085971", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 3, - "info_filename": "info.log", - "is_active": 1, - "name": ":parameter:shore", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.194417", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_2", - "storage_type": "local", - "transport_graph_node_id": 2, - "type": "parameter", - "updated_at": "2022-09-23 10:01:11.197121", - "value_filename": "value.pkl", - "job_id":1 - }, - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.588248", - "created_at": "2022-09-23 10:01:11.098325", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 4, - "info_filename": "info.log", - "is_active": 1, - "name": "join", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.553084", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_3", - "storage_type": "local", - "transport_graph_node_id": 3, - "type": "function", - "updated_at": "2022-09-23 10:01:11.591516", - "value_filename": "value.pkl", - "job_id":2 - }, - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.640049", - "created_at": "2022-09-23 10:01:11.109305", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 5, - "info_filename": "info.log", - "is_active": 1, - "name": "join_+_ !!", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.611520", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_4", - "storage_type": "local", - "transport_graph_node_id": 4, - "type": "function", - "updated_at": "2022-09-23 10:01:11.642760", - "value_filename": "value.pkl", - "job_id":3 - }, - { - "call_after_filename": "call_after.pkl", - "call_before_filename": "call_before.pkl", - "completed_at": "2022-09-23 10:01:11.226986", - "created_at": "2022-09-23 10:01:11.121100", - "deps_filename": "deps.pkl", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "id": 6, - "info_filename": "info.log", - "is_active": 1, - "name": ":parameter: !!", - "parent_lattice_id": 1, - "results_filename": "results.pkl", - "started_at": "2022-09-23 10:01:11.226984", - "status": "COMPLETED", - "stderr_filename": "stderr.log", - "stdout_filename": "stdout.log", - "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_5", - "storage_type": "local", - "transport_graph_node_id": 5, - "type": "parameter", - "updated_at": "2022-09-23 10:01:11.229709", - "value_filename": "value.pkl", - "job_id":4 - }, - { - "id": 7, - "parent_lattice_id": 2, - "transport_graph_node_id": 0, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_0", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:33.721544", - "updated_at": "2022-10-27 10:08:33.937039", - "started_at": "2022-10-27 10:08:33.861837", - "completed_at": "2022-10-27 10:08:33.933100", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":5 - }, - { - "id": 8, - "parent_lattice_id": 2, - "transport_graph_node_id": 1, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_1", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:33.737909", - "updated_at": "2022-10-27 10:08:33.832449", - "started_at": "2022-10-27 10:08:33.827366", - "completed_at": "2022-10-27 10:08:33.827372", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":6 - }, - { - "id": 9, - "parent_lattice_id": 2, - "transport_graph_node_id": 2, - "type": "sublattice", - "name": ":sublattice:sub", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_2", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:33.754840", - "updated_at": "2022-10-27 10:08:36.033792", - "started_at": "2022-10-27 10:08:33.967565", - "completed_at": "2022-10-27 10:08:36.028194", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 10, - "parent_lattice_id": 2, - "transport_graph_node_id": 3, - "type": "sublattice", - "name": ":sublattice:sub", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_3", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:33.769064", - "updated_at": "2022-10-27 10:08:43.907507", - "started_at": "2022-10-27 10:08:36.065830", - "completed_at": "2022-10-27 10:08:43.905519", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 11, - "parent_lattice_id": 3, - "transport_graph_node_id": 0, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_0", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.121824", - "updated_at": "2022-10-27 10:08:35.166045", - "started_at": "2022-10-27 10:08:34.939603", - "completed_at": "2022-10-27 10:08:35.159092", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 12, - "parent_lattice_id": 3, - "transport_graph_node_id": 1, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_1", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.141566", - "updated_at": "2022-10-27 10:08:34.530775", - "started_at": "2022-10-27 10:08:34.523975", - "completed_at": "2022-10-27 10:08:34.523987", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 13, - "parent_lattice_id": 3, - "transport_graph_node_id": 2, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_2", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.157807", - "updated_at": "2022-10-27 10:08:35.245235", - "started_at": "2022-10-27 10:08:34.968949", - "completed_at": "2022-10-27 10:08:35.238154", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 14, - "parent_lattice_id": 3, - "transport_graph_node_id": 3, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_3", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.174837", - "updated_at": "2022-10-27 10:08:34.582442", - "started_at": "2022-10-27 10:08:34.576178", - "completed_at": "2022-10-27 10:08:34.576181", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 15, - "parent_lattice_id": 3, - "transport_graph_node_id": 4, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_4", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.193334", - "updated_at": "2022-10-27 10:08:35.326034", - "started_at": "2022-10-27 10:08:35.011096", - "completed_at": "2022-10-27 10:08:35.324016", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 16, - "parent_lattice_id": 3, - "transport_graph_node_id": 5, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_5", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.210810", - "updated_at": "2022-10-27 10:08:34.618496", - "started_at": "2022-10-27 10:08:34.614049", - "completed_at": "2022-10-27 10:08:34.614051", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 17, - "parent_lattice_id": 3, - "transport_graph_node_id": 6, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_6", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.225974", - "updated_at": "2022-10-27 10:08:35.414015", - "started_at": "2022-10-27 10:08:35.058712", - "completed_at": "2022-10-27 10:08:35.408068", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 18, - "parent_lattice_id": 3, - "transport_graph_node_id": 7, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_7", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.243921", - "updated_at": "2022-10-27 10:08:34.656399", - "started_at": "2022-10-27 10:08:34.647511", - "completed_at": "2022-10-27 10:08:34.647516", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 19, - "parent_lattice_id": 3, - "transport_graph_node_id": 8, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_8", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.262261", - "updated_at": "2022-10-27 10:08:35.564214", - "started_at": "2022-10-27 10:08:35.109570", - "completed_at": "2022-10-27 10:08:35.558177", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 20, - "parent_lattice_id": 3, - "transport_graph_node_id": 9, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_9", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.279546", - "updated_at": "2022-10-27 10:08:34.696612", - "started_at": "2022-10-27 10:08:34.689654", - "completed_at": "2022-10-27 10:08:34.689659", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 21, - "parent_lattice_id": 3, - "transport_graph_node_id": 10, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_10", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.300588", - "updated_at": "2022-10-27 10:08:35.525729", - "started_at": "2022-10-27 10:08:35.193220", - "completed_at": "2022-10-27 10:08:35.514718", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 22, - "parent_lattice_id": 3, - "transport_graph_node_id": 11, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_11", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.319777", - "updated_at": "2022-10-27 10:08:34.737932", - "started_at": "2022-10-27 10:08:34.729529", - "completed_at": "2022-10-27 10:08:34.729533", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 23, - "parent_lattice_id": 3, - "transport_graph_node_id": 12, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_12", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.337839", - "updated_at": "2022-10-27 10:08:35.682213", - "started_at": "2022-10-27 10:08:35.287892", - "completed_at": "2022-10-27 10:08:35.673424", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 24, - "parent_lattice_id": 3, - "transport_graph_node_id": 13, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_13", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.357823", - "updated_at": "2022-10-27 10:08:34.777085", - "started_at": "2022-10-27 10:08:34.769243", - "completed_at": "2022-10-27 10:08:34.769254", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 25, - "parent_lattice_id": 3, - "transport_graph_node_id": 14, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_14", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.374314", - "updated_at": "2022-10-27 10:08:35.774775", - "started_at": "2022-10-27 10:08:35.354986", - "completed_at": "2022-10-27 10:08:35.763519", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 26, - "parent_lattice_id": 3, - "transport_graph_node_id": 15, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_15", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.390256", - "updated_at": "2022-10-27 10:08:34.818988", - "started_at": "2022-10-27 10:08:34.810072", - "completed_at": "2022-10-27 10:08:34.810076", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 27, - "parent_lattice_id": 3, - "transport_graph_node_id": 16, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_16", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.406105", - "updated_at": "2022-10-27 10:08:35.818772", - "started_at": "2022-10-27 10:08:35.447829", - "completed_at": "2022-10-27 10:08:35.809561", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 28, - "parent_lattice_id": 3, - "transport_graph_node_id": 17, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_17", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.424469", - "updated_at": "2022-10-27 10:08:34.860444", - "started_at": "2022-10-27 10:08:34.853785", - "completed_at": "2022-10-27 10:08:34.853790", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 29, - "parent_lattice_id": 3, - "transport_graph_node_id": 18, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_18", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.442225", - "updated_at": "2022-10-27 10:08:35.872264", - "started_at": "2022-10-27 10:08:35.596881", - "completed_at": "2022-10-27 10:08:35.861501", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 30, - "parent_lattice_id": 3, - "transport_graph_node_id": 19, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_19", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:34.457399", - "updated_at": "2022-10-27 10:08:34.902193", - "started_at": "2022-10-27 10:08:34.895470", - "completed_at": "2022-10-27 10:08:34.895475", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 31, - "parent_lattice_id": 4, - "transport_graph_node_id": 0, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_0", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.302082", - "updated_at": "2022-10-27 10:08:43.171795", - "started_at": "2022-10-27 10:08:42.917693", - "completed_at": "2022-10-27 10:08:43.165874", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 32, - "parent_lattice_id": 4, - "transport_graph_node_id": 1, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_1", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.320779", - "updated_at": "2022-10-27 10:08:42.512375", - "started_at": "2022-10-27 10:08:42.299329", - "completed_at": "2022-10-27 10:08:42.506677", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 33, - "parent_lattice_id": 4, - "transport_graph_node_id": 2, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_2", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.338612", - "updated_at": "2022-10-27 10:08:38.787144", - "started_at": "2022-10-27 10:08:38.780790", - "completed_at": "2022-10-27 10:08:38.780796", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 34, - "parent_lattice_id": 4, - "transport_graph_node_id": 3, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_3", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.355690", - "updated_at": "2022-10-27 10:08:38.825702", - "started_at": "2022-10-27 10:08:38.820257", - "completed_at": "2022-10-27 10:08:38.820263", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 35, - "parent_lattice_id": 4, - "transport_graph_node_id": 4, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_4", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.373101", - "updated_at": "2022-10-27 10:08:38.859815", - "started_at": "2022-10-27 10:08:38.854643", - "completed_at": "2022-10-27 10:08:38.854648", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 36, - "parent_lattice_id": 4, - "transport_graph_node_id": 5, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_5", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.389371", - "updated_at": "2022-10-27 10:08:38.893261", - "started_at": "2022-10-27 10:08:38.887957", - "completed_at": "2022-10-27 10:08:38.887961", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 37, - "parent_lattice_id": 4, - "transport_graph_node_id": 6, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_6", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.407041", - "updated_at": "2022-10-27 10:08:38.929879", - "started_at": "2022-10-27 10:08:38.922953", - "completed_at": "2022-10-27 10:08:38.922958", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 38, - "parent_lattice_id": 4, - "transport_graph_node_id": 7, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_7", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.426321", - "updated_at": "2022-10-27 10:08:38.980004", - "started_at": "2022-10-27 10:08:38.964715", - "completed_at": "2022-10-27 10:08:38.964719", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 39, - "parent_lattice_id": 4, - "transport_graph_node_id": 8, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_8", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.442352", - "updated_at": "2022-10-27 10:08:39.045890", - "started_at": "2022-10-27 10:08:39.035460", - "completed_at": "2022-10-27 10:08:39.035471", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 40, - "parent_lattice_id": 4, - "transport_graph_node_id": 9, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_9", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.457450", - "updated_at": "2022-10-27 10:08:39.092994", - "started_at": "2022-10-27 10:08:39.090917", - "completed_at": "2022-10-27 10:08:39.090918", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 41, - "parent_lattice_id": 4, - "transport_graph_node_id": 10, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_10", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.474123", - "updated_at": "2022-10-27 10:08:39.118499", - "started_at": "2022-10-27 10:08:39.115263", - "completed_at": "2022-10-27 10:08:39.115265", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 42, - "parent_lattice_id": 4, - "transport_graph_node_id": 11, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_11", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.489691", - "updated_at": "2022-10-27 10:08:39.143260", - "started_at": "2022-10-27 10:08:39.140423", - "completed_at": "2022-10-27 10:08:39.140424", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 43, - "parent_lattice_id": 4, - "transport_graph_node_id": 12, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_12", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.508357", - "updated_at": "2022-10-27 10:08:43.258311", - "started_at": "2022-10-27 10:08:42.962785", - "completed_at": "2022-10-27 10:08:43.253146", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 44, - "parent_lattice_id": 4, - "transport_graph_node_id": 13, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_13", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.526014", - "updated_at": "2022-10-27 10:08:42.589511", - "started_at": "2022-10-27 10:08:42.322474", - "completed_at": "2022-10-27 10:08:42.587122", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 45, - "parent_lattice_id": 4, - "transport_graph_node_id": 14, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_14", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.543830", - "updated_at": "2022-10-27 10:08:39.175803", - "started_at": "2022-10-27 10:08:39.170609", - "completed_at": "2022-10-27 10:08:39.170613", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 46, - "parent_lattice_id": 4, - "transport_graph_node_id": 15, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_15", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.558599", - "updated_at": "2022-10-27 10:08:39.211919", - "started_at": "2022-10-27 10:08:39.205854", - "completed_at": "2022-10-27 10:08:39.205857", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 47, - "parent_lattice_id": 4, - "transport_graph_node_id": 16, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_16", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.574942", - "updated_at": "2022-10-27 10:08:39.254111", - "started_at": "2022-10-27 10:08:39.248043", - "completed_at": "2022-10-27 10:08:39.248047", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 48, - "parent_lattice_id": 4, - "transport_graph_node_id": 17, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_17", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.592225", - "updated_at": "2022-10-27 10:08:39.280784", - "started_at": "2022-10-27 10:08:39.277848", - "completed_at": "2022-10-27 10:08:39.277851", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 49, - "parent_lattice_id": 4, - "transport_graph_node_id": 18, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_18", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.605931", - "updated_at": "2022-10-27 10:08:39.310818", - "started_at": "2022-10-27 10:08:39.306032", - "completed_at": "2022-10-27 10:08:39.306035", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 50, - "parent_lattice_id": 4, - "transport_graph_node_id": 19, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_19", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.624526", - "updated_at": "2022-10-27 10:08:39.344570", - "started_at": "2022-10-27 10:08:39.339834", - "completed_at": "2022-10-27 10:08:39.339839", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 51, - "parent_lattice_id": 4, - "transport_graph_node_id": 20, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_20", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.642423", - "updated_at": "2022-10-27 10:08:39.378598", - "started_at": "2022-10-27 10:08:39.372707", - "completed_at": "2022-10-27 10:08:39.372710", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 52, - "parent_lattice_id": 4, - "transport_graph_node_id": 21, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_21", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.659032", - "updated_at": "2022-10-27 10:08:39.410576", - "started_at": "2022-10-27 10:08:39.406279", - "completed_at": "2022-10-27 10:08:39.406281", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 53, - "parent_lattice_id": 4, - "transport_graph_node_id": 22, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_22", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.675982", - "updated_at": "2022-10-27 10:08:39.442893", - "started_at": "2022-10-27 10:08:39.438271", - "completed_at": "2022-10-27 10:08:39.438274", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 54, - "parent_lattice_id": 4, - "transport_graph_node_id": 23, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_23", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.691008", - "updated_at": "2022-10-27 10:08:39.475648", - "started_at": "2022-10-27 10:08:39.471663", - "completed_at": "2022-10-27 10:08:39.471666", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 55, - "parent_lattice_id": 4, - "transport_graph_node_id": 24, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_24", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.706843", - "updated_at": "2022-10-27 10:08:43.345118", - "started_at": "2022-10-27 10:08:43.012521", - "completed_at": "2022-10-27 10:08:43.340161", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 56, - "parent_lattice_id": 4, - "transport_graph_node_id": 25, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_25", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.725044", - "updated_at": "2022-10-27 10:08:42.654361", - "started_at": "2022-10-27 10:08:42.364016", - "completed_at": "2022-10-27 10:08:42.650965", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 57, - "parent_lattice_id": 4, - "transport_graph_node_id": 26, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_26", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.742116", - "updated_at": "2022-10-27 10:08:39.508733", - "started_at": "2022-10-27 10:08:39.504710", - "completed_at": "2022-10-27 10:08:39.504713", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 58, - "parent_lattice_id": 4, - "transport_graph_node_id": 27, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_27", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.758671", - "updated_at": "2022-10-27 10:08:39.540296", - "started_at": "2022-10-27 10:08:39.536280", - "completed_at": "2022-10-27 10:08:39.536282", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 59, - "parent_lattice_id": 4, - "transport_graph_node_id": 28, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_28", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.778892", - "updated_at": "2022-10-27 10:08:39.572480", - "started_at": "2022-10-27 10:08:39.567594", - "completed_at": "2022-10-27 10:08:39.567598", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 60, - "parent_lattice_id": 4, - "transport_graph_node_id": 29, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_29", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.795931", - "updated_at": "2022-10-27 10:08:39.607869", - "started_at": "2022-10-27 10:08:39.602978", - "completed_at": "2022-10-27 10:08:39.602981", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 61, - "parent_lattice_id": 4, - "transport_graph_node_id": 30, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_30", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.808616", - "updated_at": "2022-10-27 10:08:39.642195", - "started_at": "2022-10-27 10:08:39.636935", - "completed_at": "2022-10-27 10:08:39.636938", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 62, - "parent_lattice_id": 4, - "transport_graph_node_id": 31, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_31", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.826128", - "updated_at": "2022-10-27 10:08:39.681521", - "started_at": "2022-10-27 10:08:39.676238", - "completed_at": "2022-10-27 10:08:39.676241", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 63, - "parent_lattice_id": 4, - "transport_graph_node_id": 32, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_32", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.842655", - "updated_at": "2022-10-27 10:08:39.716039", - "started_at": "2022-10-27 10:08:39.710482", - "completed_at": "2022-10-27 10:08:39.710485", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 64, - "parent_lattice_id": 4, - "transport_graph_node_id": 33, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_33", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.857408", - "updated_at": "2022-10-27 10:08:39.748445", - "started_at": "2022-10-27 10:08:39.743820", - "completed_at": "2022-10-27 10:08:39.743822", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 65, - "parent_lattice_id": 4, - "transport_graph_node_id": 34, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_34", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.875349", - "updated_at": "2022-10-27 10:08:39.782746", - "started_at": "2022-10-27 10:08:39.776311", - "completed_at": "2022-10-27 10:08:39.776316", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 66, - "parent_lattice_id": 4, - "transport_graph_node_id": 35, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_35", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.892565", - "updated_at": "2022-10-27 10:08:39.816223", - "started_at": "2022-10-27 10:08:39.813526", - "completed_at": "2022-10-27 10:08:39.813527", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 67, - "parent_lattice_id": 4, - "transport_graph_node_id": 36, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_36", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.909599", - "updated_at": "2022-10-27 10:08:43.507730", - "started_at": "2022-10-27 10:08:43.124746", - "completed_at": "2022-10-27 10:08:43.502348", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 68, - "parent_lattice_id": 4, - "transport_graph_node_id": 37, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_37", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.925895", - "updated_at": "2022-10-27 10:08:42.773297", - "started_at": "2022-10-27 10:08:42.410990", - "completed_at": "2022-10-27 10:08:42.767106", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 69, - "parent_lattice_id": 4, - "transport_graph_node_id": 38, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_38", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.941241", - "updated_at": "2022-10-27 10:08:39.844978", - "started_at": "2022-10-27 10:08:39.840526", - "completed_at": "2022-10-27 10:08:39.840528", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 70, - "parent_lattice_id": 4, - "transport_graph_node_id": 39, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_39", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.958115", - "updated_at": "2022-10-27 10:08:39.876766", - "started_at": "2022-10-27 10:08:39.872532", - "completed_at": "2022-10-27 10:08:39.872534", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 71, - "parent_lattice_id": 4, - "transport_graph_node_id": 40, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_40", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.972882", - "updated_at": "2022-10-27 10:08:39.910667", - "started_at": "2022-10-27 10:08:39.905887", - "completed_at": "2022-10-27 10:08:39.905891", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 72, - "parent_lattice_id": 4, - "transport_graph_node_id": 41, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_41", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:36.988747", - "updated_at": "2022-10-27 10:08:39.941892", - "started_at": "2022-10-27 10:08:39.937792", - "completed_at": "2022-10-27 10:08:39.937795", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 73, - "parent_lattice_id": 4, - "transport_graph_node_id": 42, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_42", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.004250", - "updated_at": "2022-10-27 10:08:39.977285", - "started_at": "2022-10-27 10:08:39.973990", - "completed_at": "2022-10-27 10:08:39.973995", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 74, - "parent_lattice_id": 4, - "transport_graph_node_id": 43, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_43", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.024965", - "updated_at": "2022-10-27 10:08:40.008953", - "started_at": "2022-10-27 10:08:40.004694", - "completed_at": "2022-10-27 10:08:40.004696", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 75, - "parent_lattice_id": 4, - "transport_graph_node_id": 44, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_44", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.042155", - "updated_at": "2022-10-27 10:08:40.042835", - "started_at": "2022-10-27 10:08:40.038140", - "completed_at": "2022-10-27 10:08:40.038143", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 76, - "parent_lattice_id": 4, - "transport_graph_node_id": 45, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_45", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.057877", - "updated_at": "2022-10-27 10:08:40.076546", - "started_at": "2022-10-27 10:08:40.071383", - "completed_at": "2022-10-27 10:08:40.071386", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 77, - "parent_lattice_id": 4, - "transport_graph_node_id": 46, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_46", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.074699", - "updated_at": "2022-10-27 10:08:40.112193", - "started_at": "2022-10-27 10:08:40.105934", - "completed_at": "2022-10-27 10:08:40.105939", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 78, - "parent_lattice_id": 4, - "transport_graph_node_id": 47, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_47", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.090017", - "updated_at": "2022-10-27 10:08:40.149688", - "started_at": "2022-10-27 10:08:40.142740", - "completed_at": "2022-10-27 10:08:40.142743", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 79, - "parent_lattice_id": 4, - "transport_graph_node_id": 48, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_48", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.108724", - "updated_at": "2022-10-27 10:08:43.425359", - "started_at": "2022-10-27 10:08:43.041103", - "completed_at": "2022-10-27 10:08:43.419548", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 80, - "parent_lattice_id": 4, - "transport_graph_node_id": 49, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_49", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.127189", - "updated_at": "2022-10-27 10:08:42.803765", - "started_at": "2022-10-27 10:08:42.460853", - "completed_at": "2022-10-27 10:08:42.796610", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 81, - "parent_lattice_id": 4, - "transport_graph_node_id": 50, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_50", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.148132", - "updated_at": "2022-10-27 10:08:40.190076", - "started_at": "2022-10-27 10:08:40.181654", - "completed_at": "2022-10-27 10:08:40.181662", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 82, - "parent_lattice_id": 4, - "transport_graph_node_id": 51, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_51", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.163845", - "updated_at": "2022-10-27 10:08:40.225434", - "started_at": "2022-10-27 10:08:40.220720", - "completed_at": "2022-10-27 10:08:40.220725", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 83, - "parent_lattice_id": 4, - "transport_graph_node_id": 52, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_52", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.182859", - "updated_at": "2022-10-27 10:08:40.259819", - "started_at": "2022-10-27 10:08:40.254308", - "completed_at": "2022-10-27 10:08:40.254312", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 84, - "parent_lattice_id": 4, - "transport_graph_node_id": 53, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_53", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.197103", - "updated_at": "2022-10-27 10:08:40.303439", - "started_at": "2022-10-27 10:08:40.293041", - "completed_at": "2022-10-27 10:08:40.293044", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 85, - "parent_lattice_id": 4, - "transport_graph_node_id": 54, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_54", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.212968", - "updated_at": "2022-10-27 10:08:40.345385", - "started_at": "2022-10-27 10:08:40.339703", - "completed_at": "2022-10-27 10:08:40.339706", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 86, - "parent_lattice_id": 4, - "transport_graph_node_id": 55, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_55", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.233015", - "updated_at": "2022-10-27 10:08:40.396468", - "started_at": "2022-10-27 10:08:40.388397", - "completed_at": "2022-10-27 10:08:40.388409", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 87, - "parent_lattice_id": 4, - "transport_graph_node_id": 56, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_56", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.250635", - "updated_at": "2022-10-27 10:08:40.437562", - "started_at": "2022-10-27 10:08:40.427023", - "completed_at": "2022-10-27 10:08:40.427026", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 88, - "parent_lattice_id": 4, - "transport_graph_node_id": 57, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_57", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.272024", - "updated_at": "2022-10-27 10:08:40.486616", - "started_at": "2022-10-27 10:08:40.476868", - "completed_at": "2022-10-27 10:08:40.476872", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 89, - "parent_lattice_id": 4, - "transport_graph_node_id": 58, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_58", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.285661", - "updated_at": "2022-10-27 10:08:40.529335", - "started_at": "2022-10-27 10:08:40.524104", - "completed_at": "2022-10-27 10:08:40.524107", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 90, - "parent_lattice_id": 4, - "transport_graph_node_id": 59, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_59", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.295628", - "updated_at": "2022-10-27 10:08:40.575426", - "started_at": "2022-10-27 10:08:40.568992", - "completed_at": "2022-10-27 10:08:40.569005", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 91, - "parent_lattice_id": 4, - "transport_graph_node_id": 60, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_60", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.308194", - "updated_at": "2022-10-27 10:08:43.594444", - "started_at": "2022-10-27 10:08:43.207640", - "completed_at": "2022-10-27 10:08:43.589035", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 92, - "parent_lattice_id": 4, - "transport_graph_node_id": 61, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_61", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.330291", - "updated_at": "2022-10-27 10:08:42.879558", - "started_at": "2022-10-27 10:08:42.540112", - "completed_at": "2022-10-27 10:08:42.874105", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 93, - "parent_lattice_id": 4, - "transport_graph_node_id": 62, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_62", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.351111", - "updated_at": "2022-10-27 10:08:40.612649", - "started_at": "2022-10-27 10:08:40.606339", - "completed_at": "2022-10-27 10:08:40.606344", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 94, - "parent_lattice_id": 4, - "transport_graph_node_id": 63, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_63", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.374099", - "updated_at": "2022-10-27 10:08:40.644544", - "started_at": "2022-10-27 10:08:40.641995", - "completed_at": "2022-10-27 10:08:40.641996", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 95, - "parent_lattice_id": 4, - "transport_graph_node_id": 64, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_64", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.392103", - "updated_at": "2022-10-27 10:08:40.676302", - "started_at": "2022-10-27 10:08:40.672991", - "completed_at": "2022-10-27 10:08:40.672994", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 96, - "parent_lattice_id": 4, - "transport_graph_node_id": 65, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_65", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.409575", - "updated_at": "2022-10-27 10:08:40.698956", - "started_at": "2022-10-27 10:08:40.696115", - "completed_at": "2022-10-27 10:08:40.696117", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 97, - "parent_lattice_id": 4, - "transport_graph_node_id": 66, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_66", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.429387", - "updated_at": "2022-10-27 10:08:40.727386", - "started_at": "2022-10-27 10:08:40.722953", - "completed_at": "2022-10-27 10:08:40.722956", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 98, - "parent_lattice_id": 4, - "transport_graph_node_id": 67, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_67", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.448684", - "updated_at": "2022-10-27 10:08:40.762293", - "started_at": "2022-10-27 10:08:40.755865", - "completed_at": "2022-10-27 10:08:40.755868", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 99, - "parent_lattice_id": 4, - "transport_graph_node_id": 68, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_68", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.470073", - "updated_at": "2022-10-27 10:08:40.799334", - "started_at": "2022-10-27 10:08:40.793381", - "completed_at": "2022-10-27 10:08:40.793384", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 100, - "parent_lattice_id": 4, - "transport_graph_node_id": 69, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_69", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.487636", - "updated_at": "2022-10-27 10:08:40.837240", - "started_at": "2022-10-27 10:08:40.828280", - "completed_at": "2022-10-27 10:08:40.828284", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 101, - "parent_lattice_id": 4, - "transport_graph_node_id": 70, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_70", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.504586", - "updated_at": "2022-10-27 10:08:40.876500", - "started_at": "2022-10-27 10:08:40.865834", - "completed_at": "2022-10-27 10:08:40.865850", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 102, - "parent_lattice_id": 4, - "transport_graph_node_id": 71, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_71", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.526051", - "updated_at": "2022-10-27 10:08:40.913187", - "started_at": "2022-10-27 10:08:40.908278", - "completed_at": "2022-10-27 10:08:40.908311", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 103, - "parent_lattice_id": 4, - "transport_graph_node_id": 72, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_72", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.546764", - "updated_at": "2022-10-27 10:08:43.656594", - "started_at": "2022-10-27 10:08:43.290300", - "completed_at": "2022-10-27 10:08:43.649360", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 104, - "parent_lattice_id": 4, - "transport_graph_node_id": 73, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_73", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.567169", - "updated_at": "2022-10-27 10:08:42.942520", - "started_at": "2022-10-27 10:08:42.622934", - "completed_at": "2022-10-27 10:08:42.939996", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 105, - "parent_lattice_id": 4, - "transport_graph_node_id": 74, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_74", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.585364", - "updated_at": "2022-10-27 10:08:40.946512", - "started_at": "2022-10-27 10:08:40.941095", - "completed_at": "2022-10-27 10:08:40.941099", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 106, - "parent_lattice_id": 4, - "transport_graph_node_id": 75, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_75", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.599294", - "updated_at": "2022-10-27 10:08:40.981200", - "started_at": "2022-10-27 10:08:40.976058", - "completed_at": "2022-10-27 10:08:40.976061", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 107, - "parent_lattice_id": 4, - "transport_graph_node_id": 76, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_76", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.619618", - "updated_at": "2022-10-27 10:08:41.016945", - "started_at": "2022-10-27 10:08:41.009802", - "completed_at": "2022-10-27 10:08:41.009805", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 108, - "parent_lattice_id": 4, - "transport_graph_node_id": 77, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_77", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.638808", - "updated_at": "2022-10-27 10:08:41.055936", - "started_at": "2022-10-27 10:08:41.048453", - "completed_at": "2022-10-27 10:08:41.048457", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 109, - "parent_lattice_id": 4, - "transport_graph_node_id": 78, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_78", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.654483", - "updated_at": "2022-10-27 10:08:41.091582", - "started_at": "2022-10-27 10:08:41.086414", - "completed_at": "2022-10-27 10:08:41.086417", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 110, - "parent_lattice_id": 4, - "transport_graph_node_id": 79, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_79", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.671724", - "updated_at": "2022-10-27 10:08:41.123420", - "started_at": "2022-10-27 10:08:41.116755", - "completed_at": "2022-10-27 10:08:41.116759", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 111, - "parent_lattice_id": 4, - "transport_graph_node_id": 80, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_80", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.687139", - "updated_at": "2022-10-27 10:08:41.156278", - "started_at": "2022-10-27 10:08:41.149923", - "completed_at": "2022-10-27 10:08:41.149926", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 112, - "parent_lattice_id": 4, - "transport_graph_node_id": 81, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_81", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.704070", - "updated_at": "2022-10-27 10:08:41.192404", - "started_at": "2022-10-27 10:08:41.186466", - "completed_at": "2022-10-27 10:08:41.186469", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 113, - "parent_lattice_id": 4, - "transport_graph_node_id": 82, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_82", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.725651", - "updated_at": "2022-10-27 10:08:41.224627", - "started_at": "2022-10-27 10:08:41.218531", - "completed_at": "2022-10-27 10:08:41.218536", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 114, - "parent_lattice_id": 4, - "transport_graph_node_id": 83, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_83", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.745048", - "updated_at": "2022-10-27 10:08:41.257055", - "started_at": "2022-10-27 10:08:41.250702", - "completed_at": "2022-10-27 10:08:41.250704", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 115, - "parent_lattice_id": 4, - "transport_graph_node_id": 84, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_84", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.760175", - "updated_at": "2022-10-27 10:08:43.692219", - "started_at": "2022-10-27 10:08:43.375045", - "completed_at": "2022-10-27 10:08:43.687405", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 116, - "parent_lattice_id": 4, - "transport_graph_node_id": 85, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_85", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.776605", - "updated_at": "2022-10-27 10:08:42.991653", - "started_at": "2022-10-27 10:08:42.677025", - "completed_at": "2022-10-27 10:08:42.989021", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 117, - "parent_lattice_id": 4, - "transport_graph_node_id": 86, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_86", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.792093", - "updated_at": "2022-10-27 10:08:41.293646", - "started_at": "2022-10-27 10:08:41.288911", - "completed_at": "2022-10-27 10:08:41.288914", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 118, - "parent_lattice_id": 4, - "transport_graph_node_id": 87, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_87", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.808215", - "updated_at": "2022-10-27 10:08:41.327075", - "started_at": "2022-10-27 10:08:41.322042", - "completed_at": "2022-10-27 10:08:41.322045", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 119, - "parent_lattice_id": 4, - "transport_graph_node_id": 88, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_88", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.826520", - "updated_at": "2022-10-27 10:08:41.360839", - "started_at": "2022-10-27 10:08:41.356030", - "completed_at": "2022-10-27 10:08:41.356033", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 120, - "parent_lattice_id": 4, - "transport_graph_node_id": 89, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_89", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.842543", - "updated_at": "2022-10-27 10:08:41.394483", - "started_at": "2022-10-27 10:08:41.389522", - "completed_at": "2022-10-27 10:08:41.389525", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 121, - "parent_lattice_id": 4, - "transport_graph_node_id": 90, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_90", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.859025", - "updated_at": "2022-10-27 10:08:41.428439", - "started_at": "2022-10-27 10:08:41.421862", - "completed_at": "2022-10-27 10:08:41.421865", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 122, - "parent_lattice_id": 4, - "transport_graph_node_id": 91, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_91", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.875312", - "updated_at": "2022-10-27 10:08:41.462184", - "started_at": "2022-10-27 10:08:41.457205", - "completed_at": "2022-10-27 10:08:41.457208", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 123, - "parent_lattice_id": 4, - "transport_graph_node_id": 92, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_92", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.890211", - "updated_at": "2022-10-27 10:08:41.496118", - "started_at": "2022-10-27 10:08:41.491181", - "completed_at": "2022-10-27 10:08:41.491184", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 124, - "parent_lattice_id": 4, - "transport_graph_node_id": 93, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_93", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.906062", - "updated_at": "2022-10-27 10:08:41.527497", - "started_at": "2022-10-27 10:08:41.522585", - "completed_at": "2022-10-27 10:08:41.522588", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 125, - "parent_lattice_id": 4, - "transport_graph_node_id": 94, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_94", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.925923", - "updated_at": "2022-10-27 10:08:41.561383", - "started_at": "2022-10-27 10:08:41.556600", - "completed_at": "2022-10-27 10:08:41.556602", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 126, - "parent_lattice_id": 4, - "transport_graph_node_id": 95, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_95", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.941795", - "updated_at": "2022-10-27 10:08:41.595700", - "started_at": "2022-10-27 10:08:41.590899", - "completed_at": "2022-10-27 10:08:41.590902", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 127, - "parent_lattice_id": 4, - "transport_graph_node_id": 96, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_96", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.957926", - "updated_at": "2022-10-27 10:08:43.766491", - "started_at": "2022-10-27 10:08:43.541105", - "completed_at": "2022-10-27 10:08:43.761303", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 128, - "parent_lattice_id": 4, - "transport_graph_node_id": 97, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_97", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.973121", - "updated_at": "2022-10-27 10:08:43.091461", - "started_at": "2022-10-27 10:08:42.724995", - "completed_at": "2022-10-27 10:08:43.086071", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 129, - "parent_lattice_id": 4, - "transport_graph_node_id": 98, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_98", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:37.986933", - "updated_at": "2022-10-27 10:08:41.627489", - "started_at": "2022-10-27 10:08:41.622560", - "completed_at": "2022-10-27 10:08:41.622563", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 130, - "parent_lattice_id": 4, - "transport_graph_node_id": 99, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_99", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.001766", - "updated_at": "2022-10-27 10:08:41.661875", - "started_at": "2022-10-27 10:08:41.656441", - "completed_at": "2022-10-27 10:08:41.656443", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 131, - "parent_lattice_id": 4, - "transport_graph_node_id": 100, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_100", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.020035", - "updated_at": "2022-10-27 10:08:41.696908", - "started_at": "2022-10-27 10:08:41.691678", - "completed_at": "2022-10-27 10:08:41.691681", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 132, - "parent_lattice_id": 4, - "transport_graph_node_id": 101, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_101", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.035546", - "updated_at": "2022-10-27 10:08:41.730325", - "started_at": "2022-10-27 10:08:41.725404", - "completed_at": "2022-10-27 10:08:41.725407", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 133, - "parent_lattice_id": 4, - "transport_graph_node_id": 102, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_102", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.046972", - "updated_at": "2022-10-27 10:08:41.767052", - "started_at": "2022-10-27 10:08:41.759767", - "completed_at": "2022-10-27 10:08:41.759771", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 134, - "parent_lattice_id": 4, - "transport_graph_node_id": 103, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_103", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.059033", - "updated_at": "2022-10-27 10:08:41.803941", - "started_at": "2022-10-27 10:08:41.799118", - "completed_at": "2022-10-27 10:08:41.799121", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 135, - "parent_lattice_id": 4, - "transport_graph_node_id": 104, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_104", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.073850", - "updated_at": "2022-10-27 10:08:41.837237", - "started_at": "2022-10-27 10:08:41.830166", - "completed_at": "2022-10-27 10:08:41.830169", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 136, - "parent_lattice_id": 4, - "transport_graph_node_id": 105, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_105", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.086138", - "updated_at": "2022-10-27 10:08:41.873392", - "started_at": "2022-10-27 10:08:41.864510", - "completed_at": "2022-10-27 10:08:41.864513", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 137, - "parent_lattice_id": 4, - "transport_graph_node_id": 106, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_106", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.098049", - "updated_at": "2022-10-27 10:08:41.906181", - "started_at": "2022-10-27 10:08:41.900656", - "completed_at": "2022-10-27 10:08:41.900659", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 138, - "parent_lattice_id": 4, - "transport_graph_node_id": 107, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_107", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.112014", - "updated_at": "2022-10-27 10:08:41.940831", - "started_at": "2022-10-27 10:08:41.935954", - "completed_at": "2022-10-27 10:08:41.935957", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 139, - "parent_lattice_id": 4, - "transport_graph_node_id": 108, - "type": "function", - "name": "identity", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_108", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.129412", - "updated_at": "2022-10-27 10:08:43.730488", - "started_at": "2022-10-27 10:08:43.459156", - "completed_at": "2022-10-27 10:08:43.724659", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 140, - "parent_lattice_id": 4, - "transport_graph_node_id": 109, - "type": "electron_list", - "name": ":electron_list:", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_109", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.146475", - "updated_at": "2022-10-27 10:08:43.062996", - "started_at": "2022-10-27 10:08:42.835169", - "completed_at": "2022-10-27 10:08:43.060465", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 141, - "parent_lattice_id": 4, - "transport_graph_node_id": 110, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_110", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.162055", - "updated_at": "2022-10-27 10:08:41.974642", - "started_at": "2022-10-27 10:08:41.970618", - "completed_at": "2022-10-27 10:08:41.970621", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 142, - "parent_lattice_id": 4, - "transport_graph_node_id": 111, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_111", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.178884", - "updated_at": "2022-10-27 10:08:42.005490", - "started_at": "2022-10-27 10:08:41.998870", - "completed_at": "2022-10-27 10:08:41.998874", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 143, - "parent_lattice_id": 4, - "transport_graph_node_id": 112, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_112", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.195346", - "updated_at": "2022-10-27 10:08:42.038186", - "started_at": "2022-10-27 10:08:42.032233", - "completed_at": "2022-10-27 10:08:42.032236", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 144, - "parent_lattice_id": 4, - "transport_graph_node_id": 113, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_113", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.214888", - "updated_at": "2022-10-27 10:08:42.071763", - "started_at": "2022-10-27 10:08:42.065366", - "completed_at": "2022-10-27 10:08:42.065369", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 145, - "parent_lattice_id": 4, - "transport_graph_node_id": 114, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_114", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.237282", - "updated_at": "2022-10-27 10:08:42.105918", - "started_at": "2022-10-27 10:08:42.099840", - "completed_at": "2022-10-27 10:08:42.099844", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 146, - "parent_lattice_id": 4, - "transport_graph_node_id": 115, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_115", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.253156", - "updated_at": "2022-10-27 10:08:42.141465", - "started_at": "2022-10-27 10:08:42.134805", - "completed_at": "2022-10-27 10:08:42.134812", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 147, - "parent_lattice_id": 4, - "transport_graph_node_id": 116, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_116", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.271635", - "updated_at": "2022-10-27 10:08:42.175810", - "started_at": "2022-10-27 10:08:42.170433", - "completed_at": "2022-10-27 10:08:42.170438", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 148, - "parent_lattice_id": 4, - "transport_graph_node_id": 117, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_117", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.287718", - "updated_at": "2022-10-27 10:08:42.207773", - "started_at": "2022-10-27 10:08:42.202646", - "completed_at": "2022-10-27 10:08:42.202650", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 149, - "parent_lattice_id": 4, - "transport_graph_node_id": 118, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_118", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.302767", - "updated_at": "2022-10-27 10:08:42.238861", - "started_at": "2022-10-27 10:08:42.233364", - "completed_at": "2022-10-27 10:08:42.233366", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - }, - { - "id": 150, - "parent_lattice_id": 4, - "transport_graph_node_id": 119, - "type": "parameter", - "name": ":parameter:2", - "status": "COMPLETED", - "storage_type": "local", - "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_119", - "function_filename": "function.pkl", - "function_string_filename": "function_string.txt", - "results_filename": "results.pkl", - "value_filename": "value.pkl", - "stdout_filename": "stdout.log", - "deps_filename": "deps.pkl", - "call_before_filename": "call_before.pkl", - "call_after_filename": "call_after.pkl", - "stderr_filename": "stderr.log", - "info_filename": "info.log", - "is_active": 1, - "created_at": "2022-10-27 10:08:38.320742", - "updated_at": "2022-10-27 10:08:42.272361", - "started_at": "2022-10-27 10:08:42.265656", - "completed_at": "2022-10-27 10:08:42.265658", - "executor": "dask", - "executor_data_filename": "executor_data.pkl", - "job_id":1 - } + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.483405", + "created_at": "2022-09-23 10:01:11.062647", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 1, + "is_active": 1, + "name": "hello", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.168972", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_0", + "storage_type": "local", + "transport_graph_node_id": 0, + "type": "function", + "updated_at": "2022-09-23 10:01:11.490513", + "value_filename": "value.pkl", + "job_id": 0, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.520838", + "created_at": "2022-09-23 10:01:11.075465", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 2, + "is_active": 1, + "name": "moniker", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.264347", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_1", + "storage_type": "local", + "transport_graph_node_id": 1, + "type": "function", + "updated_at": "2022-09-23 10:01:11.526865", + "value_filename": "value.pkl", + "job_id": 0, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.194419", + "created_at": "2022-09-23 10:01:11.085971", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 3, + "is_active": 1, + "name": ":parameter:shore", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.194417", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_2", + "storage_type": "local", + "transport_graph_node_id": 2, + "type": "parameter", + "updated_at": "2022-09-23 10:01:11.197121", + "value_filename": "value.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.588248", + "created_at": "2022-09-23 10:01:11.098325", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 4, + "is_active": 1, + "name": "join", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.553084", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_3", + "storage_type": "local", + "transport_graph_node_id": 3, + "type": "function", + "updated_at": "2022-09-23 10:01:11.591516", + "value_filename": "value.pkl", + "job_id": 2, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.640049", + "created_at": "2022-09-23 10:01:11.109305", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 5, + "is_active": 1, + "name": "join_+_ !!", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.611520", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_4", + "storage_type": "local", + "transport_graph_node_id": 4, + "type": "function", + "updated_at": "2022-09-23 10:01:11.642760", + "value_filename": "value.pkl", + "job_id": 3, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.226986", + "created_at": "2022-09-23 10:01:11.121100", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 6, + "is_active": 1, + "name": ":parameter: !!", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.226984", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_5", + "storage_type": "local", + "transport_graph_node_id": 5, + "type": "parameter", + "updated_at": "2022-09-23 10:01:11.229709", + "value_filename": "value.pkl", + "job_id": 4, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 7, + "parent_lattice_id": 2, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.721544", + "updated_at": "2022-10-27 10:08:33.937039", + "started_at": "2022-10-27 10:08:33.861837", + "completed_at": "2022-10-27 10:08:33.933100", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 5, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 8, + "parent_lattice_id": 2, + "transport_graph_node_id": 1, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.737909", + "updated_at": "2022-10-27 10:08:33.832449", + "started_at": "2022-10-27 10:08:33.827366", + "completed_at": "2022-10-27 10:08:33.827372", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 6, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 9, + "parent_lattice_id": 2, + "transport_graph_node_id": 2, + "type": "sublattice", + "name": ":sublattice:sub", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.754840", + "updated_at": "2022-10-27 10:08:36.033792", + "started_at": "2022-10-27 10:08:33.967565", + "completed_at": "2022-10-27 10:08:36.028194", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 10, + "parent_lattice_id": 2, + "transport_graph_node_id": 3, + "type": "sublattice", + "name": ":sublattice:sub", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.769064", + "updated_at": "2022-10-27 10:08:43.907507", + "started_at": "2022-10-27 10:08:36.065830", + "completed_at": "2022-10-27 10:08:43.905519", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 11, + "parent_lattice_id": 3, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.121824", + "updated_at": "2022-10-27 10:08:35.166045", + "started_at": "2022-10-27 10:08:34.939603", + "completed_at": "2022-10-27 10:08:35.159092", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 12, + "parent_lattice_id": 3, + "transport_graph_node_id": 1, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.141566", + "updated_at": "2022-10-27 10:08:34.530775", + "started_at": "2022-10-27 10:08:34.523975", + "completed_at": "2022-10-27 10:08:34.523987", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 13, + "parent_lattice_id": 3, + "transport_graph_node_id": 2, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.157807", + "updated_at": "2022-10-27 10:08:35.245235", + "started_at": "2022-10-27 10:08:34.968949", + "completed_at": "2022-10-27 10:08:35.238154", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 14, + "parent_lattice_id": 3, + "transport_graph_node_id": 3, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.174837", + "updated_at": "2022-10-27 10:08:34.582442", + "started_at": "2022-10-27 10:08:34.576178", + "completed_at": "2022-10-27 10:08:34.576181", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 15, + "parent_lattice_id": 3, + "transport_graph_node_id": 4, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_4", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.193334", + "updated_at": "2022-10-27 10:08:35.326034", + "started_at": "2022-10-27 10:08:35.011096", + "completed_at": "2022-10-27 10:08:35.324016", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 16, + "parent_lattice_id": 3, + "transport_graph_node_id": 5, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_5", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.210810", + "updated_at": "2022-10-27 10:08:34.618496", + "started_at": "2022-10-27 10:08:34.614049", + "completed_at": "2022-10-27 10:08:34.614051", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 17, + "parent_lattice_id": 3, + "transport_graph_node_id": 6, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_6", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.225974", + "updated_at": "2022-10-27 10:08:35.414015", + "started_at": "2022-10-27 10:08:35.058712", + "completed_at": "2022-10-27 10:08:35.408068", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 18, + "parent_lattice_id": 3, + "transport_graph_node_id": 7, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_7", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.243921", + "updated_at": "2022-10-27 10:08:34.656399", + "started_at": "2022-10-27 10:08:34.647511", + "completed_at": "2022-10-27 10:08:34.647516", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 19, + "parent_lattice_id": 3, + "transport_graph_node_id": 8, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_8", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.262261", + "updated_at": "2022-10-27 10:08:35.564214", + "started_at": "2022-10-27 10:08:35.109570", + "completed_at": "2022-10-27 10:08:35.558177", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 20, + "parent_lattice_id": 3, + "transport_graph_node_id": 9, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_9", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.279546", + "updated_at": "2022-10-27 10:08:34.696612", + "started_at": "2022-10-27 10:08:34.689654", + "completed_at": "2022-10-27 10:08:34.689659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 21, + "parent_lattice_id": 3, + "transport_graph_node_id": 10, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_10", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.300588", + "updated_at": "2022-10-27 10:08:35.525729", + "started_at": "2022-10-27 10:08:35.193220", + "completed_at": "2022-10-27 10:08:35.514718", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 22, + "parent_lattice_id": 3, + "transport_graph_node_id": 11, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_11", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.319777", + "updated_at": "2022-10-27 10:08:34.737932", + "started_at": "2022-10-27 10:08:34.729529", + "completed_at": "2022-10-27 10:08:34.729533", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 23, + "parent_lattice_id": 3, + "transport_graph_node_id": 12, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_12", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.337839", + "updated_at": "2022-10-27 10:08:35.682213", + "started_at": "2022-10-27 10:08:35.287892", + "completed_at": "2022-10-27 10:08:35.673424", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 24, + "parent_lattice_id": 3, + "transport_graph_node_id": 13, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_13", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.357823", + "updated_at": "2022-10-27 10:08:34.777085", + "started_at": "2022-10-27 10:08:34.769243", + "completed_at": "2022-10-27 10:08:34.769254", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 25, + "parent_lattice_id": 3, + "transport_graph_node_id": 14, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_14", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.374314", + "updated_at": "2022-10-27 10:08:35.774775", + "started_at": "2022-10-27 10:08:35.354986", + "completed_at": "2022-10-27 10:08:35.763519", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 26, + "parent_lattice_id": 3, + "transport_graph_node_id": 15, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_15", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.390256", + "updated_at": "2022-10-27 10:08:34.818988", + "started_at": "2022-10-27 10:08:34.810072", + "completed_at": "2022-10-27 10:08:34.810076", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 27, + "parent_lattice_id": 3, + "transport_graph_node_id": 16, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_16", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.406105", + "updated_at": "2022-10-27 10:08:35.818772", + "started_at": "2022-10-27 10:08:35.447829", + "completed_at": "2022-10-27 10:08:35.809561", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 28, + "parent_lattice_id": 3, + "transport_graph_node_id": 17, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_17", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.424469", + "updated_at": "2022-10-27 10:08:34.860444", + "started_at": "2022-10-27 10:08:34.853785", + "completed_at": "2022-10-27 10:08:34.853790", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 29, + "parent_lattice_id": 3, + "transport_graph_node_id": 18, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_18", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.442225", + "updated_at": "2022-10-27 10:08:35.872264", + "started_at": "2022-10-27 10:08:35.596881", + "completed_at": "2022-10-27 10:08:35.861501", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 30, + "parent_lattice_id": 3, + "transport_graph_node_id": 19, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_19", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.457399", + "updated_at": "2022-10-27 10:08:34.902193", + "started_at": "2022-10-27 10:08:34.895470", + "completed_at": "2022-10-27 10:08:34.895475", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 31, + "parent_lattice_id": 4, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.302082", + "updated_at": "2022-10-27 10:08:43.171795", + "started_at": "2022-10-27 10:08:42.917693", + "completed_at": "2022-10-27 10:08:43.165874", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 32, + "parent_lattice_id": 4, + "transport_graph_node_id": 1, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.320779", + "updated_at": "2022-10-27 10:08:42.512375", + "started_at": "2022-10-27 10:08:42.299329", + "completed_at": "2022-10-27 10:08:42.506677", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 33, + "parent_lattice_id": 4, + "transport_graph_node_id": 2, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.338612", + "updated_at": "2022-10-27 10:08:38.787144", + "started_at": "2022-10-27 10:08:38.780790", + "completed_at": "2022-10-27 10:08:38.780796", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 34, + "parent_lattice_id": 4, + "transport_graph_node_id": 3, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.355690", + "updated_at": "2022-10-27 10:08:38.825702", + "started_at": "2022-10-27 10:08:38.820257", + "completed_at": "2022-10-27 10:08:38.820263", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 35, + "parent_lattice_id": 4, + "transport_graph_node_id": 4, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_4", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.373101", + "updated_at": "2022-10-27 10:08:38.859815", + "started_at": "2022-10-27 10:08:38.854643", + "completed_at": "2022-10-27 10:08:38.854648", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 36, + "parent_lattice_id": 4, + "transport_graph_node_id": 5, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_5", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.389371", + "updated_at": "2022-10-27 10:08:38.893261", + "started_at": "2022-10-27 10:08:38.887957", + "completed_at": "2022-10-27 10:08:38.887961", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 37, + "parent_lattice_id": 4, + "transport_graph_node_id": 6, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_6", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.407041", + "updated_at": "2022-10-27 10:08:38.929879", + "started_at": "2022-10-27 10:08:38.922953", + "completed_at": "2022-10-27 10:08:38.922958", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 38, + "parent_lattice_id": 4, + "transport_graph_node_id": 7, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_7", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.426321", + "updated_at": "2022-10-27 10:08:38.980004", + "started_at": "2022-10-27 10:08:38.964715", + "completed_at": "2022-10-27 10:08:38.964719", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 39, + "parent_lattice_id": 4, + "transport_graph_node_id": 8, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_8", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.442352", + "updated_at": "2022-10-27 10:08:39.045890", + "started_at": "2022-10-27 10:08:39.035460", + "completed_at": "2022-10-27 10:08:39.035471", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 40, + "parent_lattice_id": 4, + "transport_graph_node_id": 9, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_9", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.457450", + "updated_at": "2022-10-27 10:08:39.092994", + "started_at": "2022-10-27 10:08:39.090917", + "completed_at": "2022-10-27 10:08:39.090918", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 41, + "parent_lattice_id": 4, + "transport_graph_node_id": 10, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_10", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.474123", + "updated_at": "2022-10-27 10:08:39.118499", + "started_at": "2022-10-27 10:08:39.115263", + "completed_at": "2022-10-27 10:08:39.115265", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 42, + "parent_lattice_id": 4, + "transport_graph_node_id": 11, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_11", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.489691", + "updated_at": "2022-10-27 10:08:39.143260", + "started_at": "2022-10-27 10:08:39.140423", + "completed_at": "2022-10-27 10:08:39.140424", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 43, + "parent_lattice_id": 4, + "transport_graph_node_id": 12, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_12", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.508357", + "updated_at": "2022-10-27 10:08:43.258311", + "started_at": "2022-10-27 10:08:42.962785", + "completed_at": "2022-10-27 10:08:43.253146", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 44, + "parent_lattice_id": 4, + "transport_graph_node_id": 13, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_13", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.526014", + "updated_at": "2022-10-27 10:08:42.589511", + "started_at": "2022-10-27 10:08:42.322474", + "completed_at": "2022-10-27 10:08:42.587122", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 45, + "parent_lattice_id": 4, + "transport_graph_node_id": 14, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_14", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.543830", + "updated_at": "2022-10-27 10:08:39.175803", + "started_at": "2022-10-27 10:08:39.170609", + "completed_at": "2022-10-27 10:08:39.170613", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 46, + "parent_lattice_id": 4, + "transport_graph_node_id": 15, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_15", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.558599", + "updated_at": "2022-10-27 10:08:39.211919", + "started_at": "2022-10-27 10:08:39.205854", + "completed_at": "2022-10-27 10:08:39.205857", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 47, + "parent_lattice_id": 4, + "transport_graph_node_id": 16, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_16", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.574942", + "updated_at": "2022-10-27 10:08:39.254111", + "started_at": "2022-10-27 10:08:39.248043", + "completed_at": "2022-10-27 10:08:39.248047", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 48, + "parent_lattice_id": 4, + "transport_graph_node_id": 17, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_17", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.592225", + "updated_at": "2022-10-27 10:08:39.280784", + "started_at": "2022-10-27 10:08:39.277848", + "completed_at": "2022-10-27 10:08:39.277851", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 49, + "parent_lattice_id": 4, + "transport_graph_node_id": 18, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_18", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.605931", + "updated_at": "2022-10-27 10:08:39.310818", + "started_at": "2022-10-27 10:08:39.306032", + "completed_at": "2022-10-27 10:08:39.306035", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 50, + "parent_lattice_id": 4, + "transport_graph_node_id": 19, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_19", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.624526", + "updated_at": "2022-10-27 10:08:39.344570", + "started_at": "2022-10-27 10:08:39.339834", + "completed_at": "2022-10-27 10:08:39.339839", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 51, + "parent_lattice_id": 4, + "transport_graph_node_id": 20, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_20", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.642423", + "updated_at": "2022-10-27 10:08:39.378598", + "started_at": "2022-10-27 10:08:39.372707", + "completed_at": "2022-10-27 10:08:39.372710", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 52, + "parent_lattice_id": 4, + "transport_graph_node_id": 21, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_21", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.659032", + "updated_at": "2022-10-27 10:08:39.410576", + "started_at": "2022-10-27 10:08:39.406279", + "completed_at": "2022-10-27 10:08:39.406281", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 53, + "parent_lattice_id": 4, + "transport_graph_node_id": 22, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_22", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.675982", + "updated_at": "2022-10-27 10:08:39.442893", + "started_at": "2022-10-27 10:08:39.438271", + "completed_at": "2022-10-27 10:08:39.438274", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 54, + "parent_lattice_id": 4, + "transport_graph_node_id": 23, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_23", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.691008", + "updated_at": "2022-10-27 10:08:39.475648", + "started_at": "2022-10-27 10:08:39.471663", + "completed_at": "2022-10-27 10:08:39.471666", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 55, + "parent_lattice_id": 4, + "transport_graph_node_id": 24, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_24", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.706843", + "updated_at": "2022-10-27 10:08:43.345118", + "started_at": "2022-10-27 10:08:43.012521", + "completed_at": "2022-10-27 10:08:43.340161", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 56, + "parent_lattice_id": 4, + "transport_graph_node_id": 25, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_25", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.725044", + "updated_at": "2022-10-27 10:08:42.654361", + "started_at": "2022-10-27 10:08:42.364016", + "completed_at": "2022-10-27 10:08:42.650965", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 57, + "parent_lattice_id": 4, + "transport_graph_node_id": 26, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_26", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.742116", + "updated_at": "2022-10-27 10:08:39.508733", + "started_at": "2022-10-27 10:08:39.504710", + "completed_at": "2022-10-27 10:08:39.504713", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 58, + "parent_lattice_id": 4, + "transport_graph_node_id": 27, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_27", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.758671", + "updated_at": "2022-10-27 10:08:39.540296", + "started_at": "2022-10-27 10:08:39.536280", + "completed_at": "2022-10-27 10:08:39.536282", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 59, + "parent_lattice_id": 4, + "transport_graph_node_id": 28, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_28", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.778892", + "updated_at": "2022-10-27 10:08:39.572480", + "started_at": "2022-10-27 10:08:39.567594", + "completed_at": "2022-10-27 10:08:39.567598", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 60, + "parent_lattice_id": 4, + "transport_graph_node_id": 29, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_29", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.795931", + "updated_at": "2022-10-27 10:08:39.607869", + "started_at": "2022-10-27 10:08:39.602978", + "completed_at": "2022-10-27 10:08:39.602981", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 61, + "parent_lattice_id": 4, + "transport_graph_node_id": 30, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_30", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.808616", + "updated_at": "2022-10-27 10:08:39.642195", + "started_at": "2022-10-27 10:08:39.636935", + "completed_at": "2022-10-27 10:08:39.636938", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 62, + "parent_lattice_id": 4, + "transport_graph_node_id": 31, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_31", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.826128", + "updated_at": "2022-10-27 10:08:39.681521", + "started_at": "2022-10-27 10:08:39.676238", + "completed_at": "2022-10-27 10:08:39.676241", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 63, + "parent_lattice_id": 4, + "transport_graph_node_id": 32, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_32", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.842655", + "updated_at": "2022-10-27 10:08:39.716039", + "started_at": "2022-10-27 10:08:39.710482", + "completed_at": "2022-10-27 10:08:39.710485", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 64, + "parent_lattice_id": 4, + "transport_graph_node_id": 33, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_33", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.857408", + "updated_at": "2022-10-27 10:08:39.748445", + "started_at": "2022-10-27 10:08:39.743820", + "completed_at": "2022-10-27 10:08:39.743822", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 65, + "parent_lattice_id": 4, + "transport_graph_node_id": 34, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_34", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.875349", + "updated_at": "2022-10-27 10:08:39.782746", + "started_at": "2022-10-27 10:08:39.776311", + "completed_at": "2022-10-27 10:08:39.776316", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 66, + "parent_lattice_id": 4, + "transport_graph_node_id": 35, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_35", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.892565", + "updated_at": "2022-10-27 10:08:39.816223", + "started_at": "2022-10-27 10:08:39.813526", + "completed_at": "2022-10-27 10:08:39.813527", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 67, + "parent_lattice_id": 4, + "transport_graph_node_id": 36, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_36", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.909599", + "updated_at": "2022-10-27 10:08:43.507730", + "started_at": "2022-10-27 10:08:43.124746", + "completed_at": "2022-10-27 10:08:43.502348", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 68, + "parent_lattice_id": 4, + "transport_graph_node_id": 37, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_37", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.925895", + "updated_at": "2022-10-27 10:08:42.773297", + "started_at": "2022-10-27 10:08:42.410990", + "completed_at": "2022-10-27 10:08:42.767106", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 69, + "parent_lattice_id": 4, + "transport_graph_node_id": 38, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_38", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.941241", + "updated_at": "2022-10-27 10:08:39.844978", + "started_at": "2022-10-27 10:08:39.840526", + "completed_at": "2022-10-27 10:08:39.840528", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 70, + "parent_lattice_id": 4, + "transport_graph_node_id": 39, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_39", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.958115", + "updated_at": "2022-10-27 10:08:39.876766", + "started_at": "2022-10-27 10:08:39.872532", + "completed_at": "2022-10-27 10:08:39.872534", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 71, + "parent_lattice_id": 4, + "transport_graph_node_id": 40, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_40", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.972882", + "updated_at": "2022-10-27 10:08:39.910667", + "started_at": "2022-10-27 10:08:39.905887", + "completed_at": "2022-10-27 10:08:39.905891", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 72, + "parent_lattice_id": 4, + "transport_graph_node_id": 41, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_41", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.988747", + "updated_at": "2022-10-27 10:08:39.941892", + "started_at": "2022-10-27 10:08:39.937792", + "completed_at": "2022-10-27 10:08:39.937795", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 73, + "parent_lattice_id": 4, + "transport_graph_node_id": 42, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_42", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.004250", + "updated_at": "2022-10-27 10:08:39.977285", + "started_at": "2022-10-27 10:08:39.973990", + "completed_at": "2022-10-27 10:08:39.973995", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 74, + "parent_lattice_id": 4, + "transport_graph_node_id": 43, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_43", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.024965", + "updated_at": "2022-10-27 10:08:40.008953", + "started_at": "2022-10-27 10:08:40.004694", + "completed_at": "2022-10-27 10:08:40.004696", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 75, + "parent_lattice_id": 4, + "transport_graph_node_id": 44, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_44", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.042155", + "updated_at": "2022-10-27 10:08:40.042835", + "started_at": "2022-10-27 10:08:40.038140", + "completed_at": "2022-10-27 10:08:40.038143", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 76, + "parent_lattice_id": 4, + "transport_graph_node_id": 45, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_45", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.057877", + "updated_at": "2022-10-27 10:08:40.076546", + "started_at": "2022-10-27 10:08:40.071383", + "completed_at": "2022-10-27 10:08:40.071386", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 77, + "parent_lattice_id": 4, + "transport_graph_node_id": 46, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_46", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.074699", + "updated_at": "2022-10-27 10:08:40.112193", + "started_at": "2022-10-27 10:08:40.105934", + "completed_at": "2022-10-27 10:08:40.105939", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 78, + "parent_lattice_id": 4, + "transport_graph_node_id": 47, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_47", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.090017", + "updated_at": "2022-10-27 10:08:40.149688", + "started_at": "2022-10-27 10:08:40.142740", + "completed_at": "2022-10-27 10:08:40.142743", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 79, + "parent_lattice_id": 4, + "transport_graph_node_id": 48, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_48", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.108724", + "updated_at": "2022-10-27 10:08:43.425359", + "started_at": "2022-10-27 10:08:43.041103", + "completed_at": "2022-10-27 10:08:43.419548", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 80, + "parent_lattice_id": 4, + "transport_graph_node_id": 49, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_49", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.127189", + "updated_at": "2022-10-27 10:08:42.803765", + "started_at": "2022-10-27 10:08:42.460853", + "completed_at": "2022-10-27 10:08:42.796610", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 81, + "parent_lattice_id": 4, + "transport_graph_node_id": 50, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_50", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.148132", + "updated_at": "2022-10-27 10:08:40.190076", + "started_at": "2022-10-27 10:08:40.181654", + "completed_at": "2022-10-27 10:08:40.181662", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 82, + "parent_lattice_id": 4, + "transport_graph_node_id": 51, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_51", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.163845", + "updated_at": "2022-10-27 10:08:40.225434", + "started_at": "2022-10-27 10:08:40.220720", + "completed_at": "2022-10-27 10:08:40.220725", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 83, + "parent_lattice_id": 4, + "transport_graph_node_id": 52, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_52", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.182859", + "updated_at": "2022-10-27 10:08:40.259819", + "started_at": "2022-10-27 10:08:40.254308", + "completed_at": "2022-10-27 10:08:40.254312", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 84, + "parent_lattice_id": 4, + "transport_graph_node_id": 53, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_53", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.197103", + "updated_at": "2022-10-27 10:08:40.303439", + "started_at": "2022-10-27 10:08:40.293041", + "completed_at": "2022-10-27 10:08:40.293044", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 85, + "parent_lattice_id": 4, + "transport_graph_node_id": 54, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_54", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.212968", + "updated_at": "2022-10-27 10:08:40.345385", + "started_at": "2022-10-27 10:08:40.339703", + "completed_at": "2022-10-27 10:08:40.339706", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 86, + "parent_lattice_id": 4, + "transport_graph_node_id": 55, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_55", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.233015", + "updated_at": "2022-10-27 10:08:40.396468", + "started_at": "2022-10-27 10:08:40.388397", + "completed_at": "2022-10-27 10:08:40.388409", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 87, + "parent_lattice_id": 4, + "transport_graph_node_id": 56, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_56", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.250635", + "updated_at": "2022-10-27 10:08:40.437562", + "started_at": "2022-10-27 10:08:40.427023", + "completed_at": "2022-10-27 10:08:40.427026", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 88, + "parent_lattice_id": 4, + "transport_graph_node_id": 57, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_57", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.272024", + "updated_at": "2022-10-27 10:08:40.486616", + "started_at": "2022-10-27 10:08:40.476868", + "completed_at": "2022-10-27 10:08:40.476872", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 89, + "parent_lattice_id": 4, + "transport_graph_node_id": 58, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_58", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.285661", + "updated_at": "2022-10-27 10:08:40.529335", + "started_at": "2022-10-27 10:08:40.524104", + "completed_at": "2022-10-27 10:08:40.524107", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 90, + "parent_lattice_id": 4, + "transport_graph_node_id": 59, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_59", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.295628", + "updated_at": "2022-10-27 10:08:40.575426", + "started_at": "2022-10-27 10:08:40.568992", + "completed_at": "2022-10-27 10:08:40.569005", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 91, + "parent_lattice_id": 4, + "transport_graph_node_id": 60, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_60", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.308194", + "updated_at": "2022-10-27 10:08:43.594444", + "started_at": "2022-10-27 10:08:43.207640", + "completed_at": "2022-10-27 10:08:43.589035", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 92, + "parent_lattice_id": 4, + "transport_graph_node_id": 61, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_61", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.330291", + "updated_at": "2022-10-27 10:08:42.879558", + "started_at": "2022-10-27 10:08:42.540112", + "completed_at": "2022-10-27 10:08:42.874105", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 93, + "parent_lattice_id": 4, + "transport_graph_node_id": 62, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_62", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.351111", + "updated_at": "2022-10-27 10:08:40.612649", + "started_at": "2022-10-27 10:08:40.606339", + "completed_at": "2022-10-27 10:08:40.606344", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 94, + "parent_lattice_id": 4, + "transport_graph_node_id": 63, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_63", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.374099", + "updated_at": "2022-10-27 10:08:40.644544", + "started_at": "2022-10-27 10:08:40.641995", + "completed_at": "2022-10-27 10:08:40.641996", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 95, + "parent_lattice_id": 4, + "transport_graph_node_id": 64, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_64", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.392103", + "updated_at": "2022-10-27 10:08:40.676302", + "started_at": "2022-10-27 10:08:40.672991", + "completed_at": "2022-10-27 10:08:40.672994", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 96, + "parent_lattice_id": 4, + "transport_graph_node_id": 65, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_65", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.409575", + "updated_at": "2022-10-27 10:08:40.698956", + "started_at": "2022-10-27 10:08:40.696115", + "completed_at": "2022-10-27 10:08:40.696117", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 97, + "parent_lattice_id": 4, + "transport_graph_node_id": 66, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_66", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.429387", + "updated_at": "2022-10-27 10:08:40.727386", + "started_at": "2022-10-27 10:08:40.722953", + "completed_at": "2022-10-27 10:08:40.722956", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 98, + "parent_lattice_id": 4, + "transport_graph_node_id": 67, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_67", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.448684", + "updated_at": "2022-10-27 10:08:40.762293", + "started_at": "2022-10-27 10:08:40.755865", + "completed_at": "2022-10-27 10:08:40.755868", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 99, + "parent_lattice_id": 4, + "transport_graph_node_id": 68, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_68", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.470073", + "updated_at": "2022-10-27 10:08:40.799334", + "started_at": "2022-10-27 10:08:40.793381", + "completed_at": "2022-10-27 10:08:40.793384", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 100, + "parent_lattice_id": 4, + "transport_graph_node_id": 69, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_69", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.487636", + "updated_at": "2022-10-27 10:08:40.837240", + "started_at": "2022-10-27 10:08:40.828280", + "completed_at": "2022-10-27 10:08:40.828284", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 101, + "parent_lattice_id": 4, + "transport_graph_node_id": 70, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_70", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.504586", + "updated_at": "2022-10-27 10:08:40.876500", + "started_at": "2022-10-27 10:08:40.865834", + "completed_at": "2022-10-27 10:08:40.865850", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 102, + "parent_lattice_id": 4, + "transport_graph_node_id": 71, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_71", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.526051", + "updated_at": "2022-10-27 10:08:40.913187", + "started_at": "2022-10-27 10:08:40.908278", + "completed_at": "2022-10-27 10:08:40.908311", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 103, + "parent_lattice_id": 4, + "transport_graph_node_id": 72, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_72", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.546764", + "updated_at": "2022-10-27 10:08:43.656594", + "started_at": "2022-10-27 10:08:43.290300", + "completed_at": "2022-10-27 10:08:43.649360", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 104, + "parent_lattice_id": 4, + "transport_graph_node_id": 73, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_73", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.567169", + "updated_at": "2022-10-27 10:08:42.942520", + "started_at": "2022-10-27 10:08:42.622934", + "completed_at": "2022-10-27 10:08:42.939996", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 105, + "parent_lattice_id": 4, + "transport_graph_node_id": 74, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_74", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.585364", + "updated_at": "2022-10-27 10:08:40.946512", + "started_at": "2022-10-27 10:08:40.941095", + "completed_at": "2022-10-27 10:08:40.941099", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 106, + "parent_lattice_id": 4, + "transport_graph_node_id": 75, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_75", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.599294", + "updated_at": "2022-10-27 10:08:40.981200", + "started_at": "2022-10-27 10:08:40.976058", + "completed_at": "2022-10-27 10:08:40.976061", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 107, + "parent_lattice_id": 4, + "transport_graph_node_id": 76, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_76", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.619618", + "updated_at": "2022-10-27 10:08:41.016945", + "started_at": "2022-10-27 10:08:41.009802", + "completed_at": "2022-10-27 10:08:41.009805", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 108, + "parent_lattice_id": 4, + "transport_graph_node_id": 77, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_77", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.638808", + "updated_at": "2022-10-27 10:08:41.055936", + "started_at": "2022-10-27 10:08:41.048453", + "completed_at": "2022-10-27 10:08:41.048457", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 109, + "parent_lattice_id": 4, + "transport_graph_node_id": 78, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_78", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.654483", + "updated_at": "2022-10-27 10:08:41.091582", + "started_at": "2022-10-27 10:08:41.086414", + "completed_at": "2022-10-27 10:08:41.086417", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 110, + "parent_lattice_id": 4, + "transport_graph_node_id": 79, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_79", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.671724", + "updated_at": "2022-10-27 10:08:41.123420", + "started_at": "2022-10-27 10:08:41.116755", + "completed_at": "2022-10-27 10:08:41.116759", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 111, + "parent_lattice_id": 4, + "transport_graph_node_id": 80, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_80", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.687139", + "updated_at": "2022-10-27 10:08:41.156278", + "started_at": "2022-10-27 10:08:41.149923", + "completed_at": "2022-10-27 10:08:41.149926", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 112, + "parent_lattice_id": 4, + "transport_graph_node_id": 81, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_81", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.704070", + "updated_at": "2022-10-27 10:08:41.192404", + "started_at": "2022-10-27 10:08:41.186466", + "completed_at": "2022-10-27 10:08:41.186469", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 113, + "parent_lattice_id": 4, + "transport_graph_node_id": 82, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_82", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.725651", + "updated_at": "2022-10-27 10:08:41.224627", + "started_at": "2022-10-27 10:08:41.218531", + "completed_at": "2022-10-27 10:08:41.218536", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 114, + "parent_lattice_id": 4, + "transport_graph_node_id": 83, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_83", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.745048", + "updated_at": "2022-10-27 10:08:41.257055", + "started_at": "2022-10-27 10:08:41.250702", + "completed_at": "2022-10-27 10:08:41.250704", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 115, + "parent_lattice_id": 4, + "transport_graph_node_id": 84, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_84", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.760175", + "updated_at": "2022-10-27 10:08:43.692219", + "started_at": "2022-10-27 10:08:43.375045", + "completed_at": "2022-10-27 10:08:43.687405", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 116, + "parent_lattice_id": 4, + "transport_graph_node_id": 85, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_85", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.776605", + "updated_at": "2022-10-27 10:08:42.991653", + "started_at": "2022-10-27 10:08:42.677025", + "completed_at": "2022-10-27 10:08:42.989021", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 117, + "parent_lattice_id": 4, + "transport_graph_node_id": 86, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_86", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.792093", + "updated_at": "2022-10-27 10:08:41.293646", + "started_at": "2022-10-27 10:08:41.288911", + "completed_at": "2022-10-27 10:08:41.288914", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 118, + "parent_lattice_id": 4, + "transport_graph_node_id": 87, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_87", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.808215", + "updated_at": "2022-10-27 10:08:41.327075", + "started_at": "2022-10-27 10:08:41.322042", + "completed_at": "2022-10-27 10:08:41.322045", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 119, + "parent_lattice_id": 4, + "transport_graph_node_id": 88, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_88", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.826520", + "updated_at": "2022-10-27 10:08:41.360839", + "started_at": "2022-10-27 10:08:41.356030", + "completed_at": "2022-10-27 10:08:41.356033", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 120, + "parent_lattice_id": 4, + "transport_graph_node_id": 89, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_89", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.842543", + "updated_at": "2022-10-27 10:08:41.394483", + "started_at": "2022-10-27 10:08:41.389522", + "completed_at": "2022-10-27 10:08:41.389525", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 121, + "parent_lattice_id": 4, + "transport_graph_node_id": 90, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_90", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.859025", + "updated_at": "2022-10-27 10:08:41.428439", + "started_at": "2022-10-27 10:08:41.421862", + "completed_at": "2022-10-27 10:08:41.421865", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 122, + "parent_lattice_id": 4, + "transport_graph_node_id": 91, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_91", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.875312", + "updated_at": "2022-10-27 10:08:41.462184", + "started_at": "2022-10-27 10:08:41.457205", + "completed_at": "2022-10-27 10:08:41.457208", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 123, + "parent_lattice_id": 4, + "transport_graph_node_id": 92, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_92", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.890211", + "updated_at": "2022-10-27 10:08:41.496118", + "started_at": "2022-10-27 10:08:41.491181", + "completed_at": "2022-10-27 10:08:41.491184", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 124, + "parent_lattice_id": 4, + "transport_graph_node_id": 93, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_93", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.906062", + "updated_at": "2022-10-27 10:08:41.527497", + "started_at": "2022-10-27 10:08:41.522585", + "completed_at": "2022-10-27 10:08:41.522588", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 125, + "parent_lattice_id": 4, + "transport_graph_node_id": 94, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_94", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.925923", + "updated_at": "2022-10-27 10:08:41.561383", + "started_at": "2022-10-27 10:08:41.556600", + "completed_at": "2022-10-27 10:08:41.556602", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 126, + "parent_lattice_id": 4, + "transport_graph_node_id": 95, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_95", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.941795", + "updated_at": "2022-10-27 10:08:41.595700", + "started_at": "2022-10-27 10:08:41.590899", + "completed_at": "2022-10-27 10:08:41.590902", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 127, + "parent_lattice_id": 4, + "transport_graph_node_id": 96, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_96", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.957926", + "updated_at": "2022-10-27 10:08:43.766491", + "started_at": "2022-10-27 10:08:43.541105", + "completed_at": "2022-10-27 10:08:43.761303", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 128, + "parent_lattice_id": 4, + "transport_graph_node_id": 97, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_97", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.973121", + "updated_at": "2022-10-27 10:08:43.091461", + "started_at": "2022-10-27 10:08:42.724995", + "completed_at": "2022-10-27 10:08:43.086071", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 129, + "parent_lattice_id": 4, + "transport_graph_node_id": 98, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_98", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.986933", + "updated_at": "2022-10-27 10:08:41.627489", + "started_at": "2022-10-27 10:08:41.622560", + "completed_at": "2022-10-27 10:08:41.622563", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 130, + "parent_lattice_id": 4, + "transport_graph_node_id": 99, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_99", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.001766", + "updated_at": "2022-10-27 10:08:41.661875", + "started_at": "2022-10-27 10:08:41.656441", + "completed_at": "2022-10-27 10:08:41.656443", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 131, + "parent_lattice_id": 4, + "transport_graph_node_id": 100, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_100", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.020035", + "updated_at": "2022-10-27 10:08:41.696908", + "started_at": "2022-10-27 10:08:41.691678", + "completed_at": "2022-10-27 10:08:41.691681", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 132, + "parent_lattice_id": 4, + "transport_graph_node_id": 101, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_101", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.035546", + "updated_at": "2022-10-27 10:08:41.730325", + "started_at": "2022-10-27 10:08:41.725404", + "completed_at": "2022-10-27 10:08:41.725407", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 133, + "parent_lattice_id": 4, + "transport_graph_node_id": 102, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_102", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.046972", + "updated_at": "2022-10-27 10:08:41.767052", + "started_at": "2022-10-27 10:08:41.759767", + "completed_at": "2022-10-27 10:08:41.759771", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 134, + "parent_lattice_id": 4, + "transport_graph_node_id": 103, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_103", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.059033", + "updated_at": "2022-10-27 10:08:41.803941", + "started_at": "2022-10-27 10:08:41.799118", + "completed_at": "2022-10-27 10:08:41.799121", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 135, + "parent_lattice_id": 4, + "transport_graph_node_id": 104, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_104", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.073850", + "updated_at": "2022-10-27 10:08:41.837237", + "started_at": "2022-10-27 10:08:41.830166", + "completed_at": "2022-10-27 10:08:41.830169", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 136, + "parent_lattice_id": 4, + "transport_graph_node_id": 105, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_105", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.086138", + "updated_at": "2022-10-27 10:08:41.873392", + "started_at": "2022-10-27 10:08:41.864510", + "completed_at": "2022-10-27 10:08:41.864513", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 137, + "parent_lattice_id": 4, + "transport_graph_node_id": 106, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_106", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.098049", + "updated_at": "2022-10-27 10:08:41.906181", + "started_at": "2022-10-27 10:08:41.900656", + "completed_at": "2022-10-27 10:08:41.900659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 138, + "parent_lattice_id": 4, + "transport_graph_node_id": 107, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_107", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.112014", + "updated_at": "2022-10-27 10:08:41.940831", + "started_at": "2022-10-27 10:08:41.935954", + "completed_at": "2022-10-27 10:08:41.935957", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 139, + "parent_lattice_id": 4, + "transport_graph_node_id": 108, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_108", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.129412", + "updated_at": "2022-10-27 10:08:43.730488", + "started_at": "2022-10-27 10:08:43.459156", + "completed_at": "2022-10-27 10:08:43.724659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 140, + "parent_lattice_id": 4, + "transport_graph_node_id": 109, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_109", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.146475", + "updated_at": "2022-10-27 10:08:43.062996", + "started_at": "2022-10-27 10:08:42.835169", + "completed_at": "2022-10-27 10:08:43.060465", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 141, + "parent_lattice_id": 4, + "transport_graph_node_id": 110, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_110", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.162055", + "updated_at": "2022-10-27 10:08:41.974642", + "started_at": "2022-10-27 10:08:41.970618", + "completed_at": "2022-10-27 10:08:41.970621", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 142, + "parent_lattice_id": 4, + "transport_graph_node_id": 111, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_111", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.178884", + "updated_at": "2022-10-27 10:08:42.005490", + "started_at": "2022-10-27 10:08:41.998870", + "completed_at": "2022-10-27 10:08:41.998874", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 143, + "parent_lattice_id": 4, + "transport_graph_node_id": 112, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_112", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.195346", + "updated_at": "2022-10-27 10:08:42.038186", + "started_at": "2022-10-27 10:08:42.032233", + "completed_at": "2022-10-27 10:08:42.032236", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 144, + "parent_lattice_id": 4, + "transport_graph_node_id": 113, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_113", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.214888", + "updated_at": "2022-10-27 10:08:42.071763", + "started_at": "2022-10-27 10:08:42.065366", + "completed_at": "2022-10-27 10:08:42.065369", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 145, + "parent_lattice_id": 4, + "transport_graph_node_id": 114, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_114", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.237282", + "updated_at": "2022-10-27 10:08:42.105918", + "started_at": "2022-10-27 10:08:42.099840", + "completed_at": "2022-10-27 10:08:42.099844", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 146, + "parent_lattice_id": 4, + "transport_graph_node_id": 115, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_115", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.253156", + "updated_at": "2022-10-27 10:08:42.141465", + "started_at": "2022-10-27 10:08:42.134805", + "completed_at": "2022-10-27 10:08:42.134812", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 147, + "parent_lattice_id": 4, + "transport_graph_node_id": 116, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_116", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.271635", + "updated_at": "2022-10-27 10:08:42.175810", + "started_at": "2022-10-27 10:08:42.170433", + "completed_at": "2022-10-27 10:08:42.170438", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 148, + "parent_lattice_id": 4, + "transport_graph_node_id": 117, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_117", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.287718", + "updated_at": "2022-10-27 10:08:42.207773", + "started_at": "2022-10-27 10:08:42.202646", + "completed_at": "2022-10-27 10:08:42.202650", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 149, + "parent_lattice_id": 4, + "transport_graph_node_id": 118, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_118", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.302767", + "updated_at": "2022-10-27 10:08:42.238861", + "started_at": "2022-10-27 10:08:42.233364", + "completed_at": "2022-10-27 10:08:42.233366", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "id": 150, + "parent_lattice_id": 4, + "transport_graph_node_id": 119, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_119", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.320742", + "updated_at": "2022-10-27 10:08:42.272361", + "started_at": "2022-10-27 10:08:42.265656", + "completed_at": "2022-10-27 10:08:42.265658", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false, + "error_filename": "error.log" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2023-08-10 10:08:55.902257", + "created_at": "2023-08-10 10:08:55.403522", + "deps_filename": "deps.pkl", + "error_filename": "error.log", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 152, + "is_active": 1, + "job_id": 2, + "name": ":postprocess:", + "parent_lattice_id": 5, + "qelectron_data_exists": 0, + "results_filename": "results.pkl", + "started_at": "2023-08-10 10:08:55.843982", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/home/arunmukesh/.local/share/covalent/data/e8fd09c9-1406-4686-9e77-c8d4d64a76ee/node_1", + "storage_type": "local", + "transport_graph_node_id": 1, + "type": "function", + "updated_at": "2023-08-10 10:08:55.906001", + "value_filename": "value.pkl" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2023-08-10 10:08:55.822223", + "created_at": "2023-08-10 10:08:55.396776", + "deps_filename": "deps.pkl", + "error_filename": "error.log", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 151, + "is_active": 1, + "job_id": 1, + "name": "call_circuit", + "parent_lattice_id": 5, + "qelectron_data_exists": 1, + "results_filename": "results.pkl", + "started_at": "2023-08-10 10:08:55.432686", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/home/arunmukesh/.local/share/covalent/data/e8fd09c9-1406-4686-9e77-c8d4d64a76ee/node_0", + "storage_type": "local", + "transport_graph_node_id": 0, + "type": "function", + "updated_at": "2023-08-10 10:08:55.825643", + "value_filename": "value.pkl" + } ] diff --git a/tests/covalent_ui_backend_tests/utils/data/electrons_old.json b/tests/covalent_ui_backend_tests/utils/data/electrons_old.json new file mode 100644 index 000000000..afba66245 --- /dev/null +++ b/tests/covalent_ui_backend_tests/utils/data/electrons_old.json @@ -0,0 +1,4410 @@ +[ + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.483405", + "created_at": "2022-09-23 10:01:11.062647", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 1, + "info_filename": "info.log", + "is_active": 1, + "name": "hello", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.168972", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_0", + "storage_type": "local", + "transport_graph_node_id": 0, + "type": "function", + "updated_at": "2022-09-23 10:01:11.490513", + "value_filename": "value.pkl", + "job_id": 0, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.520838", + "created_at": "2022-09-23 10:01:11.075465", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 2, + "info_filename": "info.log", + "is_active": 1, + "name": "moniker", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.264347", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_1", + "storage_type": "local", + "transport_graph_node_id": 1, + "type": "function", + "updated_at": "2022-09-23 10:01:11.526865", + "value_filename": "value.pkl", + "job_id": 0, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.194419", + "created_at": "2022-09-23 10:01:11.085971", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 3, + "info_filename": "info.log", + "is_active": 1, + "name": ":parameter:shore", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.194417", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_2", + "storage_type": "local", + "transport_graph_node_id": 2, + "type": "parameter", + "updated_at": "2022-09-23 10:01:11.197121", + "value_filename": "value.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.588248", + "created_at": "2022-09-23 10:01:11.098325", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 4, + "info_filename": "info.log", + "is_active": 1, + "name": "join", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.553084", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_3", + "storage_type": "local", + "transport_graph_node_id": 3, + "type": "function", + "updated_at": "2022-09-23 10:01:11.591516", + "value_filename": "value.pkl", + "job_id": 2, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.640049", + "created_at": "2022-09-23 10:01:11.109305", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 5, + "info_filename": "info.log", + "is_active": 1, + "name": "join_+_ !!", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.611520", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_4", + "storage_type": "local", + "transport_graph_node_id": 4, + "type": "function", + "updated_at": "2022-09-23 10:01:11.642760", + "value_filename": "value.pkl", + "job_id": 3, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2022-09-23 10:01:11.226986", + "created_at": "2022-09-23 10:01:11.121100", + "deps_filename": "deps.pkl", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 6, + "info_filename": "info.log", + "is_active": 1, + "name": ":parameter: !!", + "parent_lattice_id": 1, + "results_filename": "results.pkl", + "started_at": "2022-09-23 10:01:11.226984", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/tests/covalent_ui_backend_tests/utils/results/78525234-72ec-42dc-94a0-f4751707f9cd/node_5", + "storage_type": "local", + "transport_graph_node_id": 5, + "type": "parameter", + "updated_at": "2022-09-23 10:01:11.229709", + "value_filename": "value.pkl", + "job_id": 4, + "qelectron_data_exists": false + }, + { + "id": 7, + "parent_lattice_id": 2, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.721544", + "updated_at": "2022-10-27 10:08:33.937039", + "started_at": "2022-10-27 10:08:33.861837", + "completed_at": "2022-10-27 10:08:33.933100", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 5, + "qelectron_data_exists": false + }, + { + "id": 8, + "parent_lattice_id": 2, + "transport_graph_node_id": 1, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.737909", + "updated_at": "2022-10-27 10:08:33.832449", + "started_at": "2022-10-27 10:08:33.827366", + "completed_at": "2022-10-27 10:08:33.827372", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 6, + "qelectron_data_exists": false + }, + { + "id": 9, + "parent_lattice_id": 2, + "transport_graph_node_id": 2, + "type": "sublattice", + "name": ":sublattice:sub", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.754840", + "updated_at": "2022-10-27 10:08:36.033792", + "started_at": "2022-10-27 10:08:33.967565", + "completed_at": "2022-10-27 10:08:36.028194", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 10, + "parent_lattice_id": 2, + "transport_graph_node_id": 3, + "type": "sublattice", + "name": ":sublattice:sub", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/a95d84ad-c441-446d-83ae-46380dcdf38e/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:33.769064", + "updated_at": "2022-10-27 10:08:43.907507", + "started_at": "2022-10-27 10:08:36.065830", + "completed_at": "2022-10-27 10:08:43.905519", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 11, + "parent_lattice_id": 3, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.121824", + "updated_at": "2022-10-27 10:08:35.166045", + "started_at": "2022-10-27 10:08:34.939603", + "completed_at": "2022-10-27 10:08:35.159092", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 12, + "parent_lattice_id": 3, + "transport_graph_node_id": 1, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.141566", + "updated_at": "2022-10-27 10:08:34.530775", + "started_at": "2022-10-27 10:08:34.523975", + "completed_at": "2022-10-27 10:08:34.523987", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 13, + "parent_lattice_id": 3, + "transport_graph_node_id": 2, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.157807", + "updated_at": "2022-10-27 10:08:35.245235", + "started_at": "2022-10-27 10:08:34.968949", + "completed_at": "2022-10-27 10:08:35.238154", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 14, + "parent_lattice_id": 3, + "transport_graph_node_id": 3, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.174837", + "updated_at": "2022-10-27 10:08:34.582442", + "started_at": "2022-10-27 10:08:34.576178", + "completed_at": "2022-10-27 10:08:34.576181", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 15, + "parent_lattice_id": 3, + "transport_graph_node_id": 4, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_4", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.193334", + "updated_at": "2022-10-27 10:08:35.326034", + "started_at": "2022-10-27 10:08:35.011096", + "completed_at": "2022-10-27 10:08:35.324016", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 16, + "parent_lattice_id": 3, + "transport_graph_node_id": 5, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_5", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.210810", + "updated_at": "2022-10-27 10:08:34.618496", + "started_at": "2022-10-27 10:08:34.614049", + "completed_at": "2022-10-27 10:08:34.614051", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 17, + "parent_lattice_id": 3, + "transport_graph_node_id": 6, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_6", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.225974", + "updated_at": "2022-10-27 10:08:35.414015", + "started_at": "2022-10-27 10:08:35.058712", + "completed_at": "2022-10-27 10:08:35.408068", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 18, + "parent_lattice_id": 3, + "transport_graph_node_id": 7, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_7", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.243921", + "updated_at": "2022-10-27 10:08:34.656399", + "started_at": "2022-10-27 10:08:34.647511", + "completed_at": "2022-10-27 10:08:34.647516", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 19, + "parent_lattice_id": 3, + "transport_graph_node_id": 8, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_8", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.262261", + "updated_at": "2022-10-27 10:08:35.564214", + "started_at": "2022-10-27 10:08:35.109570", + "completed_at": "2022-10-27 10:08:35.558177", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 20, + "parent_lattice_id": 3, + "transport_graph_node_id": 9, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_9", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.279546", + "updated_at": "2022-10-27 10:08:34.696612", + "started_at": "2022-10-27 10:08:34.689654", + "completed_at": "2022-10-27 10:08:34.689659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 21, + "parent_lattice_id": 3, + "transport_graph_node_id": 10, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_10", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.300588", + "updated_at": "2022-10-27 10:08:35.525729", + "started_at": "2022-10-27 10:08:35.193220", + "completed_at": "2022-10-27 10:08:35.514718", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 22, + "parent_lattice_id": 3, + "transport_graph_node_id": 11, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_11", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.319777", + "updated_at": "2022-10-27 10:08:34.737932", + "started_at": "2022-10-27 10:08:34.729529", + "completed_at": "2022-10-27 10:08:34.729533", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 23, + "parent_lattice_id": 3, + "transport_graph_node_id": 12, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_12", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.337839", + "updated_at": "2022-10-27 10:08:35.682213", + "started_at": "2022-10-27 10:08:35.287892", + "completed_at": "2022-10-27 10:08:35.673424", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 24, + "parent_lattice_id": 3, + "transport_graph_node_id": 13, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_13", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.357823", + "updated_at": "2022-10-27 10:08:34.777085", + "started_at": "2022-10-27 10:08:34.769243", + "completed_at": "2022-10-27 10:08:34.769254", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 25, + "parent_lattice_id": 3, + "transport_graph_node_id": 14, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_14", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.374314", + "updated_at": "2022-10-27 10:08:35.774775", + "started_at": "2022-10-27 10:08:35.354986", + "completed_at": "2022-10-27 10:08:35.763519", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 26, + "parent_lattice_id": 3, + "transport_graph_node_id": 15, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_15", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.390256", + "updated_at": "2022-10-27 10:08:34.818988", + "started_at": "2022-10-27 10:08:34.810072", + "completed_at": "2022-10-27 10:08:34.810076", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 27, + "parent_lattice_id": 3, + "transport_graph_node_id": 16, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_16", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.406105", + "updated_at": "2022-10-27 10:08:35.818772", + "started_at": "2022-10-27 10:08:35.447829", + "completed_at": "2022-10-27 10:08:35.809561", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 28, + "parent_lattice_id": 3, + "transport_graph_node_id": 17, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_17", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.424469", + "updated_at": "2022-10-27 10:08:34.860444", + "started_at": "2022-10-27 10:08:34.853785", + "completed_at": "2022-10-27 10:08:34.853790", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 29, + "parent_lattice_id": 3, + "transport_graph_node_id": 18, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_18", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.442225", + "updated_at": "2022-10-27 10:08:35.872264", + "started_at": "2022-10-27 10:08:35.596881", + "completed_at": "2022-10-27 10:08:35.861501", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 30, + "parent_lattice_id": 3, + "transport_graph_node_id": 19, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/89be0bcf-95dd-40a6-947e-6af6c56f147d/node_19", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:34.457399", + "updated_at": "2022-10-27 10:08:34.902193", + "started_at": "2022-10-27 10:08:34.895470", + "completed_at": "2022-10-27 10:08:34.895475", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 31, + "parent_lattice_id": 4, + "transport_graph_node_id": 0, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_0", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.302082", + "updated_at": "2022-10-27 10:08:43.171795", + "started_at": "2022-10-27 10:08:42.917693", + "completed_at": "2022-10-27 10:08:43.165874", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 32, + "parent_lattice_id": 4, + "transport_graph_node_id": 1, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_1", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.320779", + "updated_at": "2022-10-27 10:08:42.512375", + "started_at": "2022-10-27 10:08:42.299329", + "completed_at": "2022-10-27 10:08:42.506677", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 33, + "parent_lattice_id": 4, + "transport_graph_node_id": 2, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_2", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.338612", + "updated_at": "2022-10-27 10:08:38.787144", + "started_at": "2022-10-27 10:08:38.780790", + "completed_at": "2022-10-27 10:08:38.780796", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 34, + "parent_lattice_id": 4, + "transport_graph_node_id": 3, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_3", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.355690", + "updated_at": "2022-10-27 10:08:38.825702", + "started_at": "2022-10-27 10:08:38.820257", + "completed_at": "2022-10-27 10:08:38.820263", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 35, + "parent_lattice_id": 4, + "transport_graph_node_id": 4, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_4", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.373101", + "updated_at": "2022-10-27 10:08:38.859815", + "started_at": "2022-10-27 10:08:38.854643", + "completed_at": "2022-10-27 10:08:38.854648", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 36, + "parent_lattice_id": 4, + "transport_graph_node_id": 5, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_5", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.389371", + "updated_at": "2022-10-27 10:08:38.893261", + "started_at": "2022-10-27 10:08:38.887957", + "completed_at": "2022-10-27 10:08:38.887961", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 37, + "parent_lattice_id": 4, + "transport_graph_node_id": 6, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_6", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.407041", + "updated_at": "2022-10-27 10:08:38.929879", + "started_at": "2022-10-27 10:08:38.922953", + "completed_at": "2022-10-27 10:08:38.922958", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 38, + "parent_lattice_id": 4, + "transport_graph_node_id": 7, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_7", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.426321", + "updated_at": "2022-10-27 10:08:38.980004", + "started_at": "2022-10-27 10:08:38.964715", + "completed_at": "2022-10-27 10:08:38.964719", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 39, + "parent_lattice_id": 4, + "transport_graph_node_id": 8, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_8", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.442352", + "updated_at": "2022-10-27 10:08:39.045890", + "started_at": "2022-10-27 10:08:39.035460", + "completed_at": "2022-10-27 10:08:39.035471", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 40, + "parent_lattice_id": 4, + "transport_graph_node_id": 9, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_9", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.457450", + "updated_at": "2022-10-27 10:08:39.092994", + "started_at": "2022-10-27 10:08:39.090917", + "completed_at": "2022-10-27 10:08:39.090918", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 41, + "parent_lattice_id": 4, + "transport_graph_node_id": 10, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_10", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.474123", + "updated_at": "2022-10-27 10:08:39.118499", + "started_at": "2022-10-27 10:08:39.115263", + "completed_at": "2022-10-27 10:08:39.115265", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 42, + "parent_lattice_id": 4, + "transport_graph_node_id": 11, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_11", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.489691", + "updated_at": "2022-10-27 10:08:39.143260", + "started_at": "2022-10-27 10:08:39.140423", + "completed_at": "2022-10-27 10:08:39.140424", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 43, + "parent_lattice_id": 4, + "transport_graph_node_id": 12, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_12", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.508357", + "updated_at": "2022-10-27 10:08:43.258311", + "started_at": "2022-10-27 10:08:42.962785", + "completed_at": "2022-10-27 10:08:43.253146", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 44, + "parent_lattice_id": 4, + "transport_graph_node_id": 13, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_13", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.526014", + "updated_at": "2022-10-27 10:08:42.589511", + "started_at": "2022-10-27 10:08:42.322474", + "completed_at": "2022-10-27 10:08:42.587122", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 45, + "parent_lattice_id": 4, + "transport_graph_node_id": 14, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_14", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.543830", + "updated_at": "2022-10-27 10:08:39.175803", + "started_at": "2022-10-27 10:08:39.170609", + "completed_at": "2022-10-27 10:08:39.170613", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 46, + "parent_lattice_id": 4, + "transport_graph_node_id": 15, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_15", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.558599", + "updated_at": "2022-10-27 10:08:39.211919", + "started_at": "2022-10-27 10:08:39.205854", + "completed_at": "2022-10-27 10:08:39.205857", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 47, + "parent_lattice_id": 4, + "transport_graph_node_id": 16, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_16", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.574942", + "updated_at": "2022-10-27 10:08:39.254111", + "started_at": "2022-10-27 10:08:39.248043", + "completed_at": "2022-10-27 10:08:39.248047", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 48, + "parent_lattice_id": 4, + "transport_graph_node_id": 17, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_17", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.592225", + "updated_at": "2022-10-27 10:08:39.280784", + "started_at": "2022-10-27 10:08:39.277848", + "completed_at": "2022-10-27 10:08:39.277851", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 49, + "parent_lattice_id": 4, + "transport_graph_node_id": 18, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_18", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.605931", + "updated_at": "2022-10-27 10:08:39.310818", + "started_at": "2022-10-27 10:08:39.306032", + "completed_at": "2022-10-27 10:08:39.306035", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 50, + "parent_lattice_id": 4, + "transport_graph_node_id": 19, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_19", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.624526", + "updated_at": "2022-10-27 10:08:39.344570", + "started_at": "2022-10-27 10:08:39.339834", + "completed_at": "2022-10-27 10:08:39.339839", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 51, + "parent_lattice_id": 4, + "transport_graph_node_id": 20, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_20", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.642423", + "updated_at": "2022-10-27 10:08:39.378598", + "started_at": "2022-10-27 10:08:39.372707", + "completed_at": "2022-10-27 10:08:39.372710", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 52, + "parent_lattice_id": 4, + "transport_graph_node_id": 21, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_21", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.659032", + "updated_at": "2022-10-27 10:08:39.410576", + "started_at": "2022-10-27 10:08:39.406279", + "completed_at": "2022-10-27 10:08:39.406281", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 53, + "parent_lattice_id": 4, + "transport_graph_node_id": 22, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_22", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.675982", + "updated_at": "2022-10-27 10:08:39.442893", + "started_at": "2022-10-27 10:08:39.438271", + "completed_at": "2022-10-27 10:08:39.438274", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 54, + "parent_lattice_id": 4, + "transport_graph_node_id": 23, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_23", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.691008", + "updated_at": "2022-10-27 10:08:39.475648", + "started_at": "2022-10-27 10:08:39.471663", + "completed_at": "2022-10-27 10:08:39.471666", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 55, + "parent_lattice_id": 4, + "transport_graph_node_id": 24, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_24", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.706843", + "updated_at": "2022-10-27 10:08:43.345118", + "started_at": "2022-10-27 10:08:43.012521", + "completed_at": "2022-10-27 10:08:43.340161", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 56, + "parent_lattice_id": 4, + "transport_graph_node_id": 25, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_25", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.725044", + "updated_at": "2022-10-27 10:08:42.654361", + "started_at": "2022-10-27 10:08:42.364016", + "completed_at": "2022-10-27 10:08:42.650965", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 57, + "parent_lattice_id": 4, + "transport_graph_node_id": 26, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_26", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.742116", + "updated_at": "2022-10-27 10:08:39.508733", + "started_at": "2022-10-27 10:08:39.504710", + "completed_at": "2022-10-27 10:08:39.504713", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 58, + "parent_lattice_id": 4, + "transport_graph_node_id": 27, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_27", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.758671", + "updated_at": "2022-10-27 10:08:39.540296", + "started_at": "2022-10-27 10:08:39.536280", + "completed_at": "2022-10-27 10:08:39.536282", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 59, + "parent_lattice_id": 4, + "transport_graph_node_id": 28, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_28", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.778892", + "updated_at": "2022-10-27 10:08:39.572480", + "started_at": "2022-10-27 10:08:39.567594", + "completed_at": "2022-10-27 10:08:39.567598", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 60, + "parent_lattice_id": 4, + "transport_graph_node_id": 29, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_29", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.795931", + "updated_at": "2022-10-27 10:08:39.607869", + "started_at": "2022-10-27 10:08:39.602978", + "completed_at": "2022-10-27 10:08:39.602981", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 61, + "parent_lattice_id": 4, + "transport_graph_node_id": 30, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_30", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.808616", + "updated_at": "2022-10-27 10:08:39.642195", + "started_at": "2022-10-27 10:08:39.636935", + "completed_at": "2022-10-27 10:08:39.636938", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 62, + "parent_lattice_id": 4, + "transport_graph_node_id": 31, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_31", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.826128", + "updated_at": "2022-10-27 10:08:39.681521", + "started_at": "2022-10-27 10:08:39.676238", + "completed_at": "2022-10-27 10:08:39.676241", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 63, + "parent_lattice_id": 4, + "transport_graph_node_id": 32, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_32", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.842655", + "updated_at": "2022-10-27 10:08:39.716039", + "started_at": "2022-10-27 10:08:39.710482", + "completed_at": "2022-10-27 10:08:39.710485", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 64, + "parent_lattice_id": 4, + "transport_graph_node_id": 33, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_33", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.857408", + "updated_at": "2022-10-27 10:08:39.748445", + "started_at": "2022-10-27 10:08:39.743820", + "completed_at": "2022-10-27 10:08:39.743822", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 65, + "parent_lattice_id": 4, + "transport_graph_node_id": 34, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_34", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.875349", + "updated_at": "2022-10-27 10:08:39.782746", + "started_at": "2022-10-27 10:08:39.776311", + "completed_at": "2022-10-27 10:08:39.776316", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 66, + "parent_lattice_id": 4, + "transport_graph_node_id": 35, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_35", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.892565", + "updated_at": "2022-10-27 10:08:39.816223", + "started_at": "2022-10-27 10:08:39.813526", + "completed_at": "2022-10-27 10:08:39.813527", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 67, + "parent_lattice_id": 4, + "transport_graph_node_id": 36, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_36", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.909599", + "updated_at": "2022-10-27 10:08:43.507730", + "started_at": "2022-10-27 10:08:43.124746", + "completed_at": "2022-10-27 10:08:43.502348", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 68, + "parent_lattice_id": 4, + "transport_graph_node_id": 37, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_37", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.925895", + "updated_at": "2022-10-27 10:08:42.773297", + "started_at": "2022-10-27 10:08:42.410990", + "completed_at": "2022-10-27 10:08:42.767106", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 69, + "parent_lattice_id": 4, + "transport_graph_node_id": 38, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_38", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.941241", + "updated_at": "2022-10-27 10:08:39.844978", + "started_at": "2022-10-27 10:08:39.840526", + "completed_at": "2022-10-27 10:08:39.840528", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 70, + "parent_lattice_id": 4, + "transport_graph_node_id": 39, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_39", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.958115", + "updated_at": "2022-10-27 10:08:39.876766", + "started_at": "2022-10-27 10:08:39.872532", + "completed_at": "2022-10-27 10:08:39.872534", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 71, + "parent_lattice_id": 4, + "transport_graph_node_id": 40, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_40", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.972882", + "updated_at": "2022-10-27 10:08:39.910667", + "started_at": "2022-10-27 10:08:39.905887", + "completed_at": "2022-10-27 10:08:39.905891", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 72, + "parent_lattice_id": 4, + "transport_graph_node_id": 41, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_41", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:36.988747", + "updated_at": "2022-10-27 10:08:39.941892", + "started_at": "2022-10-27 10:08:39.937792", + "completed_at": "2022-10-27 10:08:39.937795", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 73, + "parent_lattice_id": 4, + "transport_graph_node_id": 42, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_42", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.004250", + "updated_at": "2022-10-27 10:08:39.977285", + "started_at": "2022-10-27 10:08:39.973990", + "completed_at": "2022-10-27 10:08:39.973995", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 74, + "parent_lattice_id": 4, + "transport_graph_node_id": 43, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_43", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.024965", + "updated_at": "2022-10-27 10:08:40.008953", + "started_at": "2022-10-27 10:08:40.004694", + "completed_at": "2022-10-27 10:08:40.004696", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 75, + "parent_lattice_id": 4, + "transport_graph_node_id": 44, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_44", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.042155", + "updated_at": "2022-10-27 10:08:40.042835", + "started_at": "2022-10-27 10:08:40.038140", + "completed_at": "2022-10-27 10:08:40.038143", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 76, + "parent_lattice_id": 4, + "transport_graph_node_id": 45, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_45", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.057877", + "updated_at": "2022-10-27 10:08:40.076546", + "started_at": "2022-10-27 10:08:40.071383", + "completed_at": "2022-10-27 10:08:40.071386", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 77, + "parent_lattice_id": 4, + "transport_graph_node_id": 46, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_46", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.074699", + "updated_at": "2022-10-27 10:08:40.112193", + "started_at": "2022-10-27 10:08:40.105934", + "completed_at": "2022-10-27 10:08:40.105939", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 78, + "parent_lattice_id": 4, + "transport_graph_node_id": 47, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_47", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.090017", + "updated_at": "2022-10-27 10:08:40.149688", + "started_at": "2022-10-27 10:08:40.142740", + "completed_at": "2022-10-27 10:08:40.142743", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 79, + "parent_lattice_id": 4, + "transport_graph_node_id": 48, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_48", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.108724", + "updated_at": "2022-10-27 10:08:43.425359", + "started_at": "2022-10-27 10:08:43.041103", + "completed_at": "2022-10-27 10:08:43.419548", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 80, + "parent_lattice_id": 4, + "transport_graph_node_id": 49, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_49", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.127189", + "updated_at": "2022-10-27 10:08:42.803765", + "started_at": "2022-10-27 10:08:42.460853", + "completed_at": "2022-10-27 10:08:42.796610", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 81, + "parent_lattice_id": 4, + "transport_graph_node_id": 50, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_50", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.148132", + "updated_at": "2022-10-27 10:08:40.190076", + "started_at": "2022-10-27 10:08:40.181654", + "completed_at": "2022-10-27 10:08:40.181662", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 82, + "parent_lattice_id": 4, + "transport_graph_node_id": 51, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_51", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.163845", + "updated_at": "2022-10-27 10:08:40.225434", + "started_at": "2022-10-27 10:08:40.220720", + "completed_at": "2022-10-27 10:08:40.220725", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 83, + "parent_lattice_id": 4, + "transport_graph_node_id": 52, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_52", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.182859", + "updated_at": "2022-10-27 10:08:40.259819", + "started_at": "2022-10-27 10:08:40.254308", + "completed_at": "2022-10-27 10:08:40.254312", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 84, + "parent_lattice_id": 4, + "transport_graph_node_id": 53, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_53", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.197103", + "updated_at": "2022-10-27 10:08:40.303439", + "started_at": "2022-10-27 10:08:40.293041", + "completed_at": "2022-10-27 10:08:40.293044", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 85, + "parent_lattice_id": 4, + "transport_graph_node_id": 54, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_54", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.212968", + "updated_at": "2022-10-27 10:08:40.345385", + "started_at": "2022-10-27 10:08:40.339703", + "completed_at": "2022-10-27 10:08:40.339706", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 86, + "parent_lattice_id": 4, + "transport_graph_node_id": 55, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_55", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.233015", + "updated_at": "2022-10-27 10:08:40.396468", + "started_at": "2022-10-27 10:08:40.388397", + "completed_at": "2022-10-27 10:08:40.388409", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 87, + "parent_lattice_id": 4, + "transport_graph_node_id": 56, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_56", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.250635", + "updated_at": "2022-10-27 10:08:40.437562", + "started_at": "2022-10-27 10:08:40.427023", + "completed_at": "2022-10-27 10:08:40.427026", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 88, + "parent_lattice_id": 4, + "transport_graph_node_id": 57, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_57", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.272024", + "updated_at": "2022-10-27 10:08:40.486616", + "started_at": "2022-10-27 10:08:40.476868", + "completed_at": "2022-10-27 10:08:40.476872", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 89, + "parent_lattice_id": 4, + "transport_graph_node_id": 58, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_58", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.285661", + "updated_at": "2022-10-27 10:08:40.529335", + "started_at": "2022-10-27 10:08:40.524104", + "completed_at": "2022-10-27 10:08:40.524107", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 90, + "parent_lattice_id": 4, + "transport_graph_node_id": 59, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_59", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.295628", + "updated_at": "2022-10-27 10:08:40.575426", + "started_at": "2022-10-27 10:08:40.568992", + "completed_at": "2022-10-27 10:08:40.569005", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 91, + "parent_lattice_id": 4, + "transport_graph_node_id": 60, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_60", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.308194", + "updated_at": "2022-10-27 10:08:43.594444", + "started_at": "2022-10-27 10:08:43.207640", + "completed_at": "2022-10-27 10:08:43.589035", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 92, + "parent_lattice_id": 4, + "transport_graph_node_id": 61, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_61", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.330291", + "updated_at": "2022-10-27 10:08:42.879558", + "started_at": "2022-10-27 10:08:42.540112", + "completed_at": "2022-10-27 10:08:42.874105", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 93, + "parent_lattice_id": 4, + "transport_graph_node_id": 62, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_62", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.351111", + "updated_at": "2022-10-27 10:08:40.612649", + "started_at": "2022-10-27 10:08:40.606339", + "completed_at": "2022-10-27 10:08:40.606344", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 94, + "parent_lattice_id": 4, + "transport_graph_node_id": 63, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_63", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.374099", + "updated_at": "2022-10-27 10:08:40.644544", + "started_at": "2022-10-27 10:08:40.641995", + "completed_at": "2022-10-27 10:08:40.641996", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 95, + "parent_lattice_id": 4, + "transport_graph_node_id": 64, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_64", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.392103", + "updated_at": "2022-10-27 10:08:40.676302", + "started_at": "2022-10-27 10:08:40.672991", + "completed_at": "2022-10-27 10:08:40.672994", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 96, + "parent_lattice_id": 4, + "transport_graph_node_id": 65, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_65", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.409575", + "updated_at": "2022-10-27 10:08:40.698956", + "started_at": "2022-10-27 10:08:40.696115", + "completed_at": "2022-10-27 10:08:40.696117", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 97, + "parent_lattice_id": 4, + "transport_graph_node_id": 66, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_66", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.429387", + "updated_at": "2022-10-27 10:08:40.727386", + "started_at": "2022-10-27 10:08:40.722953", + "completed_at": "2022-10-27 10:08:40.722956", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 98, + "parent_lattice_id": 4, + "transport_graph_node_id": 67, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_67", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.448684", + "updated_at": "2022-10-27 10:08:40.762293", + "started_at": "2022-10-27 10:08:40.755865", + "completed_at": "2022-10-27 10:08:40.755868", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 99, + "parent_lattice_id": 4, + "transport_graph_node_id": 68, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_68", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.470073", + "updated_at": "2022-10-27 10:08:40.799334", + "started_at": "2022-10-27 10:08:40.793381", + "completed_at": "2022-10-27 10:08:40.793384", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 100, + "parent_lattice_id": 4, + "transport_graph_node_id": 69, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_69", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.487636", + "updated_at": "2022-10-27 10:08:40.837240", + "started_at": "2022-10-27 10:08:40.828280", + "completed_at": "2022-10-27 10:08:40.828284", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 101, + "parent_lattice_id": 4, + "transport_graph_node_id": 70, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_70", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.504586", + "updated_at": "2022-10-27 10:08:40.876500", + "started_at": "2022-10-27 10:08:40.865834", + "completed_at": "2022-10-27 10:08:40.865850", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 102, + "parent_lattice_id": 4, + "transport_graph_node_id": 71, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_71", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.526051", + "updated_at": "2022-10-27 10:08:40.913187", + "started_at": "2022-10-27 10:08:40.908278", + "completed_at": "2022-10-27 10:08:40.908311", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 103, + "parent_lattice_id": 4, + "transport_graph_node_id": 72, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_72", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.546764", + "updated_at": "2022-10-27 10:08:43.656594", + "started_at": "2022-10-27 10:08:43.290300", + "completed_at": "2022-10-27 10:08:43.649360", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 104, + "parent_lattice_id": 4, + "transport_graph_node_id": 73, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_73", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.567169", + "updated_at": "2022-10-27 10:08:42.942520", + "started_at": "2022-10-27 10:08:42.622934", + "completed_at": "2022-10-27 10:08:42.939996", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 105, + "parent_lattice_id": 4, + "transport_graph_node_id": 74, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_74", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.585364", + "updated_at": "2022-10-27 10:08:40.946512", + "started_at": "2022-10-27 10:08:40.941095", + "completed_at": "2022-10-27 10:08:40.941099", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 106, + "parent_lattice_id": 4, + "transport_graph_node_id": 75, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_75", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.599294", + "updated_at": "2022-10-27 10:08:40.981200", + "started_at": "2022-10-27 10:08:40.976058", + "completed_at": "2022-10-27 10:08:40.976061", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 107, + "parent_lattice_id": 4, + "transport_graph_node_id": 76, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_76", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.619618", + "updated_at": "2022-10-27 10:08:41.016945", + "started_at": "2022-10-27 10:08:41.009802", + "completed_at": "2022-10-27 10:08:41.009805", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 108, + "parent_lattice_id": 4, + "transport_graph_node_id": 77, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_77", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.638808", + "updated_at": "2022-10-27 10:08:41.055936", + "started_at": "2022-10-27 10:08:41.048453", + "completed_at": "2022-10-27 10:08:41.048457", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 109, + "parent_lattice_id": 4, + "transport_graph_node_id": 78, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_78", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.654483", + "updated_at": "2022-10-27 10:08:41.091582", + "started_at": "2022-10-27 10:08:41.086414", + "completed_at": "2022-10-27 10:08:41.086417", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 110, + "parent_lattice_id": 4, + "transport_graph_node_id": 79, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_79", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.671724", + "updated_at": "2022-10-27 10:08:41.123420", + "started_at": "2022-10-27 10:08:41.116755", + "completed_at": "2022-10-27 10:08:41.116759", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 111, + "parent_lattice_id": 4, + "transport_graph_node_id": 80, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_80", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.687139", + "updated_at": "2022-10-27 10:08:41.156278", + "started_at": "2022-10-27 10:08:41.149923", + "completed_at": "2022-10-27 10:08:41.149926", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 112, + "parent_lattice_id": 4, + "transport_graph_node_id": 81, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_81", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.704070", + "updated_at": "2022-10-27 10:08:41.192404", + "started_at": "2022-10-27 10:08:41.186466", + "completed_at": "2022-10-27 10:08:41.186469", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 113, + "parent_lattice_id": 4, + "transport_graph_node_id": 82, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_82", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.725651", + "updated_at": "2022-10-27 10:08:41.224627", + "started_at": "2022-10-27 10:08:41.218531", + "completed_at": "2022-10-27 10:08:41.218536", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 114, + "parent_lattice_id": 4, + "transport_graph_node_id": 83, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_83", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.745048", + "updated_at": "2022-10-27 10:08:41.257055", + "started_at": "2022-10-27 10:08:41.250702", + "completed_at": "2022-10-27 10:08:41.250704", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 115, + "parent_lattice_id": 4, + "transport_graph_node_id": 84, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_84", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.760175", + "updated_at": "2022-10-27 10:08:43.692219", + "started_at": "2022-10-27 10:08:43.375045", + "completed_at": "2022-10-27 10:08:43.687405", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 116, + "parent_lattice_id": 4, + "transport_graph_node_id": 85, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_85", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.776605", + "updated_at": "2022-10-27 10:08:42.991653", + "started_at": "2022-10-27 10:08:42.677025", + "completed_at": "2022-10-27 10:08:42.989021", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 117, + "parent_lattice_id": 4, + "transport_graph_node_id": 86, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_86", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.792093", + "updated_at": "2022-10-27 10:08:41.293646", + "started_at": "2022-10-27 10:08:41.288911", + "completed_at": "2022-10-27 10:08:41.288914", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 118, + "parent_lattice_id": 4, + "transport_graph_node_id": 87, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_87", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.808215", + "updated_at": "2022-10-27 10:08:41.327075", + "started_at": "2022-10-27 10:08:41.322042", + "completed_at": "2022-10-27 10:08:41.322045", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 119, + "parent_lattice_id": 4, + "transport_graph_node_id": 88, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_88", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.826520", + "updated_at": "2022-10-27 10:08:41.360839", + "started_at": "2022-10-27 10:08:41.356030", + "completed_at": "2022-10-27 10:08:41.356033", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 120, + "parent_lattice_id": 4, + "transport_graph_node_id": 89, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_89", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.842543", + "updated_at": "2022-10-27 10:08:41.394483", + "started_at": "2022-10-27 10:08:41.389522", + "completed_at": "2022-10-27 10:08:41.389525", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 121, + "parent_lattice_id": 4, + "transport_graph_node_id": 90, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_90", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.859025", + "updated_at": "2022-10-27 10:08:41.428439", + "started_at": "2022-10-27 10:08:41.421862", + "completed_at": "2022-10-27 10:08:41.421865", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 122, + "parent_lattice_id": 4, + "transport_graph_node_id": 91, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_91", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.875312", + "updated_at": "2022-10-27 10:08:41.462184", + "started_at": "2022-10-27 10:08:41.457205", + "completed_at": "2022-10-27 10:08:41.457208", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 123, + "parent_lattice_id": 4, + "transport_graph_node_id": 92, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_92", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.890211", + "updated_at": "2022-10-27 10:08:41.496118", + "started_at": "2022-10-27 10:08:41.491181", + "completed_at": "2022-10-27 10:08:41.491184", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 124, + "parent_lattice_id": 4, + "transport_graph_node_id": 93, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_93", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.906062", + "updated_at": "2022-10-27 10:08:41.527497", + "started_at": "2022-10-27 10:08:41.522585", + "completed_at": "2022-10-27 10:08:41.522588", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 125, + "parent_lattice_id": 4, + "transport_graph_node_id": 94, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_94", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.925923", + "updated_at": "2022-10-27 10:08:41.561383", + "started_at": "2022-10-27 10:08:41.556600", + "completed_at": "2022-10-27 10:08:41.556602", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 126, + "parent_lattice_id": 4, + "transport_graph_node_id": 95, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_95", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.941795", + "updated_at": "2022-10-27 10:08:41.595700", + "started_at": "2022-10-27 10:08:41.590899", + "completed_at": "2022-10-27 10:08:41.590902", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 127, + "parent_lattice_id": 4, + "transport_graph_node_id": 96, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_96", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.957926", + "updated_at": "2022-10-27 10:08:43.766491", + "started_at": "2022-10-27 10:08:43.541105", + "completed_at": "2022-10-27 10:08:43.761303", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 128, + "parent_lattice_id": 4, + "transport_graph_node_id": 97, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_97", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.973121", + "updated_at": "2022-10-27 10:08:43.091461", + "started_at": "2022-10-27 10:08:42.724995", + "completed_at": "2022-10-27 10:08:43.086071", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 129, + "parent_lattice_id": 4, + "transport_graph_node_id": 98, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_98", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:37.986933", + "updated_at": "2022-10-27 10:08:41.627489", + "started_at": "2022-10-27 10:08:41.622560", + "completed_at": "2022-10-27 10:08:41.622563", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 130, + "parent_lattice_id": 4, + "transport_graph_node_id": 99, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_99", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.001766", + "updated_at": "2022-10-27 10:08:41.661875", + "started_at": "2022-10-27 10:08:41.656441", + "completed_at": "2022-10-27 10:08:41.656443", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 131, + "parent_lattice_id": 4, + "transport_graph_node_id": 100, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_100", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.020035", + "updated_at": "2022-10-27 10:08:41.696908", + "started_at": "2022-10-27 10:08:41.691678", + "completed_at": "2022-10-27 10:08:41.691681", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 132, + "parent_lattice_id": 4, + "transport_graph_node_id": 101, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_101", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.035546", + "updated_at": "2022-10-27 10:08:41.730325", + "started_at": "2022-10-27 10:08:41.725404", + "completed_at": "2022-10-27 10:08:41.725407", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 133, + "parent_lattice_id": 4, + "transport_graph_node_id": 102, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_102", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.046972", + "updated_at": "2022-10-27 10:08:41.767052", + "started_at": "2022-10-27 10:08:41.759767", + "completed_at": "2022-10-27 10:08:41.759771", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 134, + "parent_lattice_id": 4, + "transport_graph_node_id": 103, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_103", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.059033", + "updated_at": "2022-10-27 10:08:41.803941", + "started_at": "2022-10-27 10:08:41.799118", + "completed_at": "2022-10-27 10:08:41.799121", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 135, + "parent_lattice_id": 4, + "transport_graph_node_id": 104, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_104", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.073850", + "updated_at": "2022-10-27 10:08:41.837237", + "started_at": "2022-10-27 10:08:41.830166", + "completed_at": "2022-10-27 10:08:41.830169", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 136, + "parent_lattice_id": 4, + "transport_graph_node_id": 105, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_105", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.086138", + "updated_at": "2022-10-27 10:08:41.873392", + "started_at": "2022-10-27 10:08:41.864510", + "completed_at": "2022-10-27 10:08:41.864513", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 137, + "parent_lattice_id": 4, + "transport_graph_node_id": 106, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_106", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.098049", + "updated_at": "2022-10-27 10:08:41.906181", + "started_at": "2022-10-27 10:08:41.900656", + "completed_at": "2022-10-27 10:08:41.900659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 138, + "parent_lattice_id": 4, + "transport_graph_node_id": 107, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_107", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.112014", + "updated_at": "2022-10-27 10:08:41.940831", + "started_at": "2022-10-27 10:08:41.935954", + "completed_at": "2022-10-27 10:08:41.935957", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 139, + "parent_lattice_id": 4, + "transport_graph_node_id": 108, + "type": "function", + "name": "identity", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_108", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.129412", + "updated_at": "2022-10-27 10:08:43.730488", + "started_at": "2022-10-27 10:08:43.459156", + "completed_at": "2022-10-27 10:08:43.724659", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 140, + "parent_lattice_id": 4, + "transport_graph_node_id": 109, + "type": "electron_list", + "name": ":electron_list:", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_109", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.146475", + "updated_at": "2022-10-27 10:08:43.062996", + "started_at": "2022-10-27 10:08:42.835169", + "completed_at": "2022-10-27 10:08:43.060465", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 141, + "parent_lattice_id": 4, + "transport_graph_node_id": 110, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_110", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.162055", + "updated_at": "2022-10-27 10:08:41.974642", + "started_at": "2022-10-27 10:08:41.970618", + "completed_at": "2022-10-27 10:08:41.970621", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 142, + "parent_lattice_id": 4, + "transport_graph_node_id": 111, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_111", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.178884", + "updated_at": "2022-10-27 10:08:42.005490", + "started_at": "2022-10-27 10:08:41.998870", + "completed_at": "2022-10-27 10:08:41.998874", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 143, + "parent_lattice_id": 4, + "transport_graph_node_id": 112, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_112", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.195346", + "updated_at": "2022-10-27 10:08:42.038186", + "started_at": "2022-10-27 10:08:42.032233", + "completed_at": "2022-10-27 10:08:42.032236", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 144, + "parent_lattice_id": 4, + "transport_graph_node_id": 113, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_113", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.214888", + "updated_at": "2022-10-27 10:08:42.071763", + "started_at": "2022-10-27 10:08:42.065366", + "completed_at": "2022-10-27 10:08:42.065369", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 145, + "parent_lattice_id": 4, + "transport_graph_node_id": 114, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_114", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.237282", + "updated_at": "2022-10-27 10:08:42.105918", + "started_at": "2022-10-27 10:08:42.099840", + "completed_at": "2022-10-27 10:08:42.099844", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 146, + "parent_lattice_id": 4, + "transport_graph_node_id": 115, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_115", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.253156", + "updated_at": "2022-10-27 10:08:42.141465", + "started_at": "2022-10-27 10:08:42.134805", + "completed_at": "2022-10-27 10:08:42.134812", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 147, + "parent_lattice_id": 4, + "transport_graph_node_id": 116, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_116", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.271635", + "updated_at": "2022-10-27 10:08:42.175810", + "started_at": "2022-10-27 10:08:42.170433", + "completed_at": "2022-10-27 10:08:42.170438", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 148, + "parent_lattice_id": 4, + "transport_graph_node_id": 117, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_117", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.287718", + "updated_at": "2022-10-27 10:08:42.207773", + "started_at": "2022-10-27 10:08:42.202646", + "completed_at": "2022-10-27 10:08:42.202650", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 149, + "parent_lattice_id": 4, + "transport_graph_node_id": 118, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_118", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.302767", + "updated_at": "2022-10-27 10:08:42.238861", + "started_at": "2022-10-27 10:08:42.233364", + "completed_at": "2022-10-27 10:08:42.233366", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "id": 150, + "parent_lattice_id": 4, + "transport_graph_node_id": 119, + "type": "parameter", + "name": ":parameter:2", + "status": "COMPLETED", + "storage_type": "local", + "storage_path": "/home/manjunathpoilath/Documents/Projects/Agnostiq/Covalent/results/69dec597-79d9-4c99-96de-8d5f06f3d4dd/node_119", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "results_filename": "results.pkl", + "value_filename": "value.pkl", + "stdout_filename": "stdout.log", + "deps_filename": "deps.pkl", + "call_before_filename": "call_before.pkl", + "call_after_filename": "call_after.pkl", + "stderr_filename": "stderr.log", + "info_filename": "info.log", + "is_active": 1, + "created_at": "2022-10-27 10:08:38.320742", + "updated_at": "2022-10-27 10:08:42.272361", + "started_at": "2022-10-27 10:08:42.265656", + "completed_at": "2022-10-27 10:08:42.265658", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "job_id": 1, + "qelectron_data_exists": false + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2023-08-10 10:08:55.822223", + "created_at": "2023-08-10 10:08:55.396776", + "deps_filename": "deps.pkl", + "error_filename": "error.log", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 151, + "is_active": 1, + "job_id": 1, + "name": "call_circuit", + "parent_lattice_id": 5, + "qelectron_data_exists": 1, + "results_filename": "results.pkl", + "started_at": "2023-08-10 10:08:55.432686", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/home/arunmukesh/.local/share/covalent/data/e8fd09c9-1406-4686-9e77-c8d4d64a76ee/node_0", + "storage_type": "local", + "transport_graph_node_id": 0, + "type": "function", + "updated_at": "2023-08-10 10:08:55.825643", + "value_filename": "value.pkl" + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2023-08-10 10:08:55.902257", + "created_at": "2023-08-10 10:08:55.403522", + "deps_filename": "deps.pkl", + "error_filename": "error.log", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 152, + "is_active": 1, + "job_id": 2, + "name": ":postprocess:", + "parent_lattice_id": 5, + "qelectron_data_exists": 0, + "results_filename": "results.pkl", + "started_at": "2023-08-10 10:08:55.843982", + "status": "COMPLETED", + "stderr_filename": "stderr.log", + "stdout_filename": "stdout.log", + "storage_path": "/home/arunmukesh/.local/share/covalent/data/e8fd09c9-1406-4686-9e77-c8d4d64a76ee/node_1", + "storage_type": "local", + "transport_graph_node_id": 1, + "type": "function", + "updated_at": "2023-08-10 10:08:55.906001", + "value_filename": "value.pkl" + } +] diff --git a/tests/covalent_ui_backend_tests/utils/data/lattices.json b/tests/covalent_ui_backend_tests/utils/data/lattices.json index 2e93a89b1..7e16fe6e8 100644 --- a/tests/covalent_ui_backend_tests/utils/data/lattices.json +++ b/tests/covalent_ui_backend_tests/utils/data/lattices.json @@ -142,5 +142,41 @@ "updated_at": "2022-10-27 10:08:43.890454", "workflow_executor": "dask", "workflow_executor_data_filename": "workflow_executor_data.pkl" - } + }, + { + "call_after_filename": "call_after.pkl", + "call_before_filename": "call_before.pkl", + "completed_at": "2023-08-10 10:08:55.902257", + "completed_electron_num": 2, + "cova_imports_filename": "cova_imports.pkl", + "created_at": "2023-08-10 10:08:55.387554", + "deps_filename": "deps.pkl", + "dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "docstring_filename": "function_docstring.txt", + "electron_id": null, + "electron_num": 2, + "error_filename": "error.log", + "executor": "dask", + "executor_data_filename": "executor_data.pkl", + "function_filename": "function.pkl", + "function_string_filename": "function_string.txt", + "id": 5, + "inputs_filename": "inputs.pkl", + "is_active": 1, + "lattice_imports_filename": "lattice_imports.pkl", + "name": "workflow", + "named_args_filename": "named_args.pkl", + "named_kwargs_filename": "named_kwargs.pkl", + "results_dir": "/home/arunmukesh/.local/share/covalent/data", + "results_filename": "results.pkl", + "root_dispatch_id": "e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "started_at": "2023-08-10 10:08:55.420784", + "status": "COMPLETED", + "storage_path": "/home/arunmukesh/.local/share/covalent/data/e8fd09c9-1406-4686-9e77-c8d4d64a76ee", + "storage_type": "local", + "transport_graph_filename": "transport_graph.pkl", + "updated_at": "2023-08-10 10:08:55.946668", + "workflow_executor": "dask", + "workflow_executor_data_filename": "workflow_executor_data.pkl" +} ] diff --git a/tests/covalent_ui_backend_tests/utils/data/mock_files.py b/tests/covalent_ui_backend_tests/utils/data/mock_files.py index 366c92c3e..eb7bc817a 100644 --- a/tests/covalent_ui_backend_tests/utils/data/mock_files.py +++ b/tests/covalent_ui_backend_tests/utils/data/mock_files.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Mock files data""" @@ -45,7 +41,7 @@ def mock_files_data(): file_name = { "value": "value.pkl", - "info": "info.log", + "error": "error.log", "stdout": "stdout.log", "stderr": "stderr.log", "call_after": "call_after.pkl", @@ -190,7 +186,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 0 !!"), @@ -267,7 +263,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 1 !!"), @@ -340,7 +336,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 2 !!"), @@ -413,7 +409,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 3 !!"), @@ -486,7 +482,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 4 !!"), @@ -559,7 +555,7 @@ def workflow(name): "file_name": file_name["function"], "data": TransportableObject.make_transportable(test_function), }, - {"file_name": file_name["info"], "data": ""}, + {"file_name": file_name["error"], "data": ""}, { "file_name": file_name["results"], "data": TransportableObject.make_transportable("Hello shore - Node 5 !!"), diff --git a/tests/covalent_ui_backend_tests/utils/seed_script.py b/tests/covalent_ui_backend_tests/utils/seed_script.py index 4339703d8..aabbcd971 100644 --- a/tests/covalent_ui_backend_tests/utils/seed_script.py +++ b/tests/covalent_ui_backend_tests/utils/seed_script.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json import os @@ -113,13 +109,14 @@ def seed(engine): call_before_filename=item["call_before_filename"], call_after_filename=item["call_after_filename"], stderr_filename=item["stderr_filename"], - error_filename=item["info_filename"], + error_filename=item["error_filename"], is_active=item["is_active"], created_at=convert_to_date(item["created_at"]), updated_at=convert_to_date(item["updated_at"]), started_at=convert_to_date(item["started_at"]), completed_at=convert_to_date(item["completed_at"]), job_id=item["job_id"], + qelectron_data_exists=item["qelectron_data_exists"], ) ) diff --git a/tests/covalent_ui_backend_tests/utils/trigger_events.py b/tests/covalent_ui_backend_tests/utils/trigger_events.py index b7253d70d..670b4759b 100644 --- a/tests/covalent_ui_backend_tests/utils/trigger_events.py +++ b/tests/covalent_ui_backend_tests/utils/trigger_events.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import shutil diff --git a/tests/functional_tests/_dispatcher_plugins/local_test.py b/tests/functional_tests/_dispatcher_plugins/local_test.py index 057c4d71b..2768b7d09 100644 --- a/tests/functional_tests/_dispatcher_plugins/local_test.py +++ b/tests/functional_tests/_dispatcher_plugins/local_test.py @@ -2,21 +2,18 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import covalent as ct from covalent._dispatcher_plugins.local import LocalDispatcher diff --git a/tests/functional_tests/basic_dispatcher_test.py b/tests/functional_tests/basic_dispatcher_test.py index e62bb3404..6d700adb5 100644 --- a/tests/functional_tests/basic_dispatcher_test.py +++ b/tests/functional_tests/basic_dispatcher_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from pathlib import Path @@ -65,7 +61,9 @@ def bad_workflow(name): raise RuntimeError(f"byebye {input}") dispatch_id = ct.dispatch(workflow)(name="q") - output = ct.get_result(dispatch_id, wait=True).result + + res = ct.get_result(dispatch_id, wait=True) + output = res.result assert output == "aqbq" diff --git a/tests/functional_tests/choose_executor_test.py b/tests/functional_tests/choose_executor_test.py index 11a9993b9..b30e4cf87 100644 --- a/tests/functional_tests/choose_executor_test.py +++ b/tests/functional_tests/choose_executor_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Functional tests for selecting executor""" diff --git a/tests/functional_tests/covalent.conf b/tests/functional_tests/covalent.conf index df1cf381f..2fa09048b 100644 --- a/tests/functional_tests/covalent.conf +++ b/tests/functional_tests/covalent.conf @@ -10,7 +10,7 @@ cache_dir = "/tmp/covalent" [executors] local_executor = "local.py" -slurm_executor = "slurmp.py" +slurm_executor = "slurm.py" ssh_executor = "ssh_executor.py" [executors.local.other_params] diff --git a/tests/functional_tests/dask_cluster_cli_test.py b/tests/functional_tests/dask_cluster_cli_test.py index 5030d1469..daadb0c82 100644 --- a/tests/functional_tests/dask_cluster_cli_test.py +++ b/tests/functional_tests/dask_cluster_cli_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio import contextlib diff --git a/tests/functional_tests/dask_executor_test.py b/tests/functional_tests/dask_executor_test.py index 4720c9ac7..527404ae5 100644 --- a/tests/functional_tests/dask_executor_test.py +++ b/tests/functional_tests/dask_executor_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest diff --git a/tests/functional_tests/data.py b/tests/functional_tests/data.py index 8f4d6f672..7f0e8bdab 100644 --- a/tests/functional_tests/data.py +++ b/tests/functional_tests/data.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Mock data for integration testing. diff --git a/tests/functional_tests/dispatcher_server_test.py b/tests/functional_tests/dispatcher_server_test.py index 918f401c7..ddc7a7530 100644 --- a/tests/functional_tests/dispatcher_server_test.py +++ b/tests/functional_tests/dispatcher_server_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct import covalent._results_manager.results_manager as rm diff --git a/tests/functional_tests/dispatcher_stack_test.py b/tests/functional_tests/dispatcher_stack_test.py index 39e5c8c62..1f439abcf 100644 --- a/tests/functional_tests/dispatcher_stack_test.py +++ b/tests/functional_tests/dispatcher_stack_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Integration test for the dispatcher. diff --git a/tests/functional_tests/docs_how_to_test.py b/tests/functional_tests/docs_how_to_test.py index 572156508..84b4b170b 100644 --- a/tests/functional_tests/docs_how_to_test.py +++ b/tests/functional_tests/docs_how_to_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import glob import os diff --git a/tests/functional_tests/electron_return_value_test.py b/tests/functional_tests/electron_return_value_test.py index cacb4c773..74269e3d4 100644 --- a/tests/functional_tests/electron_return_value_test.py +++ b/tests/functional_tests/electron_return_value_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Tests for verifying electron operability inside lattice""" diff --git a/tests/functional_tests/error_reporting_test.py b/tests/functional_tests/error_reporting_test.py index 9fc783e4f..860943e7d 100644 --- a/tests/functional_tests/error_reporting_test.py +++ b/tests/functional_tests/error_reporting_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """FT to check that workflow errors are reported correctly""" diff --git a/tests/functional_tests/file_transfer_test.py b/tests/functional_tests/file_transfer_test.py index b5e8ce66e..66b8b0790 100644 --- a/tests/functional_tests/file_transfer_test.py +++ b/tests/functional_tests/file_transfer_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Workflow stack testing of File Transfer operations.""" diff --git a/tests/functional_tests/init_test.py b/tests/functional_tests/init_test.py index a5c5ac422..63b81eedf 100644 --- a/tests/functional_tests/init_test.py +++ b/tests/functional_tests/init_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Tests for self-contained entry point for the dispatcher diff --git a/tests/functional_tests/lepton_test.py b/tests/functional_tests/lepton_test.py index c1f4feca6..625b3fba2 100644 --- a/tests/functional_tests/lepton_test.py +++ b/tests/functional_tests/lepton_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Lepton functional tests.""" diff --git a/tests/functional_tests/local_executor_test.py b/tests/functional_tests/local_executor_test.py index a3361ea85..aa1a9beb6 100644 --- a/tests/functional_tests/local_executor_test.py +++ b/tests/functional_tests/local_executor_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct diff --git a/tests/functional_tests/qa_basic_workflow_test.py b/tests/functional_tests/qa_basic_workflow_test.py index ec5de8e8e..416b0a3cd 100644 --- a/tests/functional_tests/qa_basic_workflow_test.py +++ b/tests/functional_tests/qa_basic_workflow_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """QA script to test basic workflow functionality.""" diff --git a/tests/functional_tests/qa_call_deps_retval_test.py b/tests/functional_tests/qa_call_deps_retval_test.py index bcdb8b2e4..5f49986c5 100644 --- a/tests/functional_tests/qa_call_deps_retval_test.py +++ b/tests/functional_tests/qa_call_deps_retval_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """QA script to test the call deps return value functionality.""" diff --git a/tests/functional_tests/qa_deps_workflow_test.py b/tests/functional_tests/qa_deps_workflow_test.py index 1cb8476e4..bfc87fba1 100644 --- a/tests/functional_tests/qa_deps_workflow_test.py +++ b/tests/functional_tests/qa_deps_workflow_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test the deps functionality.""" diff --git a/tests/functional_tests/qa_heterogenous_workflows_test.py b/tests/functional_tests/qa_heterogenous_workflows_test.py index c89e352c2..89b78407e 100644 --- a/tests/functional_tests/qa_heterogenous_workflows_test.py +++ b/tests/functional_tests/qa_heterogenous_workflows_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test different types of workflows.""" diff --git a/tests/functional_tests/qa_http_file_transfer_test.py b/tests/functional_tests/qa_http_file_transfer_test.py index b3f4e00f7..96250e030 100644 --- a/tests/functional_tests/qa_http_file_transfer_test.py +++ b/tests/functional_tests/qa_http_file_transfer_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test http file transfer.""" diff --git a/tests/functional_tests/qa_svm_workflow_test.py b/tests/functional_tests/qa_svm_workflow_test.py index 7bdc26f78..a0e9ccda5 100644 --- a/tests/functional_tests/qa_svm_workflow_test.py +++ b/tests/functional_tests/qa_svm_workflow_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """SVM workflow test.""" diff --git a/tests/functional_tests/qa_wait_for_file_transfer.py b/tests/functional_tests/qa_wait_for_file_transfer.py index 7d3854037..6d4da97cd 100644 --- a/tests/functional_tests/qa_wait_for_file_transfer.py +++ b/tests/functional_tests/qa_wait_for_file_transfer.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test wait for file transfer.""" diff --git a/tests/functional_tests/serialization_test.py b/tests/functional_tests/serialization_test.py index ff6d0820a..ef5406d11 100644 --- a/tests/functional_tests/serialization_test.py +++ b/tests/functional_tests/serialization_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent diff --git a/tests/functional_tests/triggers_test.py b/tests/functional_tests/triggers_test.py index b5dc41486..7490a04d9 100644 --- a/tests/functional_tests/triggers_test.py +++ b/tests/functional_tests/triggers_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ Testing whether Triggers functionality works as expected diff --git a/tests/functional_tests/workflow_cancellation_test.py b/tests/functional_tests/workflow_cancellation_test.py index 9cbaa6ac7..9ff2c8ae4 100644 --- a/tests/functional_tests/workflow_cancellation_test.py +++ b/tests/functional_tests/workflow_cancellation_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """End-to-end tests of dispatch cancellation""" diff --git a/tests/functional_tests/workflow_failure_test.py b/tests/functional_tests/workflow_failure_test.py index e56d8be29..1be8277f3 100644 --- a/tests/functional_tests/workflow_failure_test.py +++ b/tests/functional_tests/workflow_failure_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Test how Covalent handles task failures in a workflow""" diff --git a/tests/functional_tests/workflow_stack_test.py b/tests/functional_tests/workflow_stack_test.py index fd2b0c438..dc7a72d96 100644 --- a/tests/functional_tests/workflow_stack_test.py +++ b/tests/functional_tests/workflow_stack_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """Workflow stack testing of TransportGraph, Lattice and Electron classes.""" @@ -474,22 +470,20 @@ def test_decorated_function(): Test whether covalent works as intended on an already decorated function. """ - import pennylane as qml - - import covalent as ct + def wrapper(func): + def inner(*args, **kwargs): + return func(*args, **kwargs) - dev1 = qml.device("default.qubit", wires=1) + return inner @ct.electron - @qml.qnode(dev1) - def circuit(params): - qml.RX(params[0], wires=0) - qml.RY(params[1], wires=0) - return qml.expval(qml.PauliZ(0)) + @wrapper + def task(x): + return x**2 @ct.lattice def workflow(): - return circuit([0.54, 0.12]) + return task(x=5) dispatch_id = ct.dispatch(workflow)() workflow_result = rm.get_result(dispatch_id, wait=True) diff --git a/tests/load_tests/__init__.py b/tests/load_tests/__init__.py index 6999b0bc2..db1da15e8 100644 --- a/tests/load_tests/__init__.py +++ b/tests/load_tests/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .workflows.horizontal import horizontal_workflow from .workflows.identity import identity_workflow diff --git a/tests/load_tests/locustfiles/__init__.py b/tests/load_tests/locustfiles/__init__.py index 523f77622..cfc23bfdf 100644 --- a/tests/load_tests/locustfiles/__init__.py +++ b/tests/load_tests/locustfiles/__init__.py @@ -2,18 +2,14 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/load_tests/locustfiles/basic.py b/tests/load_tests/locustfiles/basic.py index 639b0be9f..2071072f5 100644 --- a/tests/load_tests/locustfiles/basic.py +++ b/tests/load_tests/locustfiles/basic.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import random diff --git a/tests/load_tests/workflows/__init__.py b/tests/load_tests/workflows/__init__.py index 8183d7b13..445c5d06c 100644 --- a/tests/load_tests/workflows/__init__.py +++ b/tests/load_tests/workflows/__init__.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from .horizontal import horizontal_workflow from .identity import identity_workflow from .two_node import add_multiply_workflow diff --git a/tests/load_tests/workflows/identity.py b/tests/load_tests/workflows/identity.py index 50ebaabdd..eaf5ff6d1 100644 --- a/tests/load_tests/workflows/identity.py +++ b/tests/load_tests/workflows/identity.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct diff --git a/tests/load_tests/workflows/two_node.py b/tests/load_tests/workflows/two_node.py index 62620e1fd..9959880e1 100644 --- a/tests/load_tests/workflows/two_node.py +++ b/tests/load_tests/workflows/two_node.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct diff --git a/tests/qelectron_tests/.gitignore b/tests/qelectron_tests/.gitignore new file mode 100644 index 000000000..5f834c486 --- /dev/null +++ b/tests/qelectron_tests/.gitignore @@ -0,0 +1,2 @@ +pennylane_tests-* +.pytest_cache/ diff --git a/tests/qelectron_tests/README.md b/tests/qelectron_tests/README.md new file mode 100644 index 000000000..e3f8a7b71 --- /dev/null +++ b/tests/qelectron_tests/README.md @@ -0,0 +1,35 @@ +# QElectron Tests + +This tests package is a work in progress. + +It is designed to run the Pennylane test suite by patching the `QNode` class to +call a `QNodeQE` instance (*i.e.* a QElectron). + +## Cloning Pennylane tests + +One can clone the Pennylane test suite using the scripts provided `scripts/`: + +``` +cd scripts +bash clone_qml_tests.sh v0.30.0 +``` + +This above will create a folder `qelectron_tests/pennylane_test-v0.30.0/` that contains +the Pennylane test suite. + +## Running Pennylane tests on QElectrons + +One must also point to the configuration file (`qelectron_tests/conftest.py`) +to apply the required patches and fixtures. An example is given below: + +``` +cd covalent-os-private/tests +pytest -c qelectron_tests/conftest.py qelectron_tests/pennylane_tests-v0.30.0/test_return_types_qnode.py +``` + +To run the *entire* test suite, do the following: + +``` +cd covalent-os-private/tests +pytest -c qelectron_tests/conftest.py qelectron_tests/pennylane_tests-v0.30.0/ +``` diff --git a/tests/qelectron_tests/__init__.py b/tests/qelectron_tests/__init__.py new file mode 100644 index 000000000..cfc23bfdf --- /dev/null +++ b/tests/qelectron_tests/__init__.py @@ -0,0 +1,15 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tests/qelectron_tests/pennylane_tests/conftest.py b/tests/qelectron_tests/pennylane_tests/conftest.py new file mode 100644 index 000000000..30b774570 --- /dev/null +++ b/tests/qelectron_tests/pennylane_tests/conftest.py @@ -0,0 +1,328 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member +# pylint: disable=missing-function-docstring +# pylint: disable=invalid-name + +""" +Configuration that enables easy adoption of Pennylane tests to QElectrons. + +NOTE: ONLY USE this configuration file with Pennylane tests. +""" + +import inspect +import re +from typing import List +from unittest.mock import patch + +import pennylane as qml +import pytest + +import covalent as ct +from covalent._shared_files.utils import get_original_shots +from covalent.quantum.qcluster.simulator import SIMULATOR_DEVICES + +SKIP_RETURN_TYPES = ["qml.apply", "qml.vn_entropy", "qml.mutual_info"] + +SKIP_DEVICES = [ + "default.qutrit", + "default.mixed", + "default.gaussian", # TODO: allow for Simulator +] + +# XFAIL NOTES LEGEND +# (1) configuration issue; test passes manually +# (2) incompatible; requires manual test +# (3) not yet determined +# ----------------- +XFAIL_TEST_NAMES = [ + # "test_array_multiple" # NOTE: produces array with inhomogeneous shape + # Case 0 # + # fails and support not planned + "test_qutrit_device::test_device_executions", + # Case 1 # + # configuration issue, test passes manually + "test_qaoa::test_partial_cycle_mixer", + "test_qaoa::test_self_loop_raises_error", + "test_qaoa::test_inner_out_flow_constraint_hamiltonian_non_complete", + "test_qaoa::test_inner_net_flow_constraint_hamiltonian_non_complete", + # Case 2 # + # incompatible test, needs manual equivalent + "test_qnode::test_diff_method", + "test_qnode::test_jacobian", + # Case 3 # + "TestHamiltonian::test_hamiltonian_iadd", + "TestHamiltonian::test_hamiltonian_imul", + "TestHamiltonian::test_hamiltonian_isub", +] + +XFAIL_TEST_NAMES_CONDITIONAL = { + # NOTE: mocker.spy(qml.QubitDevice, "probability") working incorrectly for Braket executor. + "test_numerical_analytic_diff_agree": lambda item: ( + item.callspec.params.get("get_executors") is _init_LocalBraketQubitExecutor + or item.callspec.params.get("get_executors") is _init_LocalBraketQubitExecutor_cluster + ), + "test_lightning_qubit.py::test_integration": lambda item: ( + item.callspec.params.get("get_executors") is _init_QiskitExecutor_local_sampler + or item.callspec.params.get("get_executors") is _init_QiskitExecutor_local_sampler_cluster + ), +} + +SKIP_FOR_RUN_LATER = [ + # NOTE: calls qml.jacobian(qe_circuit.run_later(input).result()) + "test_numerical_analytic_diff_agree", + # Similar to previous. + "test_hamiltonian.py::TestHamiltonianDifferentiation::test_trainable_coeffs_paramshift", + "test_hamiltonian.py::TestHamiltonianDifferentiation::test_nontrainable_coeffs_paramshift", + "test_hamiltonian.py::TestHamiltonianDifferentiation::test_trainable_coeffs_autograd", + "test_hamiltonian.py::TestHamiltonianDifferentiation::test_nontrainable_coeffs_autograd", + "test_hamiltonian.py::TestHamiltonianDifferentiation::test_trainable_coeffs_jax", + "test_lightning_qubit.py::test_integration", + "test_iqp_emb.py::TestInterfaces::test_jax", +] + + +# VALIDATION FUNCTIONS +# ------------------------------------------------------------------------------ + + +def _check_return_type(executors, func): + """ + Checks whether a function returns a type that is not supported by QElectrons. + """ + + func_lines = inspect.getsourcelines(func)[0] + reached_return = False + for line in func_lines: + if line.strip().startswith("return"): + reached_return = True + + if reached_return: + for ret_typ in SKIP_RETURN_TYPES: + if ret_typ in line or ret_typ.split(".", maxsplit=1)[-1] in line: + pytest.skip(f"QElectrons don't support `{ret_typ}` measurements.") + + +def _check_device_type(executors, device): + """ + Checks whether a device is supported by QElectrons. + """ + + if not isinstance(executors, list): + # Always handle as list. + executors = [executors] + + if device.short_name in SKIP_DEVICES: + simulator_in_execs = any(isinstance(ex, ct.executor.Simulator) for ex in executors) + if not (simulator_in_execs and device.short_name == "default.gaussian"): + pytest.skip(f"QElectrons do not support the '{device.short_name}' device.") + + # Simulator + if any(hasattr(ex.shots, "__len__") and ex.name != "Simulator" for ex in executors): + pytest.skip("Only the Simulator QExecutor currently supports shot vectors.") + + if ( + any(isinstance(ex, ct.executor.Simulator) for ex in executors) + and device.short_name not in SIMULATOR_DEVICES + ): + pytest.skip(f"Simulator does not support the '{device.short_name}' device.") + + +def _check_qnode(qnode): + """ + Checks whether QNode settings are supported by QElectrons. + """ + # General + if qnode.diff_method in {"backprop", "adjoint"}: + pytest.skip(f"QElectron devices don't support the '{qnode.diff_method}' diff method.") + + +# UTILITIES +# ------------------------------------------------------------------------------ + + +def _init_Simulator(shots): + return ct.executor.Simulator(parallel="thread", shots=shots) + + +def _init_Simulator_cluster(shots): + return [ + ct.executor.Simulator(parallel="thread", shots=shots), + ct.executor.Simulator(parallel="thread", shots=shots), + ] + + +def _init_QiskitExecutor_local_sampler(shots): + return ct.executor.QiskitExecutor( + device="local_sampler", + shots=shots, + ) + + +def _init_QiskitExecutor_local_sampler_cluster(shots): + return [ + ct.executor.QiskitExecutor( + device="local_sampler", + shots=shots, + ), + ct.executor.QiskitExecutor( + device="local_sampler", + shots=shots, + ), + ] + + +def _init_LocalBraketQubitExecutor(shots): + return ct.executor.LocalBraketQubitExecutor(shots=shots) + + +def _init_LocalBraketQubitExecutor_cluster(shots): + return [ + ct.executor.LocalBraketQubitExecutor(shots=shots), + ct.executor.LocalBraketQubitExecutor(shots=shots), + ] + + +# QNODE PATCH THAT SUBSTITUTES IN QELECTRON +# ------------------------------------------------------------------------------ + + +def _get_wrapped_QNode(use_run_later, get_executors): # pylint: disable=invalid-name + """ + Patches `qml.QNode` to return a QElectron instead. + """ + + class _PatchedQNode(qml.QNode): + # pylint: disable=too-few-public-methods + + """ + This class replaces `qml.QNode` + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + shots = get_original_shots(self.device) + executors = get_executors(shots) + qnode = self + shots = get_original_shots(qnode.device) + executors = get_executors(shots=shots) + + _check_qnode(self) + _check_return_type(executors, qnode.func) + _check_device_type(executors, qnode.device) + + # QElectron that wraps the normal QNode + self.qelectron = ct.qelectron( + qnode=qnode, executors=get_executors(shots=get_original_shots(self.device)) + ) + + def __call__(self, *args, **kwargs): + if use_run_later: + return self.qelectron.run_later(*args, **kwargs).result() + return self.qelectron(*args, **kwargs) + + return _PatchedQNode + + +# TEST UTILITIES +# ------------------------------------------------------------------------------ + + +def _get_test_name(item: str): + """ + Returns the name of a test. + """ + return ( + re.findall(r"(test_[\w|\d]+.py::test_.*)\[", item.nodeid) + or re.findall(r"(test_[\w|\d]+.py::Test_.*)\[", item.nodeid) + ).pop() + + +# HOOKS +# ------------------------------------------------------------------------------ + + +def pytest_collection_modifyitems( + config: pytest.Config, items: List[pytest.Item] +): # pylint: disable=unused-argument + """ + Using Pytest hook to xfail selected tests. + """ + for item in items: + # XFail tests expected to fail in general. + if any(name in item.nodeid for name in XFAIL_TEST_NAMES): + item.add_marker(pytest.mark.xfail(reason="XFailing test also failed by normal QNode.")) + + # XFail tests expected to fail with `QElectron.run_later` + if ( + "use_run_later" in item.fixturenames + and item.callspec.params.get("use_run_later") + and any(name in item.nodeid for name in SKIP_FOR_RUN_LATER) + ): + item.add_marker( + pytest.mark.skip( + reason=f"{item.nodeid} expected to fail with `QElectron.run_later`" + ) + ) + + # XFail tests expected to fail in certain conditions. + if any(name in item.nodeid for name in XFAIL_TEST_NAMES_CONDITIONAL): + condition = XFAIL_TEST_NAMES_CONDITIONAL[_get_test_name(item)] + if condition(item): + item.add_marker(pytest.mark.xfail(reason="XFailing conditional case.")) + + +# FIXTURES +# ------------------------------------------------------------------------------ + + +@pytest.fixture(params=[True, False]) +def use_run_later(request): + """ + Determines whether QElectron is called normally or through `run_later`. + """ + return request.param + + +QEXECUTORS = [ + _init_Simulator, + _init_Simulator_cluster, + _init_QiskitExecutor_local_sampler, + _init_QiskitExecutor_local_sampler_cluster, + _init_LocalBraketQubitExecutor, + _init_LocalBraketQubitExecutor_cluster, +] + + +@pytest.fixture(params=QEXECUTORS) +def get_executors(request): + """ + Determines the QExecutor that is used. + """ + return request.param + + +@pytest.fixture(autouse=True) +def patch_qnode_creation(use_run_later, get_executors): + """ + Wraps the `pennylane.QNode` class such that the `qml.qnode()` decorator + instead creates QElectrons that wrap a QNode. + """ + patched_cls = _get_wrapped_QNode(use_run_later, get_executors) + with patch("pennylane.QNode", new=patched_cls): + yield diff --git a/tests/qelectron_tests/pennylane_tests/setup.sh b/tests/qelectron_tests/pennylane_tests/setup.sh new file mode 100755 index 000000000..b568eea9a --- /dev/null +++ b/tests/qelectron_tests/pennylane_tests/setup.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# This script clones the test suite from a specific Pennylane branch/tag + +PENNYLANE_VERSION_TAG=$1 # for example, "v0.30.0" +if [[ -z $PENNYLANE_VERSION_TAG ]]; then + echo "missing Pennylane version tag" + exit 1 +fi + +DIR=$(pwd) +CREATE_DIR="${DIR}/pennylane_tests-${PENNYLANE_VERSION_TAG}" + + +# Clone repo to temp. +git clone --quiet "https://github.com/PennyLaneAI/pennylane" /tmp/pennylane + +# Grab specific version. +cd /tmp/pennylane +git checkout --quiet $PENNYLANE_VERSION_TAG + +# Copy back to this `pwd`. +echo "creating: ${CREATE_DIR}" +cp -r ./tests/ "${CREATE_DIR}" +cd $DIR + +# Clean up. +rm -rf /tmp/pennylane diff --git a/tests/qelectron_tests/test_braket_plugin.py b/tests/qelectron_tests/test_braket_plugin.py new file mode 100644 index 000000000..725d9a352 --- /dev/null +++ b/tests/qelectron_tests/test_braket_plugin.py @@ -0,0 +1,144 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +import pytest + + +def test_init_local_executor(): + """Test that the local Braket executor can be initialized.""" + + import covalent as ct + + ct.executor.LocalBraketQubitExecutor() + + +def test_init_executor(): + """Test that the Braket executor can be initialized.""" + + import covalent as ct + + ct.executor.BraketQubitExecutor() + + +def test_decorator_path(): + """Test that `ct.qelectron` is the QElectron decorator""" + from typing import Callable + + import covalent as ct + + assert isinstance(ct.qelectron, Callable), f"`ct.qelectron` is a {type(ct.qelectron).__name__}" + + +def test_circuit_call_single(): + """Test calling a QNode vs. QElectron with a scalar argument.""" + + import pennylane as qml + from pennylane import numpy as np + + import covalent as ct + + executors = [ + ct.executor.LocalBraketQubitExecutor(shots=None, max_jobs=19), + ct.executor.LocalBraketQubitExecutor(shots=10_000, max_jobs=1), + ] + + @qml.qnode(qml.device("default.qubit", wires=2)) + def circuit(x): + qml.RX(x, wires=0) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.PauliZ(0)) + + qe_circuit = ct.qelectron(circuit, executors=executors, selector="cyclic") + + x = np.array(0.5) + + # Ensure every QCluster member is used at least once. + for _ in range(5): + res_1 = circuit(x) + res_2 = qe_circuit(x) + + assert isinstance(res_1, type(res_2)) + assert np.isclose(res_1, res_2, rtol=0.1) + + +def test_circuit_call_vector(): + """Test calling a QNode vs. QElectron with a vector argument.""" + + import pennylane as qml + from pennylane import numpy as np + + import covalent as ct + + executors = [ + ct.executor.LocalBraketQubitExecutor(shots=None, max_jobs=19), + ct.executor.LocalBraketQubitExecutor(shots=10_000, max_jobs=1), + ] + + @qml.qnode(qml.device("default.qubit", wires=2)) + def circuit(x): + qml.RX(x, wires=0) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.PauliZ(0)) + + qe_circuit = ct.qelectron(circuit, executors=executors, selector="cyclic") + + X = np.random.rand(13) * 2 * np.pi + + # Ensure every QCluster member is used at least once. + for _ in range(5): + res_1 = circuit(X) + res_2 = qe_circuit(X) + + assert isinstance(res_1, type(res_2)) + assert np.isclose(res_1, res_2, atol=0.2).all() + + +def test_grad_basic(): + """Test calling gradients QNode vs. QElectron.""" + + import pennylane as qml + from pennylane import numpy as np + + import covalent as ct + + executors = [ + ct.executor.LocalBraketQubitExecutor(shots=10_000, max_jobs=1), + ct.executor.LocalBraketQubitExecutor(shots=None, max_jobs=19), + ] + + @qml.qnode(qml.device("default.qubit", wires=2)) + def circuit(x): + qml.RX(x, wires=0) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.PauliZ(0)) + + qe_circuit = ct.qelectron(circuit, executors=executors, selector="cyclic") + + x = np.array(0.5, requires_grad=True) + + # Ensure every QCluster member is used at least once. + for _ in range(5): + res_1 = qml.grad(circuit)(x) + res_2 = qml.grad(qe_circuit)(x) + + with pytest.raises(AssertionError): + # NOTE: expected to fail due to QElectron fast-gradients trickery. + # NOTE: return types are QML tensor vs NumPy array, respectively. + assert isinstance(res_1, type(res_2)) + + assert np.isclose(res_1, res_2, rtol=0.1) diff --git a/tests/qelectron_tests/test_decorator.py b/tests/qelectron_tests/test_decorator.py new file mode 100644 index 000000000..f376d0099 --- /dev/null +++ b/tests/qelectron_tests/test_decorator.py @@ -0,0 +1,199 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +import copy + +import pennylane as qml +import pytest +from numpy import isclose + +import covalent as ct + +EXECUTORS = [ + ct.executor.QiskitExecutor(device="local_sampler", shots=10_000), +] + + +@pytest.mark.parametrize("executor", EXECUTORS) +def test_decorator_vs_explicit_wrapper(executor): + """ + Test that `ct.qelectron` works as decorator and as explicit wrapper. + """ + + results = [] + + # Initialize qelectron by decorating a qnode. + dev = qml.device("default.qubit", wires=2) + + @ct.qelectron(executors=executor) + @qml.qnode(device=dev) + def simple_circuit_1(param): + """ + A tiny, reusable Pennylane circuit. + """ + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + qelectron = simple_circuit_1 + results.append(qelectron(0.5)) + + # Initialize qelectron by passing a qnode. + @qml.qnode(device=dev) + def simple_circuit_2(param): + """ + A tiny, reusable Pennylane circuit. + """ + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + qelectron = ct.qelectron(simple_circuit_2, executors=executor) + results.append(qelectron(0.5)) + + assert isinstance(results[0], type(results[1])), f"Results {results!r} are not the same type" + assert isclose(results[0], results[1], 0.1), f"Results {results!r} are not close" + + +class TestDecoratorArguments: + """ + Test that the `ct.qelectron` decorator accepts and correctly processes various + types of `executors` arguments. + + Specifically, the following types should be supported and the corresponding + behavior observed: + + (1) `executors=executor_1` + -> a single executor is used for all circuits + + (2) `executors=[executor_1, ..., executor_N]` + -> a `QCluster` is created from the two or more executor instances + + (3) `executors=qcluster_1` + -> the given `QCluster` is used for all circuits + """ + + @pytest.mark.parametrize("executor", EXECUTORS) + def test_single_executor(self, executor): + """ + Test that the `ct.qelectron` decorator accepts a single executor (case 1). + """ + + dev = qml.device("default.qubit", wires=2) + + # QElectron definition. + @ct.qelectron(executors=executor) + @qml.qnode(device=dev) + def qelectron_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + # Equivalent QNode definition (for comparison). + @qml.qnode(device=dev) + def normal_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + res = normal_circuit(0.5) + qres = qelectron_circuit(0.5) + + assert isinstance(qres, type(res)), f"Results {res!r} and {qres!r} are not the same type" + assert isclose(qres, res, 0.1), f"Results {res!r} and {qres!r} are not close" + + @pytest.mark.parametrize("executor", EXECUTORS) + def test_list_of_executors(self, executor): + """ + Test that the `ct.qelectron` decorator accepts a list of executors (case 2). + """ + + dev = qml.device("default.qubit", wires=2) + + # Create a list of executors. + executors_list = [executor, copy.deepcopy(executor)] + + # QElectron definition. + @ct.qelectron(executors=executors_list) + @qml.qnode(device=dev) + def qelectron_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + # Check that the executor is a `QCluster`. + assert len(qelectron_circuit.device.executors) == 1 + assert isinstance(qelectron_circuit.device.executors[0], ct.executor.QCluster) + + # Equivalent QNode definition (for comparison). + @qml.qnode(device=dev) + def normal_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + res = normal_circuit(0.5) + qres = qelectron_circuit(0.5) + + assert isinstance(qres, type(res)), f"Results {res!r} and {qres!r} are not the same type" + assert isclose(qres, res, 0.1), f"Results {res!r} and {qres!r} are not close" + + @pytest.mark.parametrize("executor", EXECUTORS) + def test_explicit_qcluster(self, executor): + """ + Test that the `ct.qelectron` decorator accepts a `QCluster` instance (case 3). + """ + + dev = qml.device("default.qubit", wires=2) + + # Create a `QCluster` explicitly. + executors_list = [executor, copy.deepcopy(executor)] + qcluster = ct.executor.QCluster(executors=executors_list) + + # QElectron definition. + @ct.qelectron(executors=qcluster) + @qml.qnode(device=dev) + def qelectron_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + # Check that the executor is a `QCluster`. + assert len(qelectron_circuit.device.executors) == 1 + assert isinstance(qelectron_circuit.device.executors[0], ct.executor.QCluster) + + # Equivalent QNode definition (for comparison). + @qml.qnode(device=dev) + def normal_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + res = normal_circuit(0.5) + qres = qelectron_circuit(0.5) + + assert isinstance(qres, type(res)), f"Results {res!r} and {qres!r} are not the same type" + assert isclose(qres, res, 0.1), f"Results {res!r} and {qres!r} are not close" diff --git a/tests/qelectron_tests/test_qelectron_db.py b/tests/qelectron_tests/test_qelectron_db.py new file mode 100644 index 000000000..4d75f296e --- /dev/null +++ b/tests/qelectron_tests/test_qelectron_db.py @@ -0,0 +1,79 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pennylane as qml + +import covalent as ct + + +def test_db_exposed_in_result(): + """ + Check that the QElectron database is correctly exposed in the result object. + """ + + # Define a QElectron circuit. + qexecutor = ct.executor.QiskitExecutor(device="local_sampler") # pylint: disable=no-member + + @ct.qelectron(executors=qexecutor) + @qml.qnode(qml.device("default.qubit", wires=1)) + def circuit(param): + qml.RZ(param, wires=0) + return qml.expval(qml.PauliZ(0)) + + # Define workflow electrons and lattice. + @ct.electron + def task_0_qe(param): + # Run the QElectron circuit and return the result. + return circuit(param) + + @ct.electron + def task_1_qe(param): + # Run the QElectron (10x) circuit and return the result. + params = [param * (1 + i / 10) for i in range(10)] + return [circuit(_param) for _param in params] + + @ct.electron + def task_2(): + # Returns a non-QElectron result. + return 46 + 2 + + @ct.lattice + def workflow(param): + return task_0_qe(param), task_1_qe(param), task_2() + + # Define expected number of entries in the QElectron database. + num_entries = { + "task_0_qe": 1, + "task_1_qe": 10, + "task_2": 0, + } + + # Dispatch workflow. + dispatch_id = ct.dispatch(workflow)(0.5) + result_obj = ct.get_result(dispatch_id, wait=True) + + # Check results. + for result_dict in result_obj.get_all_node_results(): + if (node_name := result_dict["node_name"]) in num_entries: + if node_name == "task_2": + # Non-QElectron task should have no qelectron data. + assert result_dict["qelectron"] is None + else: + # QElectron tasks should have qelectron data. + assert result_dict["qelectron"] is not None + + # Number of entries should match number of executions. + assert len(result_dict["qelectron"]) == num_entries[node_name] diff --git a/tests/qelectron_tests/test_qiskit_plugin.py b/tests/qelectron_tests/test_qiskit_plugin.py new file mode 100644 index 000000000..438532424 --- /dev/null +++ b/tests/qelectron_tests/test_qiskit_plugin.py @@ -0,0 +1,159 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +import numpy as np +import pennylane as qml +import pytest + +import covalent as ct +from covalent._shared_files.config import get_config + +from .utils import arg_vector, simple_circuit, weight_vector + +EXECUTOR_CLASSES = [ + ct.executor.QiskitExecutor, + ct.executor.IBMQExecutor, +] + + +@pytest.mark.parametrize("executor_class", EXECUTOR_CLASSES) +def test_defaults_copied_from_config(executor_class): + """ + Check that instances get default values from the covalent config file. + """ + + # Initialize a minimal executor. + qexecutor = executor_class(device="local_sampler") + + # Get executor as a dictionary. + exec_config = qexecutor.dict() + + # Retrieve default values from config file. + name = executor_class.__name__ + default_config = get_config("qelectron")[name] + + # Test equivalence. + if hasattr(qexecutor, "options"): + config_without_options = default_config.copy() + config_options = config_without_options.pop("options") + + for k, val in config_without_options.items(): + assert exec_config[k] == val + + for k, val in config_options.items(): + exec_options = dict(exec_config["options"]) + assert exec_options[k] == val + else: + for k, val in default_config.items(): + assert exec_config[k] == val + + +def test_qiskit_exec_shots_is_none(): + """ + Check that a warning is raised if shots is None. + """ + + dev = qml.device("default.qubit", wires=2, shots=None) + qnode = qml.QNode(simple_circuit, device=dev) + + qexecutor = ct.executor.QiskitExecutor(device="local_sampler", shots=None) + qelectron = ct.qelectron(qnode, executors=qexecutor) + + val_1 = qnode(0.5) + with pytest.warns(UserWarning, match="The number of shots can not be None."): + val_2 = qelectron(0.5) + + assert isinstance(val_2, type(val_1)) + + +def test_default_return_type(): + """ + Test that a QElectron with the default QNode interface returns the correct type. + """ + + executor = ct.executor.QiskitExecutor(device="local_sampler", shots=1024) + + dev = qml.device("default.qubit", wires=2) + + # QElectron definition. + @ct.qelectron(executors=executor) + @qml.qnode(device=dev) + def qelectron_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + # Equivalent QNode definition (for comparison). + @qml.qnode(device=dev) + def normal_circuit(param): + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + res = normal_circuit(0.5) + qres = qelectron_circuit(0.5) + + assert isinstance(qres, type(res)), f"Results {res!r} and {qres!r} are not the same type" + + +_TEMPLATES = [ + (qml.AngleEmbedding, (arg_vector(6),), {"wires": range(6)}), + (qml.IQPEmbedding, (arg_vector(6),), {"wires": range(6)}), + (qml.QAOAEmbedding, (arg_vector(6),), {"wires": range(6), "weights": weight_vector(6)}), + (qml.DoubleExcitation, (arg_vector(4),), {"wires": range(4)}), + (qml.SingleExcitation, (arg_vector(2),), {"wires": range(2)}), +] + + +@pytest.mark.parametrize("executor_class", EXECUTOR_CLASSES[:1]) +@pytest.mark.parametrize("template", _TEMPLATES) +def test_template_circuits(template, executor_class): + """ + Check that above Pennylane templates are working. + """ + + _template, args, kwargs = template + num_wires = len(list(kwargs["wires"])) + + retval = _template(*args, **kwargs) + + # Define a circuit that uses the template. Also call the adjoint if allowed. + dev = qml.device("default.qubit", wires=num_wires, shots=10_000) + + @qml.qnode(dev, interface="numpy") + def _template_circuit(): + _template(*args, **kwargs) + + for i in range(num_wires): + # Do this so later adjoint does not invert. + qml.Hadamard(wires=i) + + if not isinstance(retval, qml.DoubleExcitation): + qml.adjoint(_template)(*args, **kwargs) + return qml.probs(wires=range(num_wires)) + + qexecutor = executor_class(device="local_sampler") # QiskitExecutor + qelectron = ct.qelectron(_template_circuit, executors=qexecutor) + + val_1 = _template_circuit() + val_2 = qelectron() + + assert isinstance(val_2, type(val_1)) + assert np.isclose(val_1, val_2, atol=0.1).all() diff --git a/tests/qelectron_tests/test_qiskit_plugin_runtime.py b/tests/qelectron_tests/test_qiskit_plugin_runtime.py new file mode 100644 index 000000000..913d54388 --- /dev/null +++ b/tests/qelectron_tests/test_qiskit_plugin_runtime.py @@ -0,0 +1,204 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +import itertools + +import pennylane as qml +import pytest +from pennylane import numpy as np + +import covalent as ct +from covalent._shared_files.config import get_config + +from .utils import arg_vector, cyclic_selector, get_hamiltonian_circuit, weight_vector + +EXECUTOR_CLASSES = [ + ct.executor.QiskitExecutor, +] + +QISKIT_RUNTIME_BACKENDS = [ + "ibmq_qasm_simulator", + "simulator_statevector", + "simulator_mps", +] + +SHOTS = 10_000 + + +@pytest.fixture(autouse=True, scope="module") +def ensure_ibmqx_token(): + """ + Ensure that the IBMQX token is set in the config file. + """ + token_name = "ibmqx_token" + tokens = {} + qelectron_config = get_config("qelectron") + for k, val in qelectron_config.items(): + # Exit if a global `ibmqx_token` is set. + if k == "ibmqx_token" and val: + return + + # Here, `k` is the name of an executor class. + # Check if executors class config includes `"ibmqx_token"`. + if isinstance(val, dict) and token_name in val: + tokens[k] = val[token_name] + + for cls in EXECUTOR_CLASSES: + k = cls.__name__ + if not tokens[k]: + pytest.skip(f"Missing '{token_name}' for {k} in covalent config.") + + +@pytest.mark.parametrize("single_job", [True, False]) +@pytest.mark.parametrize("executor_class", EXECUTOR_CLASSES) +@pytest.mark.parametrize("backend", QISKIT_RUNTIME_BACKENDS) +def test_qiskit_runtime_hamiltonian(backend, executor_class, single_job): + """ + Check correctness of runtime executor result against normal QNode. + """ + ham_circuit, doubles, num_qubits = get_hamiltonian_circuit() + + dev = qml.device("default.qubit", wires=num_qubits, shots=SHOTS) + + # TODO: Has to be done this way for correctness. Why can't use `qml.QNode`? + @qml.qnode(dev, diff_method="parameter-shift") + def circuit(params): + return ham_circuit(params) + + qexecutor = executor_class(device="sampler", single_job=single_job, backend=backend) + qelectron = ct.qelectron(circuit, executors=qexecutor) + + params = np.random.uniform(low=-np.pi / 2, high=np.pi / 2, size=len(doubles)) + + # Compute expectation values. + val_1 = circuit(params) + val_2 = qelectron(params) + + # Assert type agreement. + assert isinstance(val_2, type(val_1)) + + # Assert value agreement. + # Assert value agreement. + msg = ( + f"QElectron output ({val_2!r}) differs from " + f"QNode output ({val_1!r}) by >10% (shots={SHOTS})." + ) + assert np.isclose(val_1, val_2, rtol=0.10), msg + + +SINGLE_JOB_TRIPLETS = list(itertools.product([True, False], repeat=3)) + + +@pytest.mark.parametrize("single_job_triplet", SINGLE_JOB_TRIPLETS) +def test_qiskit_runtime_hamiltonian_cluster(single_job_triplet): + # pylint: disable=too-many-locals + """ + Check correctness of runtime CLUSTER executor result against normal QNode. + """ + ham_circuit, doubles, num_qubits = get_hamiltonian_circuit() + + dev = qml.device("default.qubit", wires=num_qubits, shots=SHOTS) + + # TODO: Has to be done this way for correctness. Why can't use `qml.QNode`? + @qml.qnode(dev, diff_method="parameter-shift") + def circuit(params): + return ham_circuit(params) + + # Set function attribute. + cyclic_selector.i = 0 + + # Define the quantum executors cluster. + p_1, p_2, p_3 = single_job_triplet + qcluster = ct.executor.QCluster( + executors=[ + ct.executor.QiskitExecutor( + device="sampler", single_job=p_1, backend="ibmq_qasm_simulator" + ), + ct.executor.QiskitExecutor( + device="sampler", single_job=p_2, backend="simulator_statevector" + ), + ct.executor.QiskitExecutor(device="sampler", single_job=p_3, backend="simulator_mps"), + ], + selector=cyclic_selector, + ) + + # Define a QElectron that uses the executor cluster. + qelectron = ct.qelectron(circuit, executors=qcluster) + + params = np.random.uniform(low=-np.pi / 2, high=np.pi / 2, size=len(doubles)) + + # Compute expectation values. + val_1 = circuit(params) + val_2 = qelectron(params) + + # Assert type agreement. + assert isinstance(val_2, type(val_1)) + + # Assert value agreement. + msg = ( + f"QElectron output ({val_2!r}) differs from " + f"QNode output ({val_1!r}) by >10% (shots={SHOTS})." + ) + assert np.isclose(val_1, val_2, rtol=0.1), msg + + +TEMPLATES = [ + (qml.AngleEmbedding, (arg_vector(6),), {"wires": range(6)}), + (qml.IQPEmbedding, (arg_vector(6),), {"wires": range(6)}), + (qml.QAOAEmbedding, (arg_vector(6),), {"wires": range(6), "weights": weight_vector(6)}), + (qml.DoubleExcitation, (arg_vector(4),), {"wires": range(4)}), + (qml.SingleExcitation, (arg_vector(2),), {"wires": range(2)}), +] + + +@pytest.mark.parametrize("single_job", [True, False]) +@pytest.mark.parametrize("executor_class", EXECUTOR_CLASSES[:1]) +@pytest.mark.parametrize("template", TEMPLATES) +def test_template_circuits(template, executor_class, single_job): + """ + Check that above Pennylane templates are working. + """ + + _template, args, kwargs = template + num_wires = len(list(kwargs["wires"])) + + retval = _template(*args, **kwargs) + + # Define a circuit that uses the template. Also call the adjoint if allowed. + dev = qml.device("default.qubit", wires=num_wires, shots=10_000) + + @qml.qnode(dev, interface="numpy") + def _template_circuit(): + _template(*args, **kwargs) + + for i in range(num_wires): + # Do this so later adjoint does not invert. + qml.Hadamard(wires=i) + + if not isinstance(retval, qml.DoubleExcitation): + qml.adjoint(_template)(*args, **kwargs) + return qml.probs(wires=range(num_wires)) + + qexecutor = executor_class(device="sampler", single_job=single_job) # QiskitExecutor + qelectron = ct.qelectron(_template_circuit, executors=qexecutor) + + val_1 = _template_circuit() + val_2 = qelectron() + + assert isinstance(val_2, type(val_1)) + assert np.isclose(val_1, val_2, atol=0.1).all() diff --git a/tests/qelectron_tests/test_run_later.py b/tests/qelectron_tests/test_run_later.py new file mode 100644 index 000000000..169e96662 --- /dev/null +++ b/tests/qelectron_tests/test_run_later.py @@ -0,0 +1,92 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +import pennylane as qml +import pytest +from numpy import isclose + +import covalent as ct + +EXECUTORS = [ + ct.executor.QiskitExecutor(device="local_sampler", shots=10_000), + ct.executor.Simulator(), +] + + +@pytest.mark.parametrize("executor", EXECUTORS) +def test_qaoa(executor): + """ + Test that `run_later` produces the same result as the normal call. + """ + from networkx import Graph + from pennylane import qaoa + + wires = range(10) + graph = Graph([(0, 1), (1, 2), (2, 0)]) + cost_h, mixer_h = qaoa.maxcut(graph) + + def qaoa_layer(gamma, alpha): + qaoa.cost_layer(gamma, cost_h) + qaoa.mixer_layer(alpha, mixer_h) + + @ct.qelectron(executors=executor) + @qml.qnode(qml.device("lightning.qubit", wires=len(wires))) + def circuit(params): + for w in wires: + qml.Hadamard(wires=w) + qml.layer(qaoa_layer, 2, params[0], params[1]) + return qml.expval(cost_h) + + inputs = [[1, 1.0], [1.2, 1]] + output_1 = circuit(inputs.copy()) + output_2 = circuit.run_later(inputs.copy()).result() + + assert isclose(output_1, output_2, rtol=0.1), "Call and run later results are different" + + +@pytest.mark.parametrize("executor", EXECUTORS) +def test_multi_return_async(executor): + """ + Test that `run_later` produces the same result as the normal call. + """ + + @qml.qnode(qml.device("default.qubit", wires=2, shots=4096)) + def circuit(theta): + qml.Hadamard(wires=0) + qml.CNOT(wires=[0, 1]) + qml.RY(theta, wires=0) + + return [ + qml.expval(qml.PauliZ(0) @ qml.PauliZ(1)), + qml.expval(qml.PauliZ(0) @ qml.PauliX(1)), + qml.expval(qml.PauliX(0) @ qml.PauliZ(1)), + qml.expval(qml.PauliX(0) @ qml.PauliX(1)), + ] + + qe_circuit = ct.qelectron(circuit, executors=executor) + + thetas = [0.1, 0.9] + + output_1 = [circuit(theta) for theta in thetas] + + futures = [qe_circuit.run_later(theta) for theta in thetas] + output_2 = [future.result() for future in futures] + + msg = "Call and run later results are different" + for o1, o2 in zip(output_1, output_2): + assert isclose(o1, o2, atol=0.1).all(), msg diff --git a/tests/qelectron_tests/utils.py b/tests/qelectron_tests/utils.py new file mode 100644 index 000000000..8c7412ec7 --- /dev/null +++ b/tests/qelectron_tests/utils.py @@ -0,0 +1,121 @@ +# Copyright 2021 Agnostiq Inc. +# +# This file is part of Covalent. +# +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# pylint: disable=no-member + +from typing import Callable, List, Tuple + +import pennylane as qml +from pennylane import numpy as np + + +def simple_circuit(param): + """ + A tiny, reusable Pennylane circuit. + """ + qml.RX(param, wires=0) + qml.Hadamard(wires=1) + qml.CNOT(wires=[0, 1]) + return qml.expval(qml.operation.Tensor(*(qml.PauliY(0), qml.PauliX(1)))) + + +def get_hamiltonian_circuit() -> Tuple[Callable, List[int], int]: + """ + A Pennylane circuit that returns the `expval` of a Hamiltonian. + """ + + symbols = ["H", "H"] + coordinates = np.array([0.0, 0.0, -0.6614, 0.0, 0.0, 0.6614]) + H, num_qubits = qml.qchem.molecular_hamiltonian(symbols, coordinates) + + n_electrons = 2 + hf_state = qml.qchem.hf_state(n_electrons, num_qubits) + _, doubles = qml.qchem.excitations(n_electrons, num_qubits) + + def manual_double_excitation(phi, wires): + """ + Manually implement decomposition of `qml.DoubleExcitation` gate. + + TODO: replace with `qml.DoubleExcitation` call once template support is merged. + """ + qml.CNOT(wires=[wires[2], wires[3]]) + qml.CNOT(wires=[wires[0], wires[2]]) + qml.Hadamard(wires=wires[3]) + qml.Hadamard(wires=wires[0]) + qml.CNOT(wires=[wires[2], wires[3]]) + qml.CNOT(wires=[wires[0], wires[1]]) + qml.RY(phi / 8, wires=wires[1]) + qml.RY(-phi / 8, wires=wires[0]) + qml.CNOT(wires=[wires[0], wires[3]]) + qml.Hadamard(wires=wires[3]) + qml.CNOT(wires=[wires[3], wires[1]]) + qml.RY(phi / 8, wires=wires[1]) + qml.RY(-phi / 8, wires=wires[0]) + qml.CNOT(wires=[wires[2], wires[1]]) + qml.CNOT(wires=[wires[2], wires[0]]) + qml.RY(-phi / 8, wires=wires[1]) + qml.RY(phi / 8, wires=wires[0]) + qml.CNOT(wires=[wires[3], wires[1]]) + qml.Hadamard(wires=wires[3]) + qml.CNOT(wires=[wires[0], wires[3]]) + qml.RY(-phi / 8, wires=wires[1]) + qml.RY(phi / 8, wires=wires[0]) + qml.CNOT(wires=[wires[0], wires[1]]) + qml.CNOT(wires=[wires[2], wires[0]]) + qml.Hadamard(wires=wires[0]) + qml.Hadamard(wires=wires[3]) + qml.CNOT(wires=[wires[0], wires[2]]) + qml.CNOT(wires=[wires[2], wires[3]]) + + def circuit(params): + """ + Applies circuit operations. + """ + for i, occ in enumerate(hf_state): + if occ == 1: + qml.PauliX(wires=i) + for param in params: + manual_double_excitation(param, wires=list(range(num_qubits))) + return qml.expval(H) + + return circuit, doubles, num_qubits + + +def cyclic_selector(qscript, executors): + """ + A QCluster selector that cycle through sub-executors in a cyclic fashion. + + NOTE: set the `i` attribute to 0 before using this selector. + + TODO: remove once default cluster selectors are implemented. + """ + ex = executors[cyclic_selector.i % len(executors)] + cyclic_selector.i += 1 + return ex + + +def arg_vector(size): + """ + A random `tensor` of size `(size,)` with values in `[0, 2 * pi]`. + """ + return qml.numpy.random.uniform(0, 2 * np.pi, size=(size,)) + + +def weight_vector(size): + """ + A QAOA weights vector that matches args from `arg_vector(size)`. + """ + return [arg_vector(2 * size) for _ in range(size)] diff --git a/tests/requirements.txt b/tests/requirements.txt index 29415a9c8..411f0903b 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -6,7 +6,7 @@ isort>=5.10.1 locust>=2.11.0 mock>=4.0.3 nbconvert>=6.5.1 -pennylane>=0.25.1 +pennylane==0.31.1 pre-commit>=2.20.0 pytest>=7.1.3 pytest-asyncio>=0.21.0 diff --git a/tests/stress_tests/benchmarks/conftest.py b/tests/stress_tests/benchmarks/conftest.py index f42414f5a..b24ac6548 100644 --- a/tests/stress_tests/benchmarks/conftest.py +++ b/tests/stress_tests/benchmarks/conftest.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import logging import time diff --git a/tests/stress_tests/benchmarks/cpu_intensive_workflows_test.py b/tests/stress_tests/benchmarks/cpu_intensive_workflows_test.py index c8757039e..b261902ed 100644 --- a/tests/stress_tests/benchmarks/cpu_intensive_workflows_test.py +++ b/tests/stress_tests/benchmarks/cpu_intensive_workflows_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import random diff --git a/tests/stress_tests/benchmarks/memory_intensive_workflow_test.py b/tests/stress_tests/benchmarks/memory_intensive_workflow_test.py index 4cfd152b6..af52154d7 100644 --- a/tests/stress_tests/benchmarks/memory_intensive_workflow_test.py +++ b/tests/stress_tests/benchmarks/memory_intensive_workflow_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import numpy as np import pytest diff --git a/tests/stress_tests/benchmarks/parallel_workflows_test.py b/tests/stress_tests/benchmarks/parallel_workflows_test.py index bd67dbdeb..ed74ba88b 100644 --- a/tests/stress_tests/benchmarks/parallel_workflows_test.py +++ b/tests/stress_tests/benchmarks/parallel_workflows_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import secrets import tempfile diff --git a/tests/stress_tests/benchmarks/two_node_workflows_test.py b/tests/stress_tests/benchmarks/two_node_workflows_test.py index fa395bf78..3691b1d96 100644 --- a/tests/stress_tests/benchmarks/two_node_workflows_test.py +++ b/tests/stress_tests/benchmarks/two_node_workflows_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest diff --git a/tests/stress_tests/benchmarks/vertical_workflows_test.py b/tests/stress_tests/benchmarks/vertical_workflows_test.py index 6db399e56..c28f4df5d 100644 --- a/tests/stress_tests/benchmarks/vertical_workflows_test.py +++ b/tests/stress_tests/benchmarks/vertical_workflows_test.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest diff --git a/tests/stress_tests/scripts/mnist_sublattices.py b/tests/stress_tests/scripts/mnist_sublattices.py index 57c76f91d..31ad46fc8 100644 --- a/tests/stress_tests/scripts/mnist_sublattices.py +++ b/tests/stress_tests/scripts/mnist_sublattices.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Run MNIST workflows in parallel sublattices # Adapted from MNIST covalent tutorial diff --git a/tests/stress_tests/scripts/parallel_cpu.py b/tests/stress_tests/scripts/parallel_cpu.py index 2f09728fc..629a7375c 100644 --- a/tests/stress_tests/scripts/parallel_cpu.py +++ b/tests/stress_tests/scripts/parallel_cpu.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with multiple independent cpu_intensive electrons # Transport graph looks like diff --git a/tests/stress_tests/scripts/parallel_cpumem.py b/tests/stress_tests/scripts/parallel_cpumem.py index 480331d67..0d1c169cb 100644 --- a/tests/stress_tests/scripts/parallel_cpumem.py +++ b/tests/stress_tests/scripts/parallel_cpumem.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with both cpu and mem intensive tasks, all independent # Graph looks like diff --git a/tests/stress_tests/scripts/parallel_light.py b/tests/stress_tests/scripts/parallel_light.py index 8527de5e7..f91fd9593 100644 --- a/tests/stress_tests/scripts/parallel_light.py +++ b/tests/stress_tests/scripts/parallel_light.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with independent lightweight electrons # Transport graph consists of a single layer diff --git a/tests/stress_tests/scripts/parallel_mem.py b/tests/stress_tests/scripts/parallel_mem.py index 1b698640b..5be1e0364 100644 --- a/tests/stress_tests/scripts/parallel_mem.py +++ b/tests/stress_tests/scripts/parallel_mem.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with independent memory_intensive electrons # Transport graph consists of a single layer diff --git a/tests/stress_tests/scripts/parallel_mixed.py b/tests/stress_tests/scripts/parallel_mixed.py index 06d30b84f..f23ef2e5e 100644 --- a/tests/stress_tests/scripts/parallel_mixed.py +++ b/tests/stress_tests/scripts/parallel_mixed.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with both cpu-heavy and cpu-light electrons # Transport graph consists of a single layer diff --git a/tests/stress_tests/scripts/postprocess_benchmarks.py b/tests/stress_tests/scripts/postprocess_benchmarks.py index 4a1516879..713859d36 100644 --- a/tests/stress_tests/scripts/postprocess_benchmarks.py +++ b/tests/stress_tests/scripts/postprocess_benchmarks.py @@ -3,21 +3,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # coding: utf-8 diff --git a/tests/stress_tests/scripts/serial_light.py b/tests/stress_tests/scripts/serial_light.py index 6e1b07451..65425ebb3 100644 --- a/tests/stress_tests/scripts/serial_light.py +++ b/tests/stress_tests/scripts/serial_light.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with a single chain of lightweight tasks # Graph consists of a single chain diff --git a/tests/stress_tests/scripts/squaregraph_light.py b/tests/stress_tests/scripts/squaregraph_light.py index 7cbbb87a6..9115b56cd 100644 --- a/tests/stress_tests/scripts/squaregraph_light.py +++ b/tests/stress_tests/scripts/squaregraph_light.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow with a large graph, all lightweight electrons # Transport graph looks like a feedforward neural network diff --git a/tests/stress_tests/scripts/sublattices_mixed.py b/tests/stress_tests/scripts/sublattices_mixed.py index 728b0ed71..4dc085f0f 100644 --- a/tests/stress_tests/scripts/sublattices_mixed.py +++ b/tests/stress_tests/scripts/sublattices_mixed.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. # Workflow consisting of one MNIST sublattice and multiple # cpu-intensive tasks, all independent. diff --git a/tests/stress_tests/scripts/tasks.py b/tests/stress_tests/scripts/tasks.py index 080b68dcc..55d9ab8c9 100644 --- a/tests/stress_tests/scripts/tasks.py +++ b/tests/stress_tests/scripts/tasks.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import math from pathlib import Path diff --git a/tests/stress_tests/stress_test_cpu.py b/tests/stress_tests/stress_test_cpu.py index c260e974c..b9698c10f 100644 --- a/tests/stress_tests/stress_test_cpu.py +++ b/tests/stress_tests/stress_test_cpu.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import covalent as ct diff --git a/tests/stress_tests/stress_test_sublattices.py b/tests/stress_tests/stress_test_sublattices.py index 475f81b47..0534279df 100644 --- a/tests/stress_tests/stress_test_sublattices.py +++ b/tests/stress_tests/stress_test_sublattices.py @@ -2,21 +2,17 @@ # # This file is part of Covalent. # -# Licensed under the GNU Affero General Public License 3.0 (the "License"). -# A copy of the License may be obtained with this software package or at +# Licensed under the Apache License 2.0 (the "License"). A copy of the +# License may be obtained with this software package or at # -# https://www.gnu.org/licenses/agpl-3.0.en.html +# https://www.apache.org/licenses/LICENSE-2.0 # -# Use of this file is prohibited except in compliance with the License. Any -# modifications or derivative works of this file must retain this copyright -# notice, and modified files must contain a notice indicating that they have -# been altered from the originals. -# -# Covalent is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the License for more details. -# -# Relief from the License may be granted by purchasing a commercial license. +# Use of this file is prohibited except in compliance with the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import numpy as np