From dda0bd9316988bd8ce1d8a3842574359d0f26992 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:15:31 +0000 Subject: [PATCH 1/8] chore(deps): update returntocorp/semgrep docker digest to 374d5a6 (#3196) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/security_semgrep.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/security_semgrep.yml b/.github/workflows/security_semgrep.yml index bf808bffd8..8485ad0eca 100644 --- a/.github/workflows/security_semgrep.yml +++ b/.github/workflows/security_semgrep.yml @@ -9,7 +9,7 @@ jobs: name: Semgrep Analyze runs-on: ubuntu-latest container: - image: returntocorp/semgrep@sha256:14e68d6c5e501b838d07b3f6effc2bf58faf343d9f62cefd1af0108dfe6291df # 1.47.0 + image: returntocorp/semgrep@sha256:374d5a678b58e9ba3ef291ce37ffa836f69150a2360c78f02dca7a07bc42fb7d # 1.47.0 steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 From 201b196f585aa245fe383a2bc1826b390880fe1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:37:08 +0000 Subject: [PATCH 2/8] chore(deps): update github/codeql-action digest to babb554 (#3197) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/nightly_scans.yml | 2 +- .github/workflows/security_codeql.yml | 4 ++-- .github/workflows/security_semgrep.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nightly_scans.yml b/.github/workflows/nightly_scans.yml index 73c9e9a875..a3e4ac37de 100644 --- a/.github/workflows/nightly_scans.yml +++ b/.github/workflows/nightly_scans.yml @@ -34,6 +34,6 @@ jobs: uses: SvanBoxel/zaproxy-to-ghas@cfc77481d74a17a4c3d6b753aa9d7abef453d501 # v1.0.2 - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3 + uses: github/codeql-action/upload-sarif@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3 with: sarif_file: results.sarif diff --git a/.github/workflows/security_codeql.yml b/.github/workflows/security_codeql.yml index 38d06a0373..d06bdaac58 100644 --- a/.github/workflows/security_codeql.yml +++ b/.github/workflows/security_codeql.yml @@ -22,7 +22,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3 + uses: github/codeql-action/init@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3 with: languages: javascript, python # If you wish to specify custom queries, you can do so here or in a config file. @@ -33,4 +33,4 @@ jobs: queries: +security-extended - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3 + uses: github/codeql-action/analyze@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3 diff --git a/.github/workflows/security_semgrep.yml b/.github/workflows/security_semgrep.yml index 8485ad0eca..19e7779fdf 100644 --- a/.github/workflows/security_semgrep.yml +++ b/.github/workflows/security_semgrep.yml @@ -25,7 +25,7 @@ jobs: SEMGREP_RULES: "p/default" - name: Upload SARIF file for GitHub Advanced Security Dashboard - uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3 + uses: github/codeql-action/upload-sarif@babb554ede22fd5605947329c4d04d8e7a0b8155 # v3 with: sarif_file: ${{ env.SEMGREP_TO_UPLOAD }} if: always() From 24284545621c5b41ef424e82ab06c5bdc06ff92b Mon Sep 17 00:00:00 2001 From: Jonathan Nalley Date: Tue, 10 Dec 2024 23:19:52 -0500 Subject: [PATCH 3/8] fix: updating home landing page text based on environment --- frontend/src/pages/Home.jsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index 480faa0c77..038cf94b23 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -5,10 +5,16 @@ const Home = () => { return (
- -

This is the OPRE OPS system prototype

-

⚠️Tread with caution

-
+ {!import.meta.env.PROD ? ( + +

This is a non-production OPS environment

+

⚠️This environment is not authorized for certain production datasets. Additionally, this environment may be updated regularly.

+
+ ) : ( + +

Welcome to OPS!

+
+ )}
); From 3f4f33c66fc478107af15e823d2fda006a3a497d Mon Sep 17 00:00:00 2001 From: Jonathan Nalley Date: Wed, 11 Dec 2024 00:11:26 -0500 Subject: [PATCH 4/8] fix: addressing rather-specific cypress test --- frontend/cypress/e2e/mainPage.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/mainPage.cy.js b/frontend/cypress/e2e/mainPage.cy.js index 2e7b2cb391..7562796051 100644 --- a/frontend/cypress/e2e/mainPage.cy.js +++ b/frontend/cypress/e2e/mainPage.cy.js @@ -12,7 +12,7 @@ afterEach(() => { }); it("loads", () => { - cy.get("h1").contains("This is the OPRE OPS system prototype"); + cy.get("h1").contains("Welcome to OPS"); }); it("clicking on /cans nav takes you to CAN page", () => { From 3ed81430b8243e3af2840306fc8110752ee6e06a Mon Sep 17 00:00:00 2001 From: Jonathan Nalley Date: Wed, 11 Dec 2024 00:15:29 -0500 Subject: [PATCH 5/8] fix: the other usage of that text in the same cypress file --- frontend/cypress/e2e/mainPage.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/mainPage.cy.js b/frontend/cypress/e2e/mainPage.cy.js index 7562796051..d8ac63ce40 100644 --- a/frontend/cypress/e2e/mainPage.cy.js +++ b/frontend/cypress/e2e/mainPage.cy.js @@ -22,7 +22,7 @@ it("clicking on /cans nav takes you to CAN page", () => { }); it("clicking on /portfolio nav while unauthenticated, should keep you at home page.", () => { - cy.get("h1").contains("This is the OPRE OPS system prototype"); + cy.get("h1").contains("Welcome to OPS"); cy.url().should("include", "/"); }); From 87c0d228c25acc95b4aff2d4f7635b71d16bdf51 Mon Sep 17 00:00:00 2001 From: Jonathan Nalley Date: Wed, 11 Dec 2024 00:34:48 -0500 Subject: [PATCH 6/8] fix: making cypress assertion more correct for the env --- frontend/cypress/e2e/mainPage.cy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/cypress/e2e/mainPage.cy.js b/frontend/cypress/e2e/mainPage.cy.js index d8ac63ce40..ddf1405968 100644 --- a/frontend/cypress/e2e/mainPage.cy.js +++ b/frontend/cypress/e2e/mainPage.cy.js @@ -12,7 +12,7 @@ afterEach(() => { }); it("loads", () => { - cy.get("h1").contains("Welcome to OPS"); + cy.get("h1").contains("This is a non-production OPS environment"); }); it("clicking on /cans nav takes you to CAN page", () => { @@ -22,7 +22,7 @@ it("clicking on /cans nav takes you to CAN page", () => { }); it("clicking on /portfolio nav while unauthenticated, should keep you at home page.", () => { - cy.get("h1").contains("Welcome to OPS"); + cy.get("h1").contains("This is a non-production OPS environment"); cy.url().should("include", "/"); }); From a9e366a96cd454f82444b9df98b1b89448c658f3 Mon Sep 17 00:00:00 2001 From: rajohnson90 Date: Wed, 11 Dec 2024 09:44:36 -0600 Subject: [PATCH 7/8] fix(documents): fixing get doc route that caused permanent http308 redirect --- backend/ops_api/ops/urls.py | 2 +- frontend/cypress/e2e/uploadDocument.cy.js | 39 ++++++++++++----------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/backend/ops_api/ops/urls.py b/backend/ops_api/ops/urls.py index efdcafd95e..79a615651e 100644 --- a/backend/ops_api/ops/urls.py +++ b/backend/ops_api/ops/urls.py @@ -310,7 +310,7 @@ def register_api(api_bp: Blueprint) -> None: view_func=CHANGE_REQUEST_REVIEW_API_VIEW_FUNC, ) api_bp.add_url_rule( - "/documents//", + "/documents/", view_func=DOCUMENT_API_FUNC, ) api_bp.add_url_rule( diff --git a/frontend/cypress/e2e/uploadDocument.cy.js b/frontend/cypress/e2e/uploadDocument.cy.js index 74b1347551..f084e70f13 100644 --- a/frontend/cypress/e2e/uploadDocument.cy.js +++ b/frontend/cypress/e2e/uploadDocument.cy.js @@ -27,24 +27,27 @@ it("should create a document database record and upload to in memory storage", ( // Verifying the document database record exists expect(localStorage.getItem("access_token")).to.exist; const bearer_token = `Bearer ${window.localStorage.getItem("access_token")}`; - cy.request({ - method: "GET", - url: "http://localhost:8080/api/v1/documents/1", - headers: { - Authorization: bearer_token, - "Content-Type": "application/json", - Accept: "application/json" - } - }).then((response) => { - expect(response.status).to.eq(200); - expect(response.body.url).to.exist; - expect(response.body.url).to.include("FakeDocumentRepository"); - expect(response.body.documents).to.exist; - expect(response.body.documents[0].document_name).to.eq("sample_document.xlsx"); - expect(response.body.documents[0].document_type).to.eq("DocumentType.ADDITIONAL_DOCUMENT"); - expect(response.body.documents[0].agreement_id).to.eq(1); - expect(response.body.documents[0].status).to.eq("uploaded"); - }); + cy.wait(2000).then(() => { + cy.request({ + method: "GET", + url: "http://localhost:8080/api/v1/documents/1", + headers: { + Authorization: bearer_token, + "Content-Type": "application/json", + Accept: "application/json" + } + }).then((response) => { + expect(response.status).to.eq(200); + expect(response.body.url).to.exist; + expect(response.body.url).to.include("FakeDocumentRepository"); + expect(response.body.documents).to.exist; + const mostRecentDoc = response.body.documents.length - 1; + expect(response.body.documents[mostRecentDoc].document_name).to.eq("sample_document.xlsx"); + expect(response.body.documents[mostRecentDoc].document_type).to.eq("DocumentType.ADDITIONAL_DOCUMENT"); + expect(response.body.documents[mostRecentDoc].agreement_id).to.eq(1); + expect(response.body.documents[mostRecentDoc].status).to.eq("uploaded"); + }); + }) }); it.skip("Should download document in memory storage and verify logs", () => { From df0872cf22de58a236b5776e007152007ceaac64 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 18:48:41 +0000 Subject: [PATCH 8/8] chore(deps): update dependency numpy to v2.2.0 (#3205) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/ops_api/Pipfile | 2 +- backend/ops_api/Pipfile.lock | 114 +++++++++++++++++------------------ 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/backend/ops_api/Pipfile b/backend/ops_api/Pipfile index 77a352f663..ad13bd644e 100644 --- a/backend/ops_api/Pipfile +++ b/backend/ops_api/Pipfile @@ -33,7 +33,7 @@ flake8-black = "==0.3.6" ipython = "==8.30.0" isort = "==5.13.2" nox = "==2024.10.9" -numpy = "==2.1.3" +numpy = "==2.2.0" pytest = "==8.3.4" pytest-bdd = "==8.1.0" pytest-cov = "==6.0.0" diff --git a/backend/ops_api/Pipfile.lock b/backend/ops_api/Pipfile.lock index ead417017c..44e70f3c70 100644 --- a/backend/ops_api/Pipfile.lock +++ b/backend/ops_api/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a26e7b758ad27ecc759cc802f7e8e17e923f099f0fe9acc6bb38e883f1abd493" + "sha256": "4ce33b6dc14d6fa047e6bd1ef9a8b36c7ddea41aecca04bbc366acea63282b4a" }, "pipfile-spec": 6, "requires": { @@ -1644,65 +1644,65 @@ }, "numpy": { "hashes": [ - "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", - "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", - "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", - "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", - "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", - "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", - "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", - "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", - "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", - "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", - "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", - "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", - "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", - "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", - "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", - "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", - "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", - "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", - "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", - "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", - "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", - "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", - "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", - "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", - "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", - "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", - "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", - "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", - "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", - "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", - "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", - "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", - "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", - "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", - "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", - "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", - "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", - "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", - "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", - "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", - "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", - "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", - "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", - "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", - "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", - "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", - "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", - "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", - "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", - "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", - "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", - "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", - "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", - "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", - "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" + "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", + "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", + "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", + "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", + "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", + "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", + "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", + "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", + "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", + "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", + "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", + "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", + "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", + "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", + "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", + "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", + "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", + "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", + "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", + "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", + "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", + "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", + "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", + "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", + "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", + "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", + "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", + "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", + "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", + "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", + "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", + "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", + "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", + "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", + "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", + "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", + "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", + "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", + "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", + "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", + "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", + "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", + "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", + "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", + "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", + "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", + "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", + "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", + "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", + "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", + "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", + "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", + "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", + "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", + "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==2.1.3" + "version": "==2.2.0" }, "packaging": { "hashes": [