From f0cdf723299950b817e61634213b15c5bc7fe14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 3 May 2023 18:04:51 +0200 Subject: [PATCH 001/154] init with legal information --- CODE_OF_CONDUCT.md | 52 ++++++++++++++++++++++++++++++++++++++++ LICENSE | 37 ++++++++++++++++++++++++++++ SECURITY.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 LICENSE create mode 100644 SECURITY.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..b60d6e4fcc --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,52 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic + addresses, without explicit permission +* Other unethical or unprofessional conduct + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +By adopting this Code of Conduct, project maintainers commit themselves to +fairly and consistently applying these principles to every aspect of managing +this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project maintainers at research@onekey.com. If +the incident involves a committer, you may report directly to +florian.lukavsky@onekey.com. + +All complaints will be reviewed and investigated and will result in a +response that is deemed necessary and appropriate to the circumstances. +Maintainers are obligated to maintain confidentiality with regard to the +reporter of an incident. + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.3.0, available at +[http://contributor-covenant.org/version/1/3/0/][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..21826147de --- /dev/null +++ b/LICENSE @@ -0,0 +1,37 @@ +MIT License + +Copyright (c) 2022 ONEKEY GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-- + +Logic for Unix Compress (unblob/handlers/compression/compress.py) is +ported from the unlzw project +(https://github.com/umeat/unlzw/). + +Original license: + +> Written by Brandon Owen, May 2016, brandon.owen@hotmail.com Adapted from original work by Mark Adler - orginal copyright notice below +> +> Copyright (C) 2014, 2015 Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: +> +> The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +> Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +> This notice may not be removed or altered from any source distribution. Mark Adler madler@alumni.caltech.edu diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..89b7c11905 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,60 @@ +# Security Policy + +## Reporting +As a security company, ONEKEY commits to all of its open source products having sound and secure implementations. + +All security bugs in ONEKEY products should be reported by email to security@onekey.com. We strongly suggest that you encrypt your email content using our PGP public key (see below). Security bugs must not be reported through public Github issues. + +In accordance with the [Responsible Full Disclosure Policy (RFPolicy) v2.0](https://dl.packetstormsecurity.net/papers/general/rfpolicy-2.0.txt), your email will be acknowledged within five days. The security team will then keep you informed of the progress being made towards a fix and full announcement at least every five days. + +## Disclosure policy +ONEKEY has a 5 step disclosure process. + +1. The security report is received and is assigned a primary handler. This person will coordinate the fix and release process. + +1. The problem is confirmed and a list of all affected versions is determined. + +1. Code is audited to find any potential similar problems. + +1. Fixes are prepared and applied to the latest version. These fixes are not committed to the public repository but rather held locally pending the announcement. + +1. On the embargo date, the advisory is pushed to the affected repository’s wiki, the changes are pushed to the public repository and new builds are deployed to package repositories. A copy of the advisory is then published in the release notes. + +This process can take some time, especially when coordination is required with maintainers of other projects. Every effort will be made to handle the bug in an as timely a manner as possible, however it’s important that we follow the release process above to ensure that the disclosure is handled in a consistent manner. + +We will never push silent fixes of reported security issues to our code bases. Our security fixes commit will always contain explicit commit messages describing the issue and fix in details and reference a CVE if applicable. Our security advisories will always credit the reporter either by name, handle, or email address. If the reporter wishes to stay anonymous, we will credit them as “anonymous researcher”. + +## PGP Key + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBGJWa+gBCADwVEuade39t7qC2L997zAbHg5MvmqgL/mgAz0wc+SnB60lKP1S +ALAedVVs68ODrNIy5Ob542oXvKVaiAGPDjpD76TTHUaONKCtAWQMjd1FG/zi7U7F +wtzON22xc9pOlbf7Vind1bV6eF8rSRt8xIvhYIs6wl6cqHOAqMfOzQp/FqA9LVkd +KZwHTwcIeXm2simpNk6GkjVVjy6QRc3tO0KpLyfUGNLrUBhA9tNtzjbZ5nUESIuE +FNgCai0pX89h8PuXiRABDQq4SVxq9+Wl3xkdX0gck444fQLLRxpYVpl4mBodY79/ +Hl1MuYFzm4xgBHD5LEeZ9wgqFSRlklXGI+URABEBAAG0GnJlc2VhcmNoQGlvdC1p +bnNwZWN0b3IuY29tiQFOBBMBCAA4FiEE7X8jOwd94T3HaMCoSogMvqTieacFAmJW +a+gCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQSogMvqTieaePPAf/XRO3 +SZppFI+d9FLwzL4in8dMFAsGWOS+HzifCisNJ4ERHyyD1UK1ZlS0FyXfoylUIINl +62MjzGVrUj6p6i3qTuOjymOJYhR3I3CKLGUh5JA+DPQxJ9+kHTQbUpxvXJQ8P2BS +x3Cz11zu9EDMzEC2hbchANhJ8pUnQhAeuSbAwAxzGEvXqwm789IvuXFkGZkAR60J +eQnbvgT1Ij2Awq7oOBmOEQ79MzvB7m+Bd8uQQCOxqNCX+2TTH+PKC/2x0RwlyYG9 +yjnUyyPttyCc8dkjUiirchhE9g5kYCUNmprWw7Pr5pO+5Wuwk+1DwYGXie81aJkZ +jWqTE90EvmMbatGf4LkBDQRiVmvoAQgA0d546TrhcBPh3nbiE++kFz+Pne9fdorv +3ln2zMmFxtn6f4eNdwPlnu1vyTqTr0F/Sb39FU1t7c1UHfxbqvYHfExEKjI9Vzzy +74/rRK2RCO1PoUM4X+ngy13V4FH0EZNy0srXHZsD2TqWLCtsA34k87wBUizFaFUa +tI1Dg8ambo9i/7flovC1y3oX/hK+Ct6ey5r/SZ0gZ4esZSRb8ogddumZRFcakR6o +Vz91rHjAvvE4bxC1ioCiX0YXhst/GawwshZeq26Ju96QZQ/kSb4vwGQ1ThtSEsD4 +rypZopdv4U+JqwBlLpsL71iF+/wiEXIgja1zQc06cI9YMPKcAZSA+QARAQABiQE2 +BBgBCAAgFiEE7X8jOwd94T3HaMCoSogMvqTieacFAmJWa+gCGwwACgkQSogMvqTi +eaf7qwgAwN20J6wCUZmBD/sh27fmmpmsKGi86S8dN8Dt6QP9et5L9yMwGuxUuiLU +SByuBVCs6MvJGtyg5r1ZUbzevb3Ge7I4PPWGqnSiydxgCo8psmM7T2vpruKayfCb +FkYlwaoTAR9vD4rmftJO+X0fxwOvNtS6Xv4JNugUfeSEk4hIm5GPabSBWFd4imfy +QnTDT/JvV/HOf6LC1Nonz9aiwr6+F6MXQihZKGiK/tDoWrB5404p6JToLpeFcVaT +vylQcgCz/sFGLc4uV7XEobCDZpfP5UC+hjXpIorrTmKMSLotq8s5vx84W3qeZzgt +Gh7fzoVy9KKksJH0j1eFpBa+FgJM8g== +=obzE +-----END PGP PUBLIC KEY BLOCK----- +``` From 3cd7acf29d2484565eebb961bf84c5699a942745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 3 May 2023 18:06:57 +0200 Subject: [PATCH 002/154] unblob_native: ported rust code from unblob - Code is from https://github.com/onekey-sec/unblob/tree/main/rust - Initialized packaging - Pyright-specific changes to ginore issues from native code - Pre-commit hooks --- .gitignore | 5 + .pre-commit-config.yaml | 31 + Cargo.lock | 840 +++++++++++++++++++++++++++ Cargo.toml | 24 + README.md | 26 + benches/benches_main.rs | 31 + flake.lock | 196 +++++++ flake.nix | 217 +++++++ pdm.lock | 383 ++++++++++++ pdm.toml | 2 + pyproject.toml | 126 ++++ rust-toolchain.toml | 3 + src/lib.rs | 19 + src/math.rs | 33 ++ tests/test_math.py | 17 + unblob_native/__init__.py | 5 + unblob_native/_native/__init__.pyi | 3 + unblob_native/_native/math_tools.pyi | 1 + unblob_native/py.typed | 0 19 files changed, 1962 insertions(+) create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 README.md create mode 100755 benches/benches_main.rs create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 pdm.lock create mode 100644 pdm.toml create mode 100644 pyproject.toml create mode 100644 rust-toolchain.toml create mode 100644 src/lib.rs create mode 100644 src/math.rs create mode 100644 tests/test_math.py create mode 100644 unblob_native/__init__.py create mode 100644 unblob_native/_native/__init__.pyi create mode 100644 unblob_native/_native/math_tools.pyi create mode 100644 unblob_native/py.typed diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..5753c1e44d --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.so +.pdm-python +/target +__pycache__ +result* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..2ac2223d15 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,31 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: trailing-whitespace + exclude: ".*\\.md" + - id: end-of-file-fixer + - id: check-toml + - id: check-yaml + - id: check-added-large-files + + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: "v0.0.264" + hooks: + - id: ruff + name: Check python (ruff) + args: [--show-source, --fix, --exit-non-zero-on-fix] + + - repo: https://github.com/psf/black + rev: 23.1.0 + hooks: + - id: black + name: Check black + + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.21.0 + hooks: + - id: check-github-actions + name: Check Github actions + - id: check-github-workflows + name: Check Github workflows diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000000..cbf6427786 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,840 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags", + "textwrap", + "unicode-width", +] + +[[package]] +name = "criterion" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +dependencies = [ + "atty", + "cast", + "clap", + "criterion-plot", + "csv", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_cbor", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "csv" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pyo3" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b1ac5b3731ba34fdaa9785f8d74d17448cd18f30cf19e0c7e7b1fdb5272109" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cb946f5ac61bb61a5014924910d936ebd2b23b705f7a4a3c40b05c720b079a3" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd4d7c5337821916ea2a1d21d1092e8443cf34879e53a0ac653fbb98f44ff65c" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d39c55dab3fc5a4b25bbd1ac10a2da452c4aca13bb450f22818a002e29648d" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97daff08a4c48320587b5224cc98d609e3c27b6d437315bd40b605c98eeb5918" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.12.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "unblob-native" +version = "0.1.0" +dependencies = [ + "approx", + "criterion", + "pyo3", + "rand", +] + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unindent" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..211b6a0825 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "unblob-native" +version = "0.1.0" +edition = "2021" +license = "MIT" + +[lib] +name = "unblob_native" +crate-type = [ + "cdylib", # for Python extension + "rlib", # for benchmarking +] + +[dependencies] +pyo3 = "0.18.3" + +[dev-dependencies] +approx = "0.5.0" +criterion = "0.3.5" +rand = "0.8.4" + +[[bench]] +name = "benches_main" +harness = false diff --git a/README.md b/README.md new file mode 100644 index 0000000000..81368b1ade --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# unblob-native + +Looking for Unblob? Check out at https://unblob.org. + +This package holds performance-critical components of Unblob, +an _accurate, fast, and easy-to-use_ **extraction suite**. It parses +unknown binary blobs for more than 30 different _archive, compression, and +file-system formats_, **extracts** their **content recursively**, and **carves** +out **unknown chunks** that have not been accounted for. + +Unblob is _free to use_, licensed with the _MIT license_. It has a +Command Line Interface and can be used as a Python library. +This turns unblob into the perfect companion for extracting, **analyzing**, +and **reverse engineering firmware images**. + +## Development + +This package is easiest to develop using [Nix](https://nixos.org). Refer to the +relevant section of [The Unblob Documentation](https://unblob.org/installation/#nix-package) +on how to install Nix. + +Once ready, issue `nix develop`, and the required tools will be set-up for you. + +The package is managed via [PDM](https://pdm.fming.dev/latest/). Just call `pdm +all`, and it will execute the required check and test steps for you. Use `pdm +run --list` to see what commands are being executed. diff --git a/benches/benches_main.rs b/benches/benches_main.rs new file mode 100755 index 0000000000..647cc05641 --- /dev/null +++ b/benches/benches_main.rs @@ -0,0 +1,31 @@ +#![allow(clippy::identity_op)] +#![allow(non_snake_case, non_upper_case_globals)] + +use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; +use rand::prelude::*; + +const kB: usize = 1024; +const MB: usize = 1024 * kB; + +fn shannon_entropy(c: &mut Criterion) { + let mut sample = vec![0u8; 1 * MB]; + StdRng::seed_from_u64(5).fill(&mut sample[..]); + + let mut group = c.benchmark_group("Shannon entropy"); + + for sample_size in [256, 1 * kB, 64 * kB, 256 * kB, 1 * MB] { + group.throughput(Throughput::Bytes(sample_size as u64)); + group.bench_with_input( + BenchmarkId::from_parameter(sample_size), + &sample_size, + |b, &size| { + b.iter(|| unblob_native::shannon_entropy(&sample[0..size])); + }, + ); + } + group.finish(); +} + +criterion_group!(benches, shannon_entropy); + +criterion_main!(benches); diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000000..b166bc8707 --- /dev/null +++ b/flake.lock @@ -0,0 +1,196 @@ +{ + "nodes": { + "advisory-db": { + "flake": false, + "locked": { + "lastModified": 1682392122, + "narHash": "sha256-czFFXzZ88LP1cBAk9nNo6Y3tefxbW+Zg18co5yWlN9Y=", + "owner": "rustsec", + "repo": "advisory-db", + "rev": "d72795ee51634b8c5bcf6b3bc98d08ec5888d191", + "type": "github" + }, + "original": { + "owner": "rustsec", + "repo": "advisory-db", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1683073415, + "narHash": "sha256-QCdNRAhO7tIgltMgisMKpnY5bpdGtIG1R6xA4wHcXyg=", + "owner": "ipetkov", + "repo": "crane", + "rev": "7d74bfafea4cfbfa30128c053fc0a1ec7455da74", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": [] + }, + "locked": { + "lastModified": 1683094894, + "narHash": "sha256-Zv0IZlnVYb0ZtAFOpnh2gGtK35zP7CdRXV+yqRP8I6U=", + "owner": "nix-community", + "repo": "fenix", + "rev": "83776271b05d06a43823e797ae171c6061f7e2eb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1678901627, + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1681154353, + "narHash": "sha256-MCJ5FHOlbfQRFwN0brqPbCunLEVw05D/3sRVoNVt2tI=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "f529f42792ade8e32c4be274af6b6d60857fbee7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1683020768, + "narHash": "sha256-ZyZl6k9NWS5QPwD3NoAVz/eSgodQDvl+y+fu8MVbrHc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "44f30edf5661d86fb3a95841c35127f3d0ea8b0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "advisory-db": "advisory-db", + "crane": "crane", + "fenix": "fenix", + "flake-utils": "flake-utils_2", + "nix-filter": "nix-filter", + "nixpkgs": "nixpkgs" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "crane", + "flake-utils" + ], + "nixpkgs": [ + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1680488274, + "narHash": "sha256-0vYMrZDdokVmPQQXtFpnqA2wEgCCUXf5a3dDuDVshn0=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "7ec2ff598a172c6e8584457167575b3a1a5d80d8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000000..75807ee530 --- /dev/null +++ b/flake.nix @@ -0,0 +1,217 @@ +{ + description = "Performance sensitive parts of Unblob"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + nix-filter.url = "github:numtide/nix-filter"; + + crane = { + url = "github:ipetkov/crane"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + fenix = { + url = "github:nix-community/fenix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.rust-analyzer-src.follows = ""; + }; + + flake-utils.url = "github:numtide/flake-utils"; + + advisory-db = { + url = "github:rustsec/advisory-db"; + flake = false; + }; + }; + + outputs = { self, nixpkgs, nix-filter, crane, fenix, flake-utils, advisory-db, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + }; + + filter = nix-filter.lib; + + inherit (pkgs) lib makeRustPlatform python3Packages; + + channel = (builtins.fromTOML (builtins.readFile ./rust-toolchain.toml)).toolchain.channel; + rust-toolchain = fenix.packages.${system}.toolchainOf { + inherit channel; + sha256 = "sha256-otgm+7nEl94JG/B+TYhWseZsHV1voGcBsW/lOD2/68g="; + }; + craneLib = crane.lib.${system}.overrideToolchain rust-toolchain.toolchain; + src = craneLib.cleanCargoSource (craneLib.path ./.); + + # Common arguments can be set here to avoid repeating them later + commonArgs = { + inherit src; + + buildInputs = [ + # Add additional build inputs here + pkgs.python3 + ] ++ lib.optionals pkgs.stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + pkgs.libiconv + ]; + + # Additional environment variables can be set directly + # MY_CUSTOM_VAR = "some value"; + }; + + craneLibLLvmTools = craneLib.overrideToolchain + (fenix.packages.${system}.complete.withComponents [ + "cargo" + "llvm-tools" + "rustc" + ]); + + # Build *just* the cargo dependencies, so we can reuse + # all of that work (e.g. via cachix) when running in CI + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + + # Build the actual crate itself, reusing the dependency + # artifacts from above. + libunblob-native = craneLib.buildPackage (commonArgs // { + inherit cargoArtifacts; + }); + + rustPlatform = makeRustPlatform { + inherit (rust-toolchain) cargo rustc; + }; + + unblob-native = python3Packages.buildPythonPackage + { + inherit (libunblob-native) pname version; + format = "pyproject"; + + src = filter { + root = ./.; + include = [ + "Cargo.toml" + "Cargo.lock" + "pyproject.toml" + "unblob_native" + "benches" + "src" + "README.md" + "LICENSE" + ]; + }; + + buildInputs = [ pkgs.maturin ]; + + strictDeps = true; + doCheck = false; + cargoDeps = rustPlatform.importCargoLock { + lockFile = ./Cargo.lock; + }; + + nativeBuildInputs = + (with rustPlatform; [ + cargoSetupHook + maturinBuildHook + ]); + + passthru = { + tests = { + pytest = + with python3Packages; buildPythonPackage + { + inherit (libunblob-native) pname version; + format = "other"; + + src = filter + { + root = ./.; + include = [ + "pyproject.toml" + "tests" + ]; + }; + + dontBuild = true; + dontInstall = true; + + nativeCheckInputs = [ + unblob-native + pytestCheckHook + ]; + }; + }; + }; + }; + in + { + checks = unblob-native.tests // { + # Build the crate as part of `nix flake check` for convenience + inherit libunblob-native; + + # Run clippy (and deny all warnings) on the crate source, + # again, reusing the dependency artifacts from above. + # + # Note that this is done as a separate derivation so that + # we can block the CI if there are issues here, but not + # prevent downstream consumers from building our crate by itself. + libunblob-native-clippy = craneLib.cargoClippy (commonArgs // { + inherit cargoArtifacts; + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + }); + + libunblob-native-doc = craneLib.cargoDoc (commonArgs // { + inherit cargoArtifacts; + }); + + # Check formatting + libunblob-native-fmt = craneLib.cargoFmt { + inherit src; + }; + + # Audit dependencies + libunblob-native-audit = craneLib.cargoAudit { + inherit src advisory-db; + }; + + # Run tests with cargo-nextest + # Consider setting `doCheck = false` on `libunblob-native` if you do not want + # the tests to run twice + libunblob-native-nextest = craneLib.cargoNextest (commonArgs // { + inherit cargoArtifacts; + partitions = 1; + partitionType = "count"; + }); + } // lib.optionalAttrs (system == "x86_64-linux") { + # NB: cargo-tarpaulin only supports x86_64 systems + # Check code coverage (note: this will not upload coverage anywhere) + libunblob-native-coverage = craneLib.cargoTarpaulin (commonArgs // { + inherit cargoArtifacts; + }); + }; + + packages = { + default = unblob-native; + inherit libunblob-native; + libunblob-native-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { + inherit cargoArtifacts; + }); + }; + + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues self.checks.${system}; + + # Additional dev-shell environment variables can be set directly + # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; + + # Extra inputs can be added here + nativeBuildInputs = with pkgs; [ + black + maturin + pdm + ruff + ]; + }; + + formatter = pkgs.nixpkgs-fmt; + }); +} diff --git a/pdm.lock b/pdm.lock new file mode 100644 index 0000000000..da1b1e4223 --- /dev/null +++ b/pdm.lock @@ -0,0 +1,383 @@ +# This file is @generated by PDM. +# It is not intended for manual editing. + +[[package]] +name = "atomicwrites" +version = "1.4.1" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +summary = "Atomic file writes." + +[[package]] +name = "attrs" +version = "23.1.0" +requires_python = ">=3.7" +summary = "Classes Without Boilerplate" + +[[package]] +name = "black" +version = "23.3.0" +requires_python = ">=3.7" +summary = "The uncompromising code formatter." +dependencies = [ + "click>=8.0.0", + "mypy-extensions>=0.4.3", + "packaging>=22.0", + "pathspec>=0.9.0", + "platformdirs>=2", + "tomli>=1.1.0; python_version < \"3.11\"", + "typing-extensions>=3.10.0.0; python_version < \"3.10\"", +] + +[[package]] +name = "cfgv" +version = "3.3.1" +requires_python = ">=3.6.1" +summary = "Validate configuration and produce human readable error messages." + +[[package]] +name = "click" +version = "8.1.3" +requires_python = ">=3.7" +summary = "Composable command line interface toolkit" +dependencies = [ + "colorama; platform_system == \"Windows\"", +] + +[[package]] +name = "colorama" +version = "0.4.6" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Cross-platform colored terminal text." + +[[package]] +name = "distlib" +version = "0.3.6" +summary = "Distribution utilities" + +[[package]] +name = "filelock" +version = "3.12.0" +requires_python = ">=3.7" +summary = "A platform independent file lock." + +[[package]] +name = "identify" +version = "2.5.24" +requires_python = ">=3.7" +summary = "File identification library for Python" + +[[package]] +name = "iniconfig" +version = "2.0.0" +requires_python = ">=3.7" +summary = "brain-dead simple config-ini parsing" + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +requires_python = ">=3.5" +summary = "Type system extensions for programs checked with the mypy type checker." + +[[package]] +name = "nodeenv" +version = "1.7.0" +requires_python = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +summary = "Node.js virtual environment builder" +dependencies = [ + "setuptools", +] + +[[package]] +name = "packaging" +version = "23.1" +requires_python = ">=3.7" +summary = "Core utilities for Python packages" + +[[package]] +name = "pathspec" +version = "0.11.1" +requires_python = ">=3.7" +summary = "Utility library for gitignore style pattern matching of file paths." + +[[package]] +name = "platformdirs" +version = "3.5.0" +requires_python = ">=3.7" +summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." + +[[package]] +name = "pluggy" +version = "1.0.0" +requires_python = ">=3.6" +summary = "plugin and hook calling mechanisms for python" + +[[package]] +name = "pre-commit" +version = "2.21.0" +requires_python = ">=3.7" +summary = "A framework for managing and maintaining multi-language pre-commit hooks." +dependencies = [ + "cfgv>=2.0.0", + "identify>=1.0.0", + "nodeenv>=0.11.1", + "pyyaml>=5.1", + "virtualenv>=20.10.0", +] + +[[package]] +name = "py" +version = "1.11.0" +requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +summary = "library with cross-python path, ini-parsing, io, code, log facilities" + +[[package]] +name = "pyright" +version = "1.1.306" +requires_python = ">=3.7" +summary = "Command line wrapper for pyright" +dependencies = [ + "nodeenv>=1.6.0", +] + +[[package]] +name = "pytest" +version = "7.0.1" +requires_python = ">=3.6" +summary = "pytest: simple powerful testing with Python" +dependencies = [ + "atomicwrites>=1.0; sys_platform == \"win32\"", + "attrs>=19.2.0", + "colorama; sys_platform == \"win32\"", + "iniconfig", + "packaging", + "pluggy<2.0,>=0.12", + "py>=1.8.2", + "tomli>=1.0.0", +] + +[[package]] +name = "pyyaml" +version = "6.0" +requires_python = ">=3.6" +summary = "YAML parser and emitter for Python" + +[[package]] +name = "ruff" +version = "0.0.264" +requires_python = ">=3.7" +summary = "An extremely fast Python linter, written in Rust." + +[[package]] +name = "setuptools" +version = "67.7.2" +requires_python = ">=3.7" +summary = "Easily download, build, install, upgrade, and uninstall Python packages" + +[[package]] +name = "tomli" +version = "2.0.1" +requires_python = ">=3.7" +summary = "A lil' TOML parser" + +[[package]] +name = "typing-extensions" +version = "4.5.0" +requires_python = ">=3.7" +summary = "Backported and Experimental Type Hints for Python 3.7+" + +[[package]] +name = "virtualenv" +version = "20.23.0" +requires_python = ">=3.7" +summary = "Virtual Python Environment builder" +dependencies = [ + "distlib<1,>=0.3.6", + "filelock<4,>=3.11", + "platformdirs<4,>=3.2", +] + +[metadata] +lock_version = "4.2" +groups = ["default", "dev"] +content_hash = "sha256:148e3bd0b8d600ad040b57e5c17907da1d0c35c1962213a73bd0bd01246e9550" + +[metadata.files] +"atomicwrites 1.4.1" = [ + {url = "https://files.pythonhosted.org/packages/87/c6/53da25344e3e3a9c01095a89f16dbcda021c609ddb42dd6d7c0528236fb2/atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] +"attrs 23.1.0" = [ + {url = "https://files.pythonhosted.org/packages/97/90/81f95d5f705be17872843536b1868f351805acf6971251ff07c1b8334dbb/attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {url = "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, +] +"black 23.3.0" = [ + {url = "https://files.pythonhosted.org/packages/06/1e/273d610249f0335afb1ddb03664a03223f4826e3d1a95170a0142cb19fb4/black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {url = "https://files.pythonhosted.org/packages/12/4b/99c71d1cf1353edd5aff2700b8960f92e9b805c9dab72639b67dbb449d3a/black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {url = "https://files.pythonhosted.org/packages/13/0a/ed8b66c299e896780e4528eed4018f5b084da3b9ba4ee48328550567d866/black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {url = "https://files.pythonhosted.org/packages/13/25/cfa06788d0a936f2445af88f13604b5bcd5c9d050db618c718e6ebe66f74/black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {url = "https://files.pythonhosted.org/packages/21/14/d5a2bec5fb15f9118baab7123d344646fac0b1c6939d51c2b05259cd2d9c/black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {url = "https://files.pythonhosted.org/packages/24/eb/2d2d2c27cb64cfd073896f62a952a802cd83cf943a692a2f278525b57ca9/black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {url = "https://files.pythonhosted.org/packages/27/70/07aab2623cfd3789786f17e051487a41d5657258c7b1ef8f780512ffea9c/black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {url = "https://files.pythonhosted.org/packages/29/b1/b584fc863c155653963039664a592b3327b002405043b7e761b9b0212337/black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {url = "https://files.pythonhosted.org/packages/3c/d7/85f3d79f9e543402de2244c4d117793f262149e404ea0168841613c33e07/black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {url = "https://files.pythonhosted.org/packages/3f/0d/81dd4194ce7057c199d4f28e4c2a885082d9d929e7a55c514b23784f7787/black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {url = "https://files.pythonhosted.org/packages/49/36/15d2122f90ff1cd70f06892ebda777b650218cf84b56b5916a993dc1359a/black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {url = "https://files.pythonhosted.org/packages/49/d7/f3b7da6c772800f5375aeb050a3dcf682f0bbeb41d313c9c2820d0156e4e/black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {url = "https://files.pythonhosted.org/packages/69/49/7e1f0cf585b0d607aad3f971f95982cc4208fc77f92363d632d23021ee57/black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {url = "https://files.pythonhosted.org/packages/6d/b4/0f13ab7f5e364795ff82b76b0f9a4c9c50afda6f1e2feeb8b03fdd7ec57d/black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {url = "https://files.pythonhosted.org/packages/ad/e7/4642b7f462381799393fbad894ba4b32db00870a797f0616c197b07129a9/black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {url = "https://files.pythonhosted.org/packages/c0/53/42e312c17cfda5c8fc4b6b396a508218807a3fcbb963b318e49d3ddd11d5/black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {url = "https://files.pythonhosted.org/packages/ca/44/eb41edd3f558a6139f09eee052dead4a7a464e563b822ddf236f5a8ee286/black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {url = "https://files.pythonhosted.org/packages/ce/f4/2b0c6ac9e1f8584296747f66dd511898b4ebd51d6510dba118279bff53b6/black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {url = "https://files.pythonhosted.org/packages/d1/6e/5810b6992ed70403124c67e8b3f62858a32b35405177553f1a78ed6b6e31/black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {url = "https://files.pythonhosted.org/packages/d6/36/66370f5017b100225ec4950a60caeef60201a10080da57ddb24124453fba/black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {url = "https://files.pythonhosted.org/packages/d7/6f/d3832960a3b646b333b7f0d80d336a3c123012e9d9d5dba4a622b2b6181d/black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {url = "https://files.pythonhosted.org/packages/db/f4/7908f71cc71da08df1317a3619f002cbf91927fb5d3ffc7723905a2113f7/black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {url = "https://files.pythonhosted.org/packages/de/b4/76f152c5eb0be5471c22cd18380d31d188930377a1a57969073b89d6615d/black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {url = "https://files.pythonhosted.org/packages/eb/a5/17b40bfd9b607b69fa726b0b3a473d14b093dcd5191ea1a1dd664eccfee3/black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {url = "https://files.pythonhosted.org/packages/fd/5b/fc2d7922c1a6bb49458d424b5be71d251f2d0dc97be9534e35d171bdc653/black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, +] +"cfgv 3.3.1" = [ + {url = "https://files.pythonhosted.org/packages/6d/82/0a0ebd35bae9981dea55c06f8e6aaf44a49171ad798795c72c6f64cba4c2/cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, + {url = "https://files.pythonhosted.org/packages/c4/bf/d0d622b660d414a47dc7f0d303791a627663f554345b21250e39e7acb48b/cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, +] +"click 8.1.3" = [ + {url = "https://files.pythonhosted.org/packages/59/87/84326af34517fca8c58418d148f2403df25303e02736832403587318e9e8/click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {url = "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, +] +"colorama 0.4.6" = [ + {url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +"distlib 0.3.6" = [ + {url = "https://files.pythonhosted.org/packages/58/07/815476ae605bcc5f95c87a62b95e74a1bce0878bc7a3119bc2bf4178f175/distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {url = "https://files.pythonhosted.org/packages/76/cb/6bbd2b10170ed991cf64e8c8b85e01f2fb38f95d1bc77617569e0b0b26ac/distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, +] +"filelock 3.12.0" = [ + {url = "https://files.pythonhosted.org/packages/24/85/cf4df939cc0a037ebfe18353005e775916faec24dcdbc7a2f6539ad9d943/filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, + {url = "https://files.pythonhosted.org/packages/ad/73/b094a662ae05cdc4ec95bc54e434e307986a5de5960166b8161b7c1373ee/filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, +] +"identify 2.5.24" = [ + {url = "https://files.pythonhosted.org/packages/4f/fd/2c46fba2bc032ba4c970bb8de59d25187087d7138a0ebf7c1dcc91d94f01/identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, + {url = "https://files.pythonhosted.org/packages/c4/f8/498e13e408d25ee6ff04aa0acbf91ad8e9caae74be91720fc0e811e649b7/identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, +] +"iniconfig 2.0.0" = [ + {url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + {url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, +] +"mypy-extensions 1.0.0" = [ + {url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] +"nodeenv 1.7.0" = [ + {url = "https://files.pythonhosted.org/packages/96/a8/d3b5baead78adadacb99e7281b3e842126da825cf53df61688cfc8b8ff91/nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, + {url = "https://files.pythonhosted.org/packages/f3/9d/a28ecbd1721cd6c0ea65da6bfb2771d31c5d7e32d916a8f643b062530af3/nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, +] +"packaging 23.1" = [ + {url = "https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {url = "https://files.pythonhosted.org/packages/b9/6c/7c6658d258d7971c5eb0d9b69fa9265879ec9a9158031206d47800ae2213/packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] +"pathspec 0.11.1" = [ + {url = "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {url = "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, +] +"platformdirs 3.5.0" = [ + {url = "https://files.pythonhosted.org/packages/91/17/3836ffe140abb245726d0e21c5b9b984e2569e7027c20d12e969ec69bd8a/platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, + {url = "https://files.pythonhosted.org/packages/ce/cf/279b73aae00f7ba9d5d7664156ef323ebbf16fb556285bb223ecc45031aa/platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, +] +"pluggy 1.0.0" = [ + {url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +"pre-commit 2.21.0" = [ + {url = "https://files.pythonhosted.org/packages/6b/00/1637ae945c6e10838ef5c41965f1c864e59301811bb203e979f335608e7c/pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, + {url = "https://files.pythonhosted.org/packages/a6/6b/6cfe3a8b351b54f4b6c6d2ad4286804e3367f628dce379c603d3b96635f4/pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, +] +"py 1.11.0" = [ + {url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, + {url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, +] +"pyright 1.1.306" = [ + {url = "https://files.pythonhosted.org/packages/91/0a/8e5bfa6079f8240da3bcb02780583f808e431e3e79627c2748b96919ee11/pyright-1.1.306-py3-none-any.whl", hash = "sha256:008eb2a29584ae274a154d749cf81476a3073fb562a462eac8d43a753378b9db"}, + {url = "https://files.pythonhosted.org/packages/9c/65/e12aee503b6093a22e1e01254a37bf5115bce8f62d67a6bd27fb81196c7f/pyright-1.1.306.tar.gz", hash = "sha256:16d5d198be64de497d5f9002000a271176c381e21b977ca5566cf779b643c9ed"}, +] +"pytest 7.0.1" = [ + {url = "https://files.pythonhosted.org/packages/38/93/c7c0bd1e932b287fb948eb9ce5a3d6307c9fc619db1e199f8c8bc5dad95f/pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, + {url = "https://files.pythonhosted.org/packages/3e/2c/a67ad48759051c7abf82ce182a4e6d766de371b183182d2dde03089e8dfb/pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, +] +"pyyaml 6.0" = [ + {url = "https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {url = "https://files.pythonhosted.org/packages/08/f4/ffa743f860f34a5e8c60abaaa686f82c9ac7a2b50e5a1c3b1eb564d59159/PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {url = "https://files.pythonhosted.org/packages/0f/93/5f81d1925ce3b531f5ff215376445ec220887cd1c9a8bde23759554dbdfd/PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {url = "https://files.pythonhosted.org/packages/12/fc/a4d5a7554e0067677823f7265cb3ae22aed8a238560b5133b58cda252dad/PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {url = "https://files.pythonhosted.org/packages/21/67/b42191239c5650c9e419c4a08a7a022bbf1abf55b0391c380a72c3af5462/PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {url = "https://files.pythonhosted.org/packages/2e/b3/13dfd4eeb5e4b2d686b6d1822b40702e991bf3a4194ca5cbcce8d43749db/PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {url = "https://files.pythonhosted.org/packages/36/2b/61d51a2c4f25ef062ae3f74576b01638bebad5e045f747ff12643df63844/PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {url = "https://files.pythonhosted.org/packages/44/e5/4fea13230bcebf24b28c0efd774a2dd65a0937a2d39e94a4503438b078ed/PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {url = "https://files.pythonhosted.org/packages/4d/7d/c2ab8da648cd2b937de11fb35649b127adab4851cbeaf5fd9b60a2dab0f7/PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {url = "https://files.pythonhosted.org/packages/55/e3/507a92589994a5b3c3d7f2a7a066339d6ff61c5c839bae56f7eff03d9c7b/PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {url = "https://files.pythonhosted.org/packages/56/8f/e8b49ad21d26111493dc2d5cae4d7efbd0e2e065440665f5023515f87f64/PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {url = "https://files.pythonhosted.org/packages/59/00/30e33fcd2a4562cd40c49c7740881009240c5cbbc0e41ca79ca4bba7c24b/PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {url = "https://files.pythonhosted.org/packages/5e/f4/7b4bb01873be78fc9fde307f38f62e380b7111862c165372cf094ca2b093/PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {url = "https://files.pythonhosted.org/packages/63/6b/f5dc7942bac17192f4ef00b2d0cdd1ae45eea453d05c1944c0573debe945/PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {url = "https://files.pythonhosted.org/packages/67/d4/b95266228a25ef5bd70984c08b4efce2c035a4baa5ccafa827b266e3dc36/PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {url = "https://files.pythonhosted.org/packages/68/3f/c027422e49433239267c62323fbc6320d6ac8d7d50cf0cb2a376260dad5f/PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {url = "https://files.pythonhosted.org/packages/6c/3d/524c642f3db37e7e7ab8d13a3f8b0c72d04a619abc19100097d987378fc6/PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {url = "https://files.pythonhosted.org/packages/74/68/3c13deaa496c14a030c431b7b828d6b343f79eb241b4848c7918091a64a2/PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {url = "https://files.pythonhosted.org/packages/77/da/e845437ffe0dffae4e7562faf23a4f264d886431c5d2a2816c853288dc8e/PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {url = "https://files.pythonhosted.org/packages/7f/d9/6a0d14ac8d3b5605dc925d177c1d21ee9f0b7b39287799db1e50d197b2f4/PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {url = "https://files.pythonhosted.org/packages/81/59/561f7e46916b78f3c4cab8d0c307c81656f11e32c846c0c97fda0019ed76/PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {url = "https://files.pythonhosted.org/packages/89/26/0bfd7b756b34c68f8fd158b7bc762b6b1705fc1b3cebf4cdbb53fd9ea75b/PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {url = "https://files.pythonhosted.org/packages/91/49/d46d7b15cddfa98533e89f3832f391aedf7e31f37b4d4df3a7a7855a7073/PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {url = "https://files.pythonhosted.org/packages/9d/f6/7e91fbb58c9ee528759aea5892e062cccb426720c5830ddcce92eba00ff1/PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {url = "https://files.pythonhosted.org/packages/a4/ba/e508fc780e3c94c12753a54fe8f74de535741a10d33b29a576a9bec03500/PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {url = "https://files.pythonhosted.org/packages/a4/e6/4d7a01bc0730c8f958a62d6a4c4f3df23b6139ad68c132b168970d84f192/PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {url = "https://files.pythonhosted.org/packages/a8/32/1bbe38477fb23f1d83041fefeabf93ef1cd6f0efcf44c221519507315d92/PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {url = "https://files.pythonhosted.org/packages/a8/5b/c4d674846ea4b07ee239fbf6010bcc427c4e4552ba5655b446e36b9a40a7/PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {url = "https://files.pythonhosted.org/packages/b3/85/79b9e5b4e8d3c0ac657f4e8617713cca8408f6cdc65d2ee6554217cedff1/PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {url = "https://files.pythonhosted.org/packages/b7/09/2f6f4851bbca08642fef087bade095edc3c47f28d1e7bff6b20de5262a77/PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {url = "https://files.pythonhosted.org/packages/cb/5f/05dd91f5046e2256e35d885f3b8f0f280148568f08e1bf20421887523e9a/PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {url = "https://files.pythonhosted.org/packages/d1/c0/4fe04181b0210ee2647cfbb89ecd10a36eef89f10d8aca6a192c201bbe58/PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {url = "https://files.pythonhosted.org/packages/d7/42/7ad4b6d67a16229496d4f6e74201bdbebcf4bc1e87d5a70c9297d4961bd2/PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {url = "https://files.pythonhosted.org/packages/db/4e/74bc723f2d22677387ab90cd9139e62874d14211be7172ed8c9f9a7c81a9/PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {url = "https://files.pythonhosted.org/packages/df/75/ee0565bbf65133e5b6ffa154db43544af96ea4c42439e6b58c1e0eb44b4e/PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {url = "https://files.pythonhosted.org/packages/eb/5f/6e6fe6904e1a9c67bc2ca5629a69e7a5a0b17f079da838bab98a1e548b25/PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {url = "https://files.pythonhosted.org/packages/ef/ad/b443cce94539e57e1a745a845f95c100ad7b97593d7e104051e43f730ecd/PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {url = "https://files.pythonhosted.org/packages/f5/6f/b8b4515346af7c33d3b07cd8ca8ea0700ca72e8d7a750b2b87ac0268ca4e/PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {url = "https://files.pythonhosted.org/packages/f8/54/799b059314b13e1063473f76e908f44106014d18f54b16c83a16edccd5ec/PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {url = "https://files.pythonhosted.org/packages/fc/48/531ecd926fe0a374346dd811bf1eda59a95583595bb80eadad511f3269b8/PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, +] +"ruff 0.0.264" = [ + {url = "https://files.pythonhosted.org/packages/1e/0e/375fde351cb0531470ad6b437cb1bbb6ce83cb0f6e01d0fd68680e3cfeff/ruff-0.0.264-py3-none-win32.whl", hash = "sha256:5a8658ebcc37d62f72840cbdf564171c1a2b6831db482b4d917962541a2f4a44"}, + {url = "https://files.pythonhosted.org/packages/23/dc/51ee0cd6d2c3c8e0ddc6531c7a8909c5df5f5f21d091854e9ff4293a7466/ruff-0.0.264-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d628de91e2be7a83128526636097d2dd890669a06143f826f6c591d79aeefbc4"}, + {url = "https://files.pythonhosted.org/packages/31/84/b47957fa69018359dfbc350e28404a78f20a6cf213b580eff737784e3389/ruff-0.0.264-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cd4f60ffc3eb15802c554a9c8581bf2117c4d3d06fbc57e0ba58f04cb1aaa47f"}, + {url = "https://files.pythonhosted.org/packages/37/6f/4aeda64a401beecf560381961efd8a01d6d53d1e095b084b77f31e410dca/ruff-0.0.264-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c6eb4f979b661a2dd850d9ac803842bb7b66d4926de84f09c787af82590f73"}, + {url = "https://files.pythonhosted.org/packages/37/f1/c4023c9dc501d7e49fe939fd86a287c02cf044be6f6cece359218c2ea025/ruff-0.0.264-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71fd865ebacc1083259b3fb7e3eb45235a86e62e21830b8a6b067be0ec54aa2e"}, + {url = "https://files.pythonhosted.org/packages/57/eb/ec0dd02cfd07b7f725d5ba18edcbe1f1228b89d650eb72f50049c75f1df2/ruff-0.0.264-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04ec5d75e4bca754cedd20d53e2ba4920d6259e7579abfb2e8e30c3c80e41b17"}, + {url = "https://files.pythonhosted.org/packages/64/a9/0ab814985bc90c19e7ac8ba53406c8f2f535739fff3a749e83a0573420ae/ruff-0.0.264-py3-none-musllinux_1_2_i686.whl", hash = "sha256:484e395d1984ab9e1e66bd42e7a5192decfee86998d07d36ee50b2fadccc8734"}, + {url = "https://files.pythonhosted.org/packages/68/1d/f6fbf3b023b0c86c372ebe31907e18a3fc22ee3f6e00ea534e530aa48466/ruff-0.0.264-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4564e0f245eb515c6ed63988c21e9c40bcfd485cd1ec63bdd790f9a81d301f15"}, + {url = "https://files.pythonhosted.org/packages/6a/18/9809f9c1008a9f0cf1cbfc400b46649f1631eebe4dc6f9421f7178c361f8/ruff-0.0.264-py3-none-win_arm64.whl", hash = "sha256:3e2c38449548e122f2612843a7c04e22b4fd491656955c57b8cb05df11639ad6"}, + {url = "https://files.pythonhosted.org/packages/78/40/6a33d40d0bd48adce97775ed68b06922c95dba8076bb6db7ab320f6b9002/ruff-0.0.264-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:323ae6c1702b26c96d0fbf939c5959c37e79021f86b70f63634df918bc77f36e"}, + {url = "https://files.pythonhosted.org/packages/8a/e0/3cc67b6f9b9f20c04f1237a6192b19343309d3c2605930ea2472eb2f81fe/ruff-0.0.264-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18a29ed37bf8cfe6dce8a2db56c313a64c0804095108753621f3c3321e0c9c5f"}, + {url = "https://files.pythonhosted.org/packages/a3/82/2cb89c8afffb03201cbdd19529ed5b3338705d5c6fb2b76830d3d1955f17/ruff-0.0.264-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d97ba8db0fb601ffe9ee996ebb97c698e427a2fd4514fefbe7b803111354f783"}, + {url = "https://files.pythonhosted.org/packages/b2/95/bb0befe3eb5fc7ae4bfde2f4162323bf55136a106fd0685378c35a89e1bb/ruff-0.0.264-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:67326fdc9ac0a1b13e229c6e24e8d115863c52cd710faaaaa588851535281d6c"}, + {url = "https://files.pythonhosted.org/packages/be/b3/bcf54b0ddf6e0e75ebe7fbe3bb1c7786647f1aac3ed60e128863129b3b4a/ruff-0.0.264-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:ec2fa192c035b8b68cc2b91049c561cd69543e2b8c4d157d9aa7727320bedcca"}, + {url = "https://files.pythonhosted.org/packages/c2/a9/7c1b194946f1460ffbf26d9d25649c6ec4119982552936b3ce4425b7cae7/ruff-0.0.264-py3-none-win_amd64.whl", hash = "sha256:068a82a29d80848a56e3d9d4308e6e0ca8b2ecdaf5ac342a292545a59b7f2c21"}, + {url = "https://files.pythonhosted.org/packages/c6/06/3ed1d46e1e2a71d5b88b0087a994642730e5c1396425dd31d017463e0614/ruff-0.0.264.tar.gz", hash = "sha256:8fcd4b693ca1374eb7a5796581c90689f884f98f388740d94f0702fd30f8f78f"}, + {url = "https://files.pythonhosted.org/packages/fb/60/2f4f5170c58d70e4600d71c91e76b83a25ec31dfd2eb939e0805c1bbe6d2/ruff-0.0.264-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:05ee163a046fc593d150179d23f4af447fb82f3e59cd34e031ea0868c65bb8e8"}, +] +"setuptools 67.7.2" = [ + {url = "https://files.pythonhosted.org/packages/2f/8c/f336a966d4097c7cef6fc699b2ecb83b5fb63fd698198c1b5c7905a74f0f/setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, + {url = "https://files.pythonhosted.org/packages/fd/53/e5d7ae40d03e4ed20b7cba317cf9c0c97097c8debb39f9d72d182a6578a2/setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, +] +"tomli 2.0.1" = [ + {url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +"typing-extensions 4.5.0" = [ + {url = "https://files.pythonhosted.org/packages/31/25/5abcd82372d3d4a3932e1fa8c3dbf9efac10cc7c0d16e78467460571b404/typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {url = "https://files.pythonhosted.org/packages/d3/20/06270dac7316220643c32ae61694e451c98f8caf4c8eab3aa80a2bedf0df/typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, +] +"virtualenv 20.23.0" = [ + {url = "https://files.pythonhosted.org/packages/d6/37/3ff25b2ad0d51cfd752dc68ee0ad4387f058a5ceba4d89b47ac478de3f59/virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, + {url = "https://files.pythonhosted.org/packages/f1/0a/18755fa6aec794fd539b050beeaa905fa5c77c64356aa8bdecb62c01581a/virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, +] diff --git a/pdm.toml b/pdm.toml new file mode 100644 index 0000000000..c140ec1e0c --- /dev/null +++ b/pdm.toml @@ -0,0 +1,2 @@ +[venv] +with_pip = true diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..1babe01739 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,126 @@ +[project] +name = "unblob-native" +authors = [ + {name = "ONEKEY", email = "support@onekey.com"}, +] +description = "Performance-critical functionality for Unblob" +license = {file = "LICENSE"} +readme = "README.md" + +requires-python = "~=3.8" + +[project.urls] +homepage = "https://unblob.org" +repository = "https://github.com/onekey-sec/unblob-native" + +[tool.pdm.scripts] +venv = "pdm sync -d" +pre-commit = "pre-commit run --all" +pyright = "pyright" +pytest = "python -m pytest tests" +clippy = "cargo clippy --all-targets -- --deny warnings" +test = "cargo test" +all = { composite = ["clippy", "test", "venv", "pre-commit", "pyright", "pytest"] } + +[tool.pdm.dev-dependencies] +dev = [ + "black ~= 23.3.0", + "pre-commit ~= 2.20", + "pyright == 1.1.306", + "pytest ~= 7.0.0", + "ruff ~= 0.0.264", +] + +[build-system] +requires = ["maturin>=0.14,<0.15"] +build-backend = "maturin" + +[tool.maturin] +module-name = "unblob_native._native" + +features = [ + "pyo3/extension-module", # This is an extension module + "pyo3/abi3-py38" # https://docs.python.org/3/c-api/stable.html +] + +[tool.ruff] +target-version = "py38" + +select = [ + "A", # flake8-builtins + "ARG", # flake8-unused-arguments + "B", # flake8-bugbear + "C90", # mccabe + "C4", # flake8-comprehensions + "COM818", # flake8-commas; trailing-comma-on-bare-tuple + "D", # pydocstyle + "E", # pycodestyle (errors) + "F", # pyflakes + "FBT", # flake8-boolean-trap + "G", # flake8-logging-format + "I", # isort + "ISC", # flake8-implicit-str-concats + "N", # pep8-naming + "PIE", # flake8-pie + "PYI", # flake8-pyi + "PL", # pylint + "PT", # flake8-pytest-style + "PTH", # flake8-use-pathlib + "RET", # flake8-return + "RUF", # ruff's own lints + "RSE", # flake8-raise + "S", # flake8-bandit + "SIM", # flake8-simplify + "SLF", # flake8-self + "T10", # flake8-debugger + "T20", # flake8-print + "TCH", # flake8-type-checking + "TRY", # tryceratops + "UP", # pyupgrade + "W", # pycodestyle (warnings) +] + +ignore = [ + "D1", # undocumented-*: Native extension docstrings are not picked up + "D203", # one-blank-line-before-class: D211 (no-blank-line-before-class) is used instead + "D213", # multi-line-summary-second-line: D212 (multi-line-summary-first-line) is used instead + "E501", # line-too-long: Let black handle line length violations +] + +[tool.ruff.per-file-ignores] +"unblob_native/__init__.py" = [ + "F403", + "A001", + "F405", + "PLE0605", +] + +"tests/*" = [ + "S101", # assert: Enable usage of asserts +] + +[tool.ruff.flake8-pytest-style] +fixture-parentheses = false +mark-parentheses = false +parametrize-names-type = "csv" + +[tool.pyright] +include = ["unblob_native", "tests"] +stubPath = "." +pythonVersion = "3.8" +# Strict mode enables additional checks: +# https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-rule-defaults +typeCheckingMode = "strict" + +# The following are not enabled even in strict mode +reportImportCycles = "warning" +reportMissingSuperCall = "warning" +reportPropertyTypeMismatch = "warning" +reportShadowedImports = "warning" +reportUninitializedInstanceVariable = "warning" +reportUnnecessaryTypeIgnoreComment = "warning" +reportUnusedCallResult = "warning" + +reportUnknownArgumentType = "none" +reportUnknownVariableType = "none" +reportUnknownMemberType = "none" diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000000..b843f0c70f --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.60.0" +profile = "default" diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000000..f90abfac3a --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,19 @@ +pub(crate) mod math; + +use pyo3::prelude::*; + +/// Calculates Shannon entropy of data +#[pyfunction(text_signature = "(data)")] +pub fn shannon_entropy(data: &[u8]) -> PyResult { + Ok(math::shannon_entropy(data)) +} + +/// Performance-critical functionality +#[pymodule] +fn _native(py: Python, m: &PyModule) -> PyResult<()> { + let math_module = PyModule::new(py, "math_tools")?; + math_module.add_function(wrap_pyfunction!(shannon_entropy, math_module)?)?; + + m.add_submodule(math_module)?; + Ok(()) +} diff --git a/src/math.rs b/src/math.rs new file mode 100644 index 0000000000..221ba0cf8c --- /dev/null +++ b/src/math.rs @@ -0,0 +1,33 @@ +pub fn shannon_entropy(data: &[u8]) -> f64 { + let mut entropy = 0.0; + let mut counts = [0; 256]; + + for &b in data { + counts[b as usize] += 1; + } + + for &count in &counts { + if count == 0 { + continue; + } + + let p = count as f64 / data.len() as f64; + entropy -= p * p.log2(); + } + + entropy +} + +#[cfg(test)] +mod tests { + use approx::assert_relative_eq; + + use super::*; + + #[test] + fn test_shannon_entropy() { + let input = b"000111"; // 50% entropy distribution ~ 1 bit information + + assert_relative_eq!(shannon_entropy(input), 1.0); + } +} diff --git a/tests/test_math.py b/tests/test_math.py new file mode 100644 index 0000000000..e14d3546d2 --- /dev/null +++ b/tests/test_math.py @@ -0,0 +1,17 @@ +import pytest + +from unblob_native import math_tools + + +@pytest.mark.parametrize( + "data,entropy", + [ + pytest.param(b"", 0, id="empty"), + pytest.param(b"\x00", 0, id="0 bit"), + pytest.param(b"\x01\x01\x00\x00", 1.0, id="1 bit small"), + pytest.param(b"\x01\x01\x00\x00" * 1000, 1.0, id="1 bit large"), + pytest.param(b"\x00\x01\x02\x03", 2.0, id="2 bits"), + ], +) +def test_shannon_entropy(data: bytes, entropy: float): + assert math_tools.shannon_entropy(data) == pytest.approx(entropy) diff --git a/unblob_native/__init__.py b/unblob_native/__init__.py new file mode 100644 index 0000000000..317848502a --- /dev/null +++ b/unblob_native/__init__.py @@ -0,0 +1,5 @@ +from ._native import * + +if hasattr(_native, "__all__"): + __all__ = _native.__all__ # pyright: ignore [reportUnsupportedDunderAll] +__doc__ = _native.__doc__ diff --git a/unblob_native/_native/__init__.pyi b/unblob_native/_native/__init__.pyi new file mode 100644 index 0000000000..023b1298fa --- /dev/null +++ b/unblob_native/_native/__init__.pyi @@ -0,0 +1,3 @@ +from . import math_tools as math_tools + +__all__ = ["math_tools"] diff --git a/unblob_native/_native/math_tools.pyi b/unblob_native/_native/math_tools.pyi new file mode 100644 index 0000000000..06acd2832d --- /dev/null +++ b/unblob_native/_native/math_tools.pyi @@ -0,0 +1 @@ +def shannon_entropy(data: bytes) -> float: ... diff --git a/unblob_native/py.typed b/unblob_native/py.typed new file mode 100644 index 0000000000..e69de29bb2 From 6872c8e120df674ee602b841ed9bfbdc93dd76a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 3 May 2023 19:02:47 +0200 Subject: [PATCH 003/154] CI workflows - One check -> test -> build -> release pipeline - Auto-update nix environment job (experimental) --- .github/workflows/CI.yml | 164 ++++++++++++++++++++++++++ .github/workflows/Update.yml | 26 ++++ .github/workflows/check-mergeable.yml | 33 ++++++ 3 files changed, 223 insertions(+) create mode 100644 .github/workflows/CI.yml create mode 100644 .github/workflows/Update.yml create mode 100644 .github/workflows/check-mergeable.yml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000000..8991c62df0 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,164 @@ +name: CI + +on: + push: + branches: + - main + - master + tags: + - "*" + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + checks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v20 + - uses: cachix/cachix-action@v12 + with: + name: unblob + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + - name: Nix Flake checks + run: nix flake check --keep-going --print-build-logs + - name: Check Nix formatting + run: nix fmt -- --check . + - name: Check Python formatting + run: nix develop -c -- black --check --diff --color . + - name: Ruff + run: nix develop -c -- ruff . + + pytest: + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11"] + os: [ubuntu-latest, macOS-latest] + steps: + - uses: actions/checkout@v3 + - name: Set up PDM + uses: pdm-project/setup-pdm@v2 + with: + python-version: ${{ matrix.python-version }} + enable-pep582: false + cache: true + cache-dependency-path: | + ./pdm.lock + ./Cargo.lock + - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Install dependencies + run: | + pdm sync -d + - name: Run Tests + run: | + pdm pytest + + pyright: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up PDM + uses: pdm-project/setup-pdm@v2 + with: + python-version: "3.8" + enable-pep582: false + cache: true + cache-dependency-path: | + ./pdm.lock + ./Cargo.lock + - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Install dependencies + run: | + pdm sync -d + - name: Type-Check + run: | + pdm pyright + + # Build jobs are auto-generated by maturin v0.14.17 + # To update, run + # + # maturin generate-ci --platform linux macos -- github + # + wheel-linux: + runs-on: ubuntu-latest + needs: [checks, pytest, pyright] + strategy: + matrix: + target: [x86_64, aarch64] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.target }} + args: --release --out dist + sccache: "true" + manylinux: auto + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist + + wheel-macos: + runs-on: macos-latest + needs: [checks, pytest, pyright] + strategy: + matrix: + target: [x86_64, aarch64] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.target }} + args: --release --out dist + sccache: "true" + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist + + sdist: + runs-on: ubuntu-latest + needs: [checks, pytest, pyright] + steps: + - uses: actions/checkout@v3 + - name: Build sdist + uses: PyO3/maturin-action@v1 + with: + command: sdist + args: --out dist + - name: Upload sdist + uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist + + release: + name: Release + runs-on: ubuntu-latest + if: "startsWith(github.ref, 'refs/tags/')" + needs: [wheel-linux, wheel-macos, sdist] + steps: + - uses: actions/download-artifact@v3 + with: + name: wheels + - name: Publish to PyPI + uses: PyO3/maturin-action@v1 + env: + MATURIN_PYPI_TOKEN: ${{ secrets.POETRY_PYPI_TOKEN_PYPI }} + with: + command: upload + args: --skip-existing * diff --git a/.github/workflows/Update.yml b/.github/workflows/Update.yml new file mode 100644 index 0000000000..a1a25ce6be --- /dev/null +++ b/.github/workflows/Update.yml @@ -0,0 +1,26 @@ +name: "Update dependencies" +on: + workflow_dispatch: # allows manual triggering + schedule: + - cron: "0 0 * * 0" # runs weekly on Sunday at 00:00 + +jobs: + update-flake: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v20 + with: + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + - uses: cachix/cachix-action@v12 + with: + name: unblob + authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" + - name: Update flake.lock + uses: DeterminateSystems/update-flake-lock@vX + with: + pr-title: "Update flake.lock" # Title of PR to be created + pr-labels: | # Labels to be set on the PR + dependencies + automated diff --git a/.github/workflows/check-mergeable.yml b/.github/workflows/check-mergeable.yml new file mode 100644 index 0000000000..089cd84a7f --- /dev/null +++ b/.github/workflows/check-mergeable.yml @@ -0,0 +1,33 @@ +name: Check branch status + +on: + pull_request: + branches: + - "**" + +jobs: + check_branch_history: + name: Check - Linear history + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} # otherwise, it'd create a merge commit + fetch-depth: "0" + - name: Check HEAD is rebased on ${{ github.event.pull_request.base.ref }} + run: | + git config --global user.name "$GITHUB_ACTOR" + git config --global user.email "github-actions@github.com" + git fetch origin $GITHUB_BASE_REF + PR_HEAD_SHA=$(git rev-parse HEAD) + git rebase FETCH_HEAD + REBASED_SHA=$(git rev-parse HEAD) + echo "PR HEAD: $PR_HEAD_SHA" + echo "Rebased HEAD: $REBASED_SHA" + git range-diff FETCH_HEAD..$PR_HEAD_SHA FETCH_HEAD..$REBASED_SHA + if [[ "$REBASED_SHA" != "$PR_HEAD_SHA" ]]; then + echo "Not fast forward, aborting!" + echo "Ensure that the PR branch is rebased on $GITHUB_BASE_REF and does not contain merge commits." + exit 1 + fi From 71bb2a358193a5783c43494f5ee8532c0ec7e64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Thu, 4 May 2023 18:08:03 +0200 Subject: [PATCH 004/154] Work around bug in requests 2.30.0 https://github.com/psf/requests/issues/6437 --- .github/workflows/CI.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8991c62df0..64b6404a5e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -49,6 +49,8 @@ jobs: cache-dependency-path: | ./pdm.lock ./Cargo.lock + - name: Work around requests bug https://github.com/psf/requests/issues/6437 + run: pip install --force requests==2.29.0 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install dependencies run: | @@ -70,6 +72,8 @@ jobs: cache-dependency-path: | ./pdm.lock ./Cargo.lock + - name: Work around requests bug https://github.com/psf/requests/issues/6437 + run: pip install --force requests==2.29.0 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install dependencies run: | From 211967d0a30dfe0a3c3515318f8c0fa87fbc53b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 5 May 2023 12:47:06 +0200 Subject: [PATCH 005/154] nix: ensure iconv is available for the python package as well --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 75807ee530..4a1566edaa 100644 --- a/flake.nix +++ b/flake.nix @@ -100,7 +100,7 @@ ]; }; - buildInputs = [ pkgs.maturin ]; + buildInputs = commonArgs.buildInputs ++ [ pkgs.maturin ]; strictDeps = true; doCheck = false; From bc04d757b56da5386a70b31710e73757b16c4bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 5 May 2023 12:52:03 +0200 Subject: [PATCH 006/154] chore(workflows): Run nix checks for supported platforms --- .github/workflows/CI.yml | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 64b6404a5e..2d1b70c4f6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -23,8 +23,6 @@ jobs: with: name: unblob authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - - name: Nix Flake checks - run: nix flake check --keep-going --print-build-logs - name: Check Nix formatting run: nix fmt -- --check . - name: Check Python formatting @@ -32,6 +30,36 @@ jobs: - name: Ruff run: nix develop -c -- ruff . + build-nix: + strategy: + matrix: + include: + - os: ubuntu-latest + arch: x86_64-linux + - os: ubuntu-latest + arch: aarch64-linux + - os: macos-latest + arch: x86_64-darwin + name: Build Nix - ${{ matrix.arch }}.${{ matrix.os }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v20 + - uses: cachix/cachix-action@v12 + with: + name: unblob + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + - name: Setup emulation + if: ${{ matrix.arch == 'aarch64-linux' }} + run: | + sudo apt update + sudo apt install -q -y qemu-system-aarch64 qemu-efi binfmt-support qemu-user-static + mkdir -p ~/.config/nix + echo "system-features = aarch64-linux arm-linux" | sudo tee -a /etc/nix/nix.conf + - name: Nix Flake checks + run: | + nix flake check --keep-going --print-build-logs --option system ${{ matrix.arch }} --extra-platforms ${{ matrix.arch }} + pytest: runs-on: ${{ matrix.os }} strategy: @@ -154,7 +182,7 @@ jobs: name: Release runs-on: ubuntu-latest if: "startsWith(github.ref, 'refs/tags/')" - needs: [wheel-linux, wheel-macos, sdist] + needs: [build-nix, wheel-linux, wheel-macos, sdist] steps: - uses: actions/download-artifact@v3 with: From 6d677b2b479a793775d485a72adb25739e9cf744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 7 May 2023 23:08:14 +0200 Subject: [PATCH 007/154] chore(build): Python requirement doesn't support tilde notation --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1babe01739..c4f6ef533c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ description = "Performance-critical functionality for Unblob" license = {file = "LICENSE"} readme = "README.md" -requires-python = "~=3.8" +requires-python = ">=3.8" [project.urls] homepage = "https://unblob.org" From 1265b8d18d315c97687a9ac2aa265a63c5ec74cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 7 May 2023 23:08:47 +0200 Subject: [PATCH 008/154] chore(update): fix action version --- .github/workflows/Update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Update.yml b/.github/workflows/Update.yml index a1a25ce6be..b7509eaf9c 100644 --- a/.github/workflows/Update.yml +++ b/.github/workflows/Update.yml @@ -18,7 +18,7 @@ jobs: name: unblob authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Update flake.lock - uses: DeterminateSystems/update-flake-lock@vX + uses: DeterminateSystems/update-flake-lock@v19 with: pr-title: "Update flake.lock" # Title of PR to be created pr-labels: | # Labels to be set on the PR From a1d38d0868ee06f3bc3cad8ef2ced110151a3e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 7 May 2023 23:09:03 +0200 Subject: [PATCH 009/154] chore(build): build using emulator By default maturin uses a cross builder docker image which I found to have issues. It is better to be slow, but stable --- .github/workflows/CI.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2d1b70c4f6..12ca8db552 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -120,16 +120,25 @@ jobs: needs: [checks, pytest, pyright] strategy: matrix: - target: [x86_64, aarch64] + include: + - target: x86_64 + - target: aarch64 + cross: true steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: "3.10" + - name: setup emulation + if: ${{ matrix.cross }} + run: | + sudo apt update + sudo apt install -q -y qemu-system-${{ matrix.target }} qemu-efi binfmt-support qemu-user-static - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} + container: quay.io/pypa/manylinux2014_${{ matrix.target }}:latest args: --release --out dist sccache: "true" manylinux: auto From 221ca87b68f8c61c2a0b0e060116217db6cac3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 8 May 2023 00:25:55 +0200 Subject: [PATCH 010/154] chore(build): cargo nextest is flaky is on overkill and is flaky on arm Tests run during build anyway --- flake.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/flake.nix b/flake.nix index 4a1566edaa..ef41b23fd9 100644 --- a/flake.nix +++ b/flake.nix @@ -173,14 +173,6 @@ inherit src advisory-db; }; - # Run tests with cargo-nextest - # Consider setting `doCheck = false` on `libunblob-native` if you do not want - # the tests to run twice - libunblob-native-nextest = craneLib.cargoNextest (commonArgs // { - inherit cargoArtifacts; - partitions = 1; - partitionType = "count"; - }); } // lib.optionalAttrs (system == "x86_64-linux") { # NB: cargo-tarpaulin only supports x86_64 systems # Check code coverage (note: this will not upload coverage anywhere) From fda73c49e58295a9572db0c9aa3023fdce3559e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 8 May 2023 00:47:05 +0200 Subject: [PATCH 011/154] perf: release GIL while computing As of now, it doesn't impact performance, as we are not doing multithreading, but it doesn't make sense to keep the GIL in native non-Python code. Benchmark had to be adjusted to call the wrapped pure function. --- benches/benches_main.rs | 2 +- src/lib.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/benches/benches_main.rs b/benches/benches_main.rs index 647cc05641..ddd11b606c 100755 --- a/benches/benches_main.rs +++ b/benches/benches_main.rs @@ -19,7 +19,7 @@ fn shannon_entropy(c: &mut Criterion) { BenchmarkId::from_parameter(sample_size), &sample_size, |b, &size| { - b.iter(|| unblob_native::shannon_entropy(&sample[0..size])); + b.iter(|| unblob_native::math::shannon_entropy(&sample[0..size])); }, ); } diff --git a/src/lib.rs b/src/lib.rs index f90abfac3a..a1de8a259f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,11 @@ -pub(crate) mod math; +pub mod math; use pyo3::prelude::*; /// Calculates Shannon entropy of data #[pyfunction(text_signature = "(data)")] -pub fn shannon_entropy(data: &[u8]) -> PyResult { - Ok(math::shannon_entropy(data)) +pub fn shannon_entropy(py: Python, data: &[u8]) -> PyResult { + py.allow_threads(|| Ok(math::shannon_entropy(data))) } /// Performance-critical functionality From 75060aeb12a3febed14d0ebae6b0082829b1e514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 8 May 2023 17:49:58 +0200 Subject: [PATCH 012/154] chore: use rust-overlay instead of fenix to get rid of IFD Fenix uses a technique, called import from derivation, to acquire details for a rust toolchain version: It looks-up the version number, than downloads a manifest file, and build nix expressions from that which will be imported at the end. Nix flake check trips on IFD, with error messages like > a 'aarch64-darwin' with features {} is required to build '/nix/store/...', but I am a 'x86_64-linux' with features {} Rust-overlay on the other hand ships with toolchain manifests, not requiring IFD (but it is larger in size). This problem is hidden at this moment, as the manifest from Rust 1.60 leaks into the nix store somehow on the builders. --- flake.lock | 79 ++++++++++++++++++++++++++++++++++++++---------------- flake.nix | 31 +++++++++++---------- 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/flake.lock b/flake.lock index b166bc8707..e70e19a9c5 100644 --- a/flake.lock +++ b/flake.lock @@ -39,27 +39,6 @@ "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "rust-analyzer-src": [] - }, - "locked": { - "lastModified": 1683094894, - "narHash": "sha256-Zv0IZlnVYb0ZtAFOpnh2gGtK35zP7CdRXV+yqRP8I6U=", - "owner": "nix-community", - "repo": "fenix", - "rev": "83776271b05d06a43823e797ae171c6061f7e2eb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -109,6 +88,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "nix-filter": { "locked": { "lastModified": 1681154353, @@ -144,10 +141,10 @@ "inputs": { "advisory-db": "advisory-db", "crane": "crane", - "fenix": "fenix", "flake-utils": "flake-utils_2", "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay_2" } }, "rust-overlay": { @@ -175,6 +172,27 @@ "type": "github" } }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683512408, + "narHash": "sha256-QMJGp/37En+d5YocJuSU89GL14bBYkIJQ6mqhRfqkkc=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "75b07756c3feb22cf230e75fb064c1b4c725b9bc", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -189,6 +207,21 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ef41b23fd9..a475f95f64 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,9 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - fenix = { - url = "github:nix-community/fenix"; + rust-overlay = { + url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.rust-analyzer-src.follows = ""; }; flake-utils.url = "github:numtide/flake-utils"; @@ -25,23 +24,20 @@ }; }; - outputs = { self, nixpkgs, nix-filter, crane, fenix, flake-utils, advisory-db, ... }: + outputs = { self, nixpkgs, nix-filter, crane, rust-overlay, flake-utils, advisory-db, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; + overlays = [ (import rust-overlay) ]; }; filter = nix-filter.lib; inherit (pkgs) lib makeRustPlatform python3Packages; - channel = (builtins.fromTOML (builtins.readFile ./rust-toolchain.toml)).toolchain.channel; - rust-toolchain = fenix.packages.${system}.toolchainOf { - inherit channel; - sha256 = "sha256-otgm+7nEl94JG/B+TYhWseZsHV1voGcBsW/lOD2/68g="; - }; - craneLib = crane.lib.${system}.overrideToolchain rust-toolchain.toolchain; + rust-toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + craneLib = crane.lib.${system}.overrideToolchain rust-toolchain; src = craneLib.cleanCargoSource (craneLib.path ./.); # Common arguments can be set here to avoid repeating them later @@ -61,11 +57,13 @@ }; craneLibLLvmTools = craneLib.overrideToolchain - (fenix.packages.${system}.complete.withComponents [ - "cargo" - "llvm-tools" - "rustc" - ]); + (rust-toolchain.override { + extensions = [ + "cargo" + "llvm-tools-preview" + "rustc" + ]; + }); # Build *just* the cargo dependencies, so we can reuse # all of that work (e.g. via cachix) when running in CI @@ -78,7 +76,8 @@ }); rustPlatform = makeRustPlatform { - inherit (rust-toolchain) cargo rustc; + rustc = rust-toolchain; + cargo = rust-toolchain; }; unblob-native = python3Packages.buildPythonPackage From 3fa922fa166d8fcedaf38e27e693be786fd5c535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 8 May 2023 17:51:17 +0200 Subject: [PATCH 013/154] chore: Lift Rust version requirement to 1.65.0 It has been released in last November and is in use for `pyperscan` already, where that version is a hard requirement. --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b843f0c70f..6824925829 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.60.0" +channel = "1.65.0" profile = "default" From 8736371dab9214fc36e8b33e16642d6f2a73980d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 5 May 2023 15:31:42 +0200 Subject: [PATCH 014/154] chore: set version in pyproject.toml as dynamic Version is a required property, setting it to dynamic means, that it will be generated during build-time. This required for tools like `pdm` to be able to install this package in an editable manner directly from a remote. --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index c4f6ef533c..1ac978b39c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ license = {file = "LICENSE"} readme = "README.md" requires-python = ">=3.8" +dynamic = ["version"] # Calculated from the rust module version [project.urls] homepage = "https://unblob.org" From ef85cc519f465971cf3f24db52fd45fd509aa29d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 May 2023 21:29:31 +0000 Subject: [PATCH 015/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/d72795ee51634b8c5bcf6b3bc98d08ec5888d191' (2023-04-25) → 'github:rustsec/advisory-db/50bed3ba4066e6255dab434dc845e7f655812ce1' (2023-05-05) • Updated input 'crane': 'github:ipetkov/crane/7d74bfafea4cfbfa30128c053fc0a1ec7455da74' (2023-05-03) → 'github:ipetkov/crane/8708b19627b2dfc2d1ac332b74383b8abdd429f0' (2023-05-03) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15) → 'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11) • Added input 'crane/flake-utils/systems': 'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/7ec2ff598a172c6e8584457167575b3a1a5d80d8' (2023-04-03) → 'github:oxalica/rust-overlay/d59c3fa0cba8336e115b376c2d9e91053aa59e56' (2023-05-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/44f30edf5661d86fb3a95841c35127f3d0ea8b0f' (2023-05-02) → 'github:NixOS/nixpkgs/eb751d65225ec53de9cf3d88acbf08d275882389' (2023-05-07) --- flake.lock | 52 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index e70e19a9c5..cc3d25039c 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1682392122, - "narHash": "sha256-czFFXzZ88LP1cBAk9nNo6Y3tefxbW+Zg18co5yWlN9Y=", + "lastModified": 1683272394, + "narHash": "sha256-4XQZbSZ8XYAeASpr0Er8mNPnjbYLJwvaB+VyH+bt6DE=", "owner": "rustsec", "repo": "advisory-db", - "rev": "d72795ee51634b8c5bcf6b3bc98d08ec5888d191", + "rev": "50bed3ba4066e6255dab434dc845e7f655812ce1", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1683073415, - "narHash": "sha256-QCdNRAhO7tIgltMgisMKpnY5bpdGtIG1R6xA4wHcXyg=", + "lastModified": 1683134812, + "narHash": "sha256-yUiArtneEBCTYt7rOg/tLr1iv4AmjFu5tdGa0OVpjbo=", "owner": "ipetkov", "repo": "crane", - "rev": "7d74bfafea4cfbfa30128c053fc0a1ec7455da74", + "rev": "8708b19627b2dfc2d1ac332b74383b8abdd429f0", "type": "github" }, "original": { @@ -56,12 +56,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "owner": "numtide", "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", "type": "github" }, "original": { @@ -72,7 +75,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1681202837, @@ -90,7 +93,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1681202837, @@ -123,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1683020768, - "narHash": "sha256-ZyZl6k9NWS5QPwD3NoAVz/eSgodQDvl+y+fu8MVbrHc=", + "lastModified": 1683442750, + "narHash": "sha256-IiJ0WWW6OcCrVFl1ijE+gTaP0ChFfV6dNkJR05yStmw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44f30edf5661d86fb3a95841c35127f3d0ea8b0f", + "rev": "eb751d65225ec53de9cf3d88acbf08d275882389", "type": "github" }, "original": { @@ -159,11 +162,11 @@ ] }, "locked": { - "lastModified": 1680488274, - "narHash": "sha256-0vYMrZDdokVmPQQXtFpnqA2wEgCCUXf5a3dDuDVshn0=", + "lastModified": 1683080331, + "narHash": "sha256-nGDvJ1DAxZIwdn6ww8IFwzoHb2rqBP4wv/65Wt5vflk=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "7ec2ff598a172c6e8584457167575b3a1a5d80d8", + "rev": "d59c3fa0cba8336e115b376c2d9e91053aa59e56", "type": "github" }, "original": { @@ -222,6 +225,21 @@ "repo": "default", "type": "github" } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", From 88126e263b2dc44e3098a23629ff06e6a6175770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 8 May 2023 19:04:04 +0200 Subject: [PATCH 016/154] chore: bumbed version to 0.1.1 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cbf6427786..8d360269c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -636,7 +636,7 @@ dependencies = [ [[package]] name = "unblob-native" -version = "0.1.0" +version = "0.1.1" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index 211b6a0825..0390c5828a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.0" +version = "0.1.1" edition = "2021" license = "MIT" From c18644f7764ab5849c7d83b69f2e187f8736c08a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 May 2023 00:21:44 +0000 Subject: [PATCH 017/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/8708b19627b2dfc2d1ac332b74383b8abdd429f0' (2023-05-03) → 'github:ipetkov/crane/7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c' (2023-05-08) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/eb751d65225ec53de9cf3d88acbf08d275882389' (2023-05-07) → 'github:NixOS/nixpkgs/635a306fc8ede2e34cb3dd0d6d0a5d49362150ed' (2023-05-11) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/75b07756c3feb22cf230e75fb064c1b4c725b9bc' (2023-05-08) → 'github:oxalica/rust-overlay/7ec9793168e4c328f08d10ab7ef4a1ada2dbf93e' (2023-05-13) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index cc3d25039c..bfe618878e 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1683134812, - "narHash": "sha256-yUiArtneEBCTYt7rOg/tLr1iv4AmjFu5tdGa0OVpjbo=", + "lastModified": 1683505101, + "narHash": "sha256-VBU64Jfu2V4sUR5+tuQS9erBRAe/QEYUxdVMcJGMZZs=", "owner": "ipetkov", "repo": "crane", - "rev": "8708b19627b2dfc2d1ac332b74383b8abdd429f0", + "rev": "7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1683442750, - "narHash": "sha256-IiJ0WWW6OcCrVFl1ijE+gTaP0ChFfV6dNkJR05yStmw=", + "lastModified": 1683777345, + "narHash": "sha256-V2p/A4RpEGqEZussOnHYMU6XglxBJGCODdzoyvcwig8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eb751d65225ec53de9cf3d88acbf08d275882389", + "rev": "635a306fc8ede2e34cb3dd0d6d0a5d49362150ed", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1683512408, - "narHash": "sha256-QMJGp/37En+d5YocJuSU89GL14bBYkIJQ6mqhRfqkkc=", + "lastModified": 1683944292, + "narHash": "sha256-ks2N8FtrUvePO5X2fN9WoelgMVwDa1jUA7XEyC9S+7g=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "75b07756c3feb22cf230e75fb064c1b4c725b9bc", + "rev": "7ec9793168e4c328f08d10ab7ef4a1ada2dbf93e", "type": "github" }, "original": { From 0fd427dc433875d6a4f68415efdc30d4ef24c941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 14 May 2023 23:37:19 +0200 Subject: [PATCH 018/154] fix(ci): cargo registry update on aarch64 is flaky when using libgit https://stackoverflow.com/questions/73738004/how-can-i-fix-unable-to-update-registry-network-failure-seems-to-have-happened --- .github/workflows/CI.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 12ca8db552..d9baffd751 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -142,6 +142,7 @@ jobs: args: --release --out dist sccache: "true" manylinux: auto + docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true - name: Upload wheels uses: actions/upload-artifact@v3 with: From 541b6f2e67b07830c3fc0dfc8c633ae7aa5cd362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 14 May 2023 23:18:32 +0200 Subject: [PATCH 019/154] chore: updating pdm action --- .github/workflows/CI.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d9baffd751..3b6be610bb 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -69,7 +69,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up PDM - uses: pdm-project/setup-pdm@v2 + uses: pdm-project/setup-pdm@v3 with: python-version: ${{ matrix.python-version }} enable-pep582: false @@ -77,8 +77,6 @@ jobs: cache-dependency-path: | ./pdm.lock ./Cargo.lock - - name: Work around requests bug https://github.com/psf/requests/issues/6437 - run: pip install --force requests==2.29.0 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install dependencies run: | @@ -92,7 +90,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up PDM - uses: pdm-project/setup-pdm@v2 + uses: pdm-project/setup-pdm@v3 with: python-version: "3.8" enable-pep582: false From 4fd1bd22f38e53f0f83912bd272d84f73da9c3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 14 May 2023 23:17:10 +0200 Subject: [PATCH 020/154] chore: test built wheels pdm by default installs all dependency group. Selecting a subset is opt-in --- .github/workflows/CI.yml | 20 ++++++++++++++++++++ pdm.lock | 4 ++-- pyproject.toml | 5 ++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3b6be610bb..840387e4e9 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -146,6 +146,17 @@ jobs: with: name: wheels path: dist + - name: Test wheels + run: | + cat << EOF | docker run -v $PWD:/usr/src -i ${{ matrix.container }} sh -ex - + cd /usr/src + curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3.10 - + export PATH=/root/.local/bin:$PATH + pdm sync -d --no-self -G test + pdm run python -m ensurepip + pdm run python -m pip install dist/*.whl + pdm pytest + EOF wheel-macos: runs-on: macos-latest @@ -169,6 +180,15 @@ jobs: with: name: wheels path: dist + - uses: pdm-project/setup-pdm@v3 + name: Setup PDM + - name: Test wheels + if: ${{ matrix.target == 'x86_64' }} + run: | + pdm sync -d --no-self -G test + pdm run python -m ensurepip + pdm run python -m pip install dist/*.whl + pdm pytest sdist: runs-on: ubuntu-latest diff --git a/pdm.lock b/pdm.lock index da1b1e4223..ff4f6ffb6d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -198,8 +198,8 @@ dependencies = [ [metadata] lock_version = "4.2" -groups = ["default", "dev"] -content_hash = "sha256:148e3bd0b8d600ad040b57e5c17907da1d0c35c1962213a73bd0bd01246e9550" +groups = ["default", "dev", "test"] +content_hash = "sha256:89f0d91473a6f96a2f787599046c913a9b1f7a9b0b57800d59610c80d211ddbe" [metadata.files] "atomicwrites 1.4.1" = [ diff --git a/pyproject.toml b/pyproject.toml index 1ac978b39c..f44195994a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,10 +28,13 @@ dev = [ "black ~= 23.3.0", "pre-commit ~= 2.20", "pyright == 1.1.306", - "pytest ~= 7.0.0", "ruff ~= 0.0.264", ] +test = [ + "pytest ~= 7.0.0", +] + [build-system] requires = ["maturin>=0.14,<0.15"] build-backend = "maturin" From 5df7e6419f2e3fbf5d3c4e28cc753dc083379fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 14 May 2023 23:16:43 +0200 Subject: [PATCH 021/154] feat: adding musllinux_1_1 platform (Alpine Linux) support --- .github/workflows/CI.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 840387e4e9..9cc7a94500 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -120,8 +120,17 @@ jobs: matrix: include: - target: x86_64 + platform: manylinux2014 - target: aarch64 + platform: manylinux2014 cross: true + - target: x86_64 + platform: musllinux_1_1 + - target: aarch64 + platform: musllinux_1_1 + cross: true + env: + CONTAINER: quay.io/pypa/${{ matrix.platform }}_${{ matrix.target }}:latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 @@ -136,9 +145,9 @@ jobs: uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} - container: quay.io/pypa/manylinux2014_${{ matrix.target }}:latest + container: ${{ env.CONTAINER }} args: --release --out dist - sccache: "true" + sccache: ${{ matrix.target == 'musllinux_1_1' }} manylinux: auto docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true - name: Upload wheels @@ -148,7 +157,7 @@ jobs: path: dist - name: Test wheels run: | - cat << EOF | docker run -v $PWD:/usr/src -i ${{ matrix.container }} sh -ex - + cat << EOF | docker run -v $PWD:/usr/src -i $CONTAINER sh -ex - cd /usr/src curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3.10 - export PATH=/root/.local/bin:$PATH From 07ff360b5e03110377f5dc402a337a5faad54a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 15 May 2023 00:16:45 +0200 Subject: [PATCH 022/154] chore: moving python package to a subdirectory It is needed to prevent import errors as the repo root sometimes gets into the PYTHONPATH, e.g. when python interactive is used. In that case the native extension may not be loadable. See also https://github.com/PyO3/maturin/issues/490 --- flake.nix | 2 +- pyproject.toml | 6 +++++- {unblob_native => python/unblob_native}/__init__.py | 0 .../unblob_native}/_native/__init__.pyi | 0 .../unblob_native}/_native/math_tools.pyi | 0 {unblob_native => python/unblob_native}/py.typed | 0 6 files changed, 6 insertions(+), 2 deletions(-) rename {unblob_native => python/unblob_native}/__init__.py (100%) rename {unblob_native => python/unblob_native}/_native/__init__.pyi (100%) rename {unblob_native => python/unblob_native}/_native/math_tools.pyi (100%) rename {unblob_native => python/unblob_native}/py.typed (100%) diff --git a/flake.nix b/flake.nix index a475f95f64..b3b10c055a 100644 --- a/flake.nix +++ b/flake.nix @@ -91,7 +91,7 @@ "Cargo.toml" "Cargo.lock" "pyproject.toml" - "unblob_native" + "python" "benches" "src" "README.md" diff --git a/pyproject.toml b/pyproject.toml index f44195994a..83b4ee7742 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ build-backend = "maturin" [tool.maturin] module-name = "unblob_native._native" +python-source = "python" features = [ "pyo3/extension-module", # This is an extension module @@ -92,7 +93,7 @@ ignore = [ ] [tool.ruff.per-file-ignores] -"unblob_native/__init__.py" = [ +"python/unblob_native/__init__.py" = [ "F403", "A001", "F405", @@ -103,6 +104,9 @@ ignore = [ "S101", # assert: Enable usage of asserts ] +[tool.ruff.isort] +known-first-party = ["unblob_native"] + [tool.ruff.flake8-pytest-style] fixture-parentheses = false mark-parentheses = false diff --git a/unblob_native/__init__.py b/python/unblob_native/__init__.py similarity index 100% rename from unblob_native/__init__.py rename to python/unblob_native/__init__.py diff --git a/unblob_native/_native/__init__.pyi b/python/unblob_native/_native/__init__.pyi similarity index 100% rename from unblob_native/_native/__init__.pyi rename to python/unblob_native/_native/__init__.pyi diff --git a/unblob_native/_native/math_tools.pyi b/python/unblob_native/_native/math_tools.pyi similarity index 100% rename from unblob_native/_native/math_tools.pyi rename to python/unblob_native/_native/math_tools.pyi diff --git a/unblob_native/py.typed b/python/unblob_native/py.typed similarity index 100% rename from unblob_native/py.typed rename to python/unblob_native/py.typed From c4ab750592a93fdca7384fcfd45a799e617d934c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Mon, 15 May 2023 00:25:59 +0200 Subject: [PATCH 023/154] chore(ci): improve rust caching --- .github/workflows/CI.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9cc7a94500..4e28ecc265 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -78,6 +78,12 @@ jobs: ./pdm.lock ./Cargo.lock - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + cache: false + - name: Cache rust + uses: Swatinem/rust-cache@v2 + with: + key: pytest-${{ matrix.os }} - name: Install dependencies run: | pdm sync -d @@ -136,6 +142,10 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" + - name: Cache rust + uses: Swatinem/rust-cache@v2 + with: + key: wheel-linux-${{ matrix.target }}-${{ matrix.platform }} - name: setup emulation if: ${{ matrix.cross }} run: | @@ -178,6 +188,10 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" + - name: Cache rust + uses: Swatinem/rust-cache@v2 + with: + key: wheel-macos-${{ matrix.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: From d95e16d0dfcde37ed3f2fc4d2b6a3a424ae01349 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 May 2023 00:22:07 +0000 Subject: [PATCH 024/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/50bed3ba4066e6255dab434dc845e7f655812ce1' (2023-05-05) → 'github:rustsec/advisory-db/e162556b9e8c1542c187290453cbd322e8905f0c' (2023-05-23) • Updated input 'crane': 'github:ipetkov/crane/7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c' (2023-05-08) → 'github:ipetkov/crane/35110cccf28823320f4fd697fcafcb5038683982' (2023-05-25) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/635a306fc8ede2e34cb3dd0d6d0a5d49362150ed' (2023-05-11) → 'github:NixOS/nixpkgs/aeb75dba965e790de427b73315d5addf91a54955' (2023-05-25) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/7ec9793168e4c328f08d10ab7ef4a1ada2dbf93e' (2023-05-13) → 'github:oxalica/rust-overlay/7d196a0e3829f1a150c07a447ed7d2f0b60568bd' (2023-05-27) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index bfe618878e..4815c9bfaf 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1683272394, - "narHash": "sha256-4XQZbSZ8XYAeASpr0Er8mNPnjbYLJwvaB+VyH+bt6DE=", + "lastModified": 1684873045, + "narHash": "sha256-MVXbXNXcqiaeJZbwVw6R16xqxJkpm+ipAIljz4/9QaM=", "owner": "rustsec", "repo": "advisory-db", - "rev": "50bed3ba4066e6255dab434dc845e7f655812ce1", + "rev": "e162556b9e8c1542c187290453cbd322e8905f0c", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1683505101, - "narHash": "sha256-VBU64Jfu2V4sUR5+tuQS9erBRAe/QEYUxdVMcJGMZZs=", + "lastModified": 1684981077, + "narHash": "sha256-68X9cFm0RTZm8u0rXPbeBzOVUH5OoUGAfeHHVoxGd9o=", "owner": "ipetkov", "repo": "crane", - "rev": "7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c", + "rev": "35110cccf28823320f4fd697fcafcb5038683982", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1683777345, - "narHash": "sha256-V2p/A4RpEGqEZussOnHYMU6XglxBJGCODdzoyvcwig8=", + "lastModified": 1685012353, + "narHash": "sha256-U3oOge4cHnav8OLGdRVhL45xoRj4Ppd+It6nPC9nNIU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "635a306fc8ede2e34cb3dd0d6d0a5d49362150ed", + "rev": "aeb75dba965e790de427b73315d5addf91a54955", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1683944292, - "narHash": "sha256-ks2N8FtrUvePO5X2fN9WoelgMVwDa1jUA7XEyC9S+7g=", + "lastModified": 1685154050, + "narHash": "sha256-DX+NZk8i0oXB8iOMIIqlsh6b0M9lJI9fGsZvMRUiuGM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "7ec9793168e4c328f08d10ab7ef4a1ada2dbf93e", + "rev": "7d196a0e3829f1a150c07a447ed7d2f0b60568bd", "type": "github" }, "original": { From f4e5f8b7fb344424d35a342dad0fb62496c3a392 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 4 Jun 2023 00:25:17 +0000 Subject: [PATCH 025/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/e162556b9e8c1542c187290453cbd322e8905f0c' (2023-05-23) → 'github:rustsec/advisory-db/af3f3d503f82056785841bee49997bae65eba1c0' (2023-06-03) • Updated input 'flake-utils': 'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11) → 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/aeb75dba965e790de427b73315d5addf91a54955' (2023-05-25) → 'github:NixOS/nixpkgs/c6ffce3d5df7b4c588ce80a0c6e2d2348a611707' (2023-06-02) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/7d196a0e3829f1a150c07a447ed7d2f0b60568bd' (2023-05-27) → 'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 4815c9bfaf..5ea36173f7 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1684873045, - "narHash": "sha256-MVXbXNXcqiaeJZbwVw6R16xqxJkpm+ipAIljz4/9QaM=", + "lastModified": 1685821301, + "narHash": "sha256-4XRcnSboLJw1XKjDpg2jBU70jEw/8Bgx4nUmnq3kXbY=", "owner": "rustsec", "repo": "advisory-db", - "rev": "e162556b9e8c1542c187290453cbd322e8905f0c", + "rev": "af3f3d503f82056785841bee49997bae65eba1c0", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1685012353, - "narHash": "sha256-U3oOge4cHnav8OLGdRVhL45xoRj4Ppd+It6nPC9nNIU=", + "lastModified": 1685714850, + "narHash": "sha256-OcvbIJq4CGwwFr9m7M/SQcDPZ64hhR4t77oZgEeh7ZY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aeb75dba965e790de427b73315d5addf91a54955", + "rev": "c6ffce3d5df7b4c588ce80a0c6e2d2348a611707", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1685154050, - "narHash": "sha256-DX+NZk8i0oXB8iOMIIqlsh6b0M9lJI9fGsZvMRUiuGM=", + "lastModified": 1685759304, + "narHash": "sha256-I3YBH6MS3G5kGzNuc1G0f9uYfTcNY9NYoRc3QsykLk4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "7d196a0e3829f1a150c07a447ed7d2f0b60568bd", + "rev": "c535b4f3327910c96dcf21851bbdd074d0760290", "type": "github" }, "original": { From b10f17a05e41322d30ea5b6320e36b9dcd5cb0d5 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Tue, 20 Jun 2023 13:52:53 +0200 Subject: [PATCH 026/154] chore(ci): fix intermittent build errors on macos The error message is complaning about: > Could not set environment: 150: Operation not permitted while System Integrity Protection is engaged --- .github/workflows/CI.yml | 4 ++-- .github/workflows/Update.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4e28ecc265..dfa88a68a7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v20 + - uses: cachix/install-nix-action@v22 - uses: cachix/cachix-action@v12 with: name: unblob @@ -44,7 +44,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v20 + - uses: cachix/install-nix-action@v22 - uses: cachix/cachix-action@v12 with: name: unblob diff --git a/.github/workflows/Update.yml b/.github/workflows/Update.yml index b7509eaf9c..f3746eaeee 100644 --- a/.github/workflows/Update.yml +++ b/.github/workflows/Update.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v20 + - uses: cachix/install-nix-action@v22 with: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} From 5c367313cbd98af95dbaa635420a3e7fb28693b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 25 Jun 2023 00:27:21 +0000 Subject: [PATCH 027/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/af3f3d503f82056785841bee49997bae65eba1c0' (2023-06-03) → 'github:rustsec/advisory-db/9cf72357c8c52629d22edd8b4b8d7f7cdeea2504' (2023-06-22) • Updated input 'crane': 'github:ipetkov/crane/35110cccf28823320f4fd697fcafcb5038683982' (2023-05-25) → 'github:ipetkov/crane/116b32c30b5ff28e49f4fcbeeb1bbe3544593204' (2023-06-21) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/cfacdce06f30d2b68473a46042957675eebb3401' (2023-04-11) → 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/d59c3fa0cba8336e115b376c2d9e91053aa59e56' (2023-05-03) → 'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03) • Updated input 'flake-utils': 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31) → 'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19) • Updated input 'nix-filter': 'github:numtide/nix-filter/f529f42792ade8e32c4be274af6b6d60857fbee7' (2023-04-10) → 'github:numtide/nix-filter/d90c75e8319d0dd9be67d933d8eb9d0894ec9174' (2023-06-19) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/c6ffce3d5df7b4c588ce80a0c6e2d2348a611707' (2023-06-02) → 'github:NixOS/nixpkgs/3d8a93602bc54ece7a4e689d9aea1a574e2bbc24' (2023-06-23) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03) → 'github:oxalica/rust-overlay/ec002586144fe0f48039dced270c188f0b8213ab' (2023-06-24) --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 5ea36173f7..cecade89e3 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1685821301, - "narHash": "sha256-4XRcnSboLJw1XKjDpg2jBU70jEw/8Bgx4nUmnq3kXbY=", + "lastModified": 1687448588, + "narHash": "sha256-xgzcyeo7xVYaYL99Jg1mkySkfQmWR089WUPSuarLYy0=", "owner": "rustsec", "repo": "advisory-db", - "rev": "af3f3d503f82056785841bee49997bae65eba1c0", + "rev": "9cf72357c8c52629d22edd8b4b8d7f7cdeea2504", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1684981077, - "narHash": "sha256-68X9cFm0RTZm8u0rXPbeBzOVUH5OoUGAfeHHVoxGd9o=", + "lastModified": 1687310026, + "narHash": "sha256-20RHFbrnC+hsG4Hyeg/58LvQAK7JWfFItTPFAFamu8E=", "owner": "ipetkov", "repo": "crane", - "rev": "35110cccf28823320f4fd697fcafcb5038683982", + "rev": "116b32c30b5ff28e49f4fcbeeb1bbe3544593204", "type": "github" }, "original": { @@ -60,11 +60,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1687171271, + "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", "type": "github" }, "original": { @@ -111,11 +111,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1681154353, - "narHash": "sha256-MCJ5FHOlbfQRFwN0brqPbCunLEVw05D/3sRVoNVt2tI=", + "lastModified": 1687178632, + "narHash": "sha256-HS7YR5erss0JCaUijPeyg2XrisEb959FIct3n2TMGbE=", "owner": "numtide", "repo": "nix-filter", - "rev": "f529f42792ade8e32c4be274af6b6d60857fbee7", + "rev": "d90c75e8319d0dd9be67d933d8eb9d0894ec9174", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1685714850, - "narHash": "sha256-OcvbIJq4CGwwFr9m7M/SQcDPZ64hhR4t77oZgEeh7ZY=", + "lastModified": 1687518131, + "narHash": "sha256-KirltRIc4SFfk8bTNudIqgKAALH5oqpW3PefmkfWK5M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c6ffce3d5df7b4c588ce80a0c6e2d2348a611707", + "rev": "3d8a93602bc54ece7a4e689d9aea1a574e2bbc24", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1683080331, - "narHash": "sha256-nGDvJ1DAxZIwdn6ww8IFwzoHb2rqBP4wv/65Wt5vflk=", + "lastModified": 1685759304, + "narHash": "sha256-I3YBH6MS3G5kGzNuc1G0f9uYfTcNY9NYoRc3QsykLk4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d59c3fa0cba8336e115b376c2d9e91053aa59e56", + "rev": "c535b4f3327910c96dcf21851bbdd074d0760290", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1685759304, - "narHash": "sha256-I3YBH6MS3G5kGzNuc1G0f9uYfTcNY9NYoRc3QsykLk4=", + "lastModified": 1687573996, + "narHash": "sha256-F7pDERmi8MomkMhcUW88IW6RRrxAk7QO2PXs+LMpxpI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c535b4f3327910c96dcf21851bbdd074d0760290", + "rev": "ec002586144fe0f48039dced270c188f0b8213ab", "type": "github" }, "original": { From 5ad72aa32f05c19dc98b7026fecf556a0ff89399 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Jul 2023 00:26:29 +0000 Subject: [PATCH 028/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/9cf72357c8c52629d22edd8b4b8d7f7cdeea2504' (2023-06-22) → 'github:rustsec/advisory-db/1f538e6f3b8ad37e89b1386e06be080fbe474b3c' (2023-06-29) • Updated input 'crane': 'github:ipetkov/crane/116b32c30b5ff28e49f4fcbeeb1bbe3544593204' (2023-06-21) → 'github:ipetkov/crane/4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8' (2023-06-29) • Updated input 'flake-utils': 'github:numtide/flake-utils/abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c' (2023-06-19) → 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/3d8a93602bc54ece7a4e689d9aea1a574e2bbc24' (2023-06-23) → 'github:NixOS/nixpkgs/8277b539d371bf4308fc5097911aa58bfac1794f' (2023-07-01) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/ec002586144fe0f48039dced270c188f0b8213ab' (2023-06-24) → 'github:oxalica/rust-overlay/ef95001485c25edb43ea236bdb03640b9073abef' (2023-07-01) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index cecade89e3..2b648a9d62 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1687448588, - "narHash": "sha256-xgzcyeo7xVYaYL99Jg1mkySkfQmWR089WUPSuarLYy0=", + "lastModified": 1688041319, + "narHash": "sha256-J4lJWSRTOvXDS/Tckj+/5RvAnPCK+qQUMNZhsojR1SM=", "owner": "rustsec", "repo": "advisory-db", - "rev": "9cf72357c8c52629d22edd8b4b8d7f7cdeea2504", + "rev": "1f538e6f3b8ad37e89b1386e06be080fbe474b3c", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1687310026, - "narHash": "sha256-20RHFbrnC+hsG4Hyeg/58LvQAK7JWfFItTPFAFamu8E=", + "lastModified": 1688082682, + "narHash": "sha256-nMG/A7qYm9pyHJowKuaNmNYgo748xZrzMJPqtoGozSA=", "owner": "ipetkov", "repo": "crane", - "rev": "116b32c30b5ff28e49f4fcbeeb1bbe3544593204", + "rev": "4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1687171271, - "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", + "lastModified": 1687709756, + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", "owner": "numtide", "repo": "flake-utils", - "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1687518131, - "narHash": "sha256-KirltRIc4SFfk8bTNudIqgKAALH5oqpW3PefmkfWK5M=", + "lastModified": 1688188316, + "narHash": "sha256-CXuQllDKCxtZaB/umnZOvoJ/d4kJguYgffeTA9l1B3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3d8a93602bc54ece7a4e689d9aea1a574e2bbc24", + "rev": "8277b539d371bf4308fc5097911aa58bfac1794f", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1687573996, - "narHash": "sha256-F7pDERmi8MomkMhcUW88IW6RRrxAk7QO2PXs+LMpxpI=", + "lastModified": 1688178944, + "narHash": "sha256-4fef6jlv73WW6FLXssEa88WaTVEU268ipI6fatg9vRE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ec002586144fe0f48039dced270c188f0b8213ab", + "rev": "ef95001485c25edb43ea236bdb03640b9073abef", "type": "github" }, "original": { From af157d43000383ae0fe9cacb0ac77029c33aa648 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 9 Jul 2023 00:29:39 +0000 Subject: [PATCH 029/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/1f538e6f3b8ad37e89b1386e06be080fbe474b3c' (2023-06-29) → 'github:rustsec/advisory-db/5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8' (2023-07-08) • Updated input 'crane': 'github:ipetkov/crane/4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8' (2023-06-29) → 'github:ipetkov/crane/8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e' (2023-07-07) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31) → 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/c535b4f3327910c96dcf21851bbdd074d0760290' (2023-06-03) → 'github:oxalica/rust-overlay/f9b92316727af9e6c7fee4a761242f7f46880329' (2023-07-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/8277b539d371bf4308fc5097911aa58bfac1794f' (2023-07-01) → 'github:NixOS/nixpkgs/ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b' (2023-07-08) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/ef95001485c25edb43ea236bdb03640b9073abef' (2023-07-01) → 'github:oxalica/rust-overlay/7a29283cc242c2486fc67f60b431ef708046d176' (2023-07-08) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 2b648a9d62..ec6167c9ba 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1688041319, - "narHash": "sha256-J4lJWSRTOvXDS/Tckj+/5RvAnPCK+qQUMNZhsojR1SM=", + "lastModified": 1688825073, + "narHash": "sha256-fK2huTDGHJc/oZjZWhMZMAt1nQSuuY6p41Y2pudtJdM=", "owner": "rustsec", "repo": "advisory-db", - "rev": "1f538e6f3b8ad37e89b1386e06be080fbe474b3c", + "rev": "5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1688082682, - "narHash": "sha256-nMG/A7qYm9pyHJowKuaNmNYgo748xZrzMJPqtoGozSA=", + "lastModified": 1688772518, + "narHash": "sha256-ol7gZxwvgLnxNSZwFTDJJ49xVY5teaSvF7lzlo3YQfM=", "owner": "ipetkov", "repo": "crane", - "rev": "4d350bb94fdf8ec9d2e22d68bb13e136d73aa9d8", + "rev": "8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e", "type": "github" }, "original": { @@ -60,11 +60,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1687709756, + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688188316, - "narHash": "sha256-CXuQllDKCxtZaB/umnZOvoJ/d4kJguYgffeTA9l1B3o=", + "lastModified": 1688829822, + "narHash": "sha256-hv56yK1fPHPt7SU2DboxBtdSbIuv9nym7Dss7Cn2jic=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8277b539d371bf4308fc5097911aa58bfac1794f", + "rev": "ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1685759304, - "narHash": "sha256-I3YBH6MS3G5kGzNuc1G0f9uYfTcNY9NYoRc3QsykLk4=", + "lastModified": 1688351637, + "narHash": "sha256-CLTufJ29VxNOIZ8UTg0lepsn3X03AmopmaLTTeHDCL4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c535b4f3327910c96dcf21851bbdd074d0760290", + "rev": "f9b92316727af9e6c7fee4a761242f7f46880329", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1688178944, - "narHash": "sha256-4fef6jlv73WW6FLXssEa88WaTVEU268ipI6fatg9vRE=", + "lastModified": 1688783586, + "narHash": "sha256-HHaM2hk2azslv1kH8zmQxXo2e7i5cKgzNIuK4yftzB0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ef95001485c25edb43ea236bdb03640b9073abef", + "rev": "7a29283cc242c2486fc67f60b431ef708046d176", "type": "github" }, "original": { From 735c5edd948f20062fa52aeb30bc281a9f419fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:25:22 +0200 Subject: [PATCH 030/154] chore: cargo update --- Cargo.lock | 237 ++++++++++++++++++++++++++++------------------------- 1 file changed, 127 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8d360269c9..2035b28674 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + [[package]] name = "approx" version = "0.5.1" @@ -36,9 +45,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bumpalo" -version = "3.12.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "cast" @@ -122,31 +131,31 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", + "memoffset 0.9.0", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] [[package]] name = "csv" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ "csv-core", "itoa", @@ -171,9 +180,9 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -197,12 +206,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "indoc" @@ -221,15 +227,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -242,15 +248,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.142" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -258,12 +264,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "memchr" @@ -280,6 +283,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + [[package]] name = "num-traits" version = "0.2.15" @@ -291,19 +303,19 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -323,22 +335,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-targets", ] [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -349,15 +361,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] @@ -370,9 +382,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" dependencies = [ "unicode-ident", ] @@ -386,7 +398,7 @@ dependencies = [ "cfg-if", "indoc", "libc", - "memoffset", + "memoffset 0.8.0", "parking_lot", "pyo3-build-config", "pyo3-ffi", @@ -439,9 +451,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" dependencies = [ "proc-macro2", ] @@ -500,33 +512,47 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf" +dependencies = [ + "aho-corasick", + "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" [[package]] name = "same-file" @@ -545,9 +571,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" [[package]] name = "serde_cbor" @@ -561,20 +587,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.25", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", @@ -583,9 +609,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "syn" @@ -600,9 +626,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" dependencies = [ "proc-macro2", "quote", @@ -611,9 +637,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" +checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" [[package]] name = "textwrap" @@ -646,9 +672,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" [[package]] name = "unicode-width" @@ -680,9 +706,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -690,24 +716,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.25", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -715,28 +741,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.25", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -773,20 +799,11 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-targets" -version = "0.42.2" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -799,42 +816,42 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" From c4fabb7fa898c4c1558ef93513542e90dec70c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:41:24 +0200 Subject: [PATCH 031/154] fix(nix): fix build with newer crane versions --- flake.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flake.nix b/flake.nix index b3b10c055a..18e82e4244 100644 --- a/flake.nix +++ b/flake.nix @@ -44,6 +44,11 @@ commonArgs = { inherit src; + # python package build will recompile PyO3 when built with maturin + # as there are different build features are used for the extension module + # and the standalone dylib which is used for tests and benchmarks + doNotLinkInheritedArtifacts = true; + buildInputs = [ # Add additional build inputs here pkgs.python3 From 3e4b09ce81b85a1c06d17da8b6019e0a308829e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 23 Jul 2023 11:37:13 +0000 Subject: [PATCH 032/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8' (2023-07-08) → 'github:rustsec/advisory-db/4aa517564d1d06f0e79784c8ad973a59d68aa9c8' (2023-07-18) • Updated input 'flake-utils': 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25) → 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b' (2023-07-08) → 'github:NixOS/nixpkgs/af8cd5ded7735ca1df1a1174864daab75feeb64a' (2023-07-23) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/7a29283cc242c2486fc67f60b431ef708046d176' (2023-07-08) → 'github:oxalica/rust-overlay/c707d9606ff9acea7f9508f5ad8218e36a96b126' (2023-07-23) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index ec6167c9ba..1a61b31b9d 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1688825073, - "narHash": "sha256-fK2huTDGHJc/oZjZWhMZMAt1nQSuuY6p41Y2pudtJdM=", + "lastModified": 1689698236, + "narHash": "sha256-Qz9JxGKeA3jwuj1CdK9ejMJ7VsJRdiZniF8lx4mft9s=", "owner": "rustsec", "repo": "advisory-db", - "rev": "5ceeefcbbabf4b510ef8ede121d6dc57d1a1f7f8", + "rev": "4aa517564d1d06f0e79784c8ad973a59d68aa9c8", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1687709756, - "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688829822, - "narHash": "sha256-hv56yK1fPHPt7SU2DboxBtdSbIuv9nym7Dss7Cn2jic=", + "lastModified": 1690083312, + "narHash": "sha256-I3egwgNXavad1eIjWu1kYyi0u73di/sMmlnQIuzQASk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ed6afb10dfdfc97b6bcf0703f1bad8118e9e961b", + "rev": "af8cd5ded7735ca1df1a1174864daab75feeb64a", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1688783586, - "narHash": "sha256-HHaM2hk2azslv1kH8zmQxXo2e7i5cKgzNIuK4yftzB0=", + "lastModified": 1690079014, + "narHash": "sha256-xLgQEfdb6LAzpwaLqNl1EIk1sl7jC85zVt0aVCVCv+o=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "7a29283cc242c2486fc67f60b431ef708046d176", + "rev": "c707d9606ff9acea7f9508f5ad8218e36a96b126", "type": "github" }, "original": { From 2b6137d4f04b0a57c91828032e81dacfd2597803 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 30 Jul 2023 00:23:15 +0000 Subject: [PATCH 033/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/4aa517564d1d06f0e79784c8ad973a59d68aa9c8' (2023-07-18) → 'github:rustsec/advisory-db/98e8483ac17d42eeeeee51d4d02ad8a690bd12c7' (2023-07-29) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/af8cd5ded7735ca1df1a1174864daab75feeb64a' (2023-07-23) → 'github:NixOS/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/c707d9606ff9acea7f9508f5ad8218e36a96b126' (2023-07-23) → 'github:oxalica/rust-overlay/5c06b0ed7bfb00f3a925af6c4acd1636596381c1' (2023-07-29) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 1a61b31b9d..e972984471 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1689698236, - "narHash": "sha256-Qz9JxGKeA3jwuj1CdK9ejMJ7VsJRdiZniF8lx4mft9s=", + "lastModified": 1690651200, + "narHash": "sha256-0aDZUueboXYxKy/ckHQYA6zkvLOVsb2wyzJjSuEdJzE=", "owner": "rustsec", "repo": "advisory-db", - "rev": "4aa517564d1d06f0e79784c8ad973a59d68aa9c8", + "rev": "98e8483ac17d42eeeeee51d4d02ad8a690bd12c7", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1690083312, - "narHash": "sha256-I3egwgNXavad1eIjWu1kYyi0u73di/sMmlnQIuzQASk=", + "lastModified": 1690630721, + "narHash": "sha256-Y04onHyBQT4Erfr2fc82dbJTfXGYrf4V0ysLUYnPOP8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "af8cd5ded7735ca1df1a1174864daab75feeb64a", + "rev": "d2b52322f35597c62abf56de91b0236746b2a03d", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1690079014, - "narHash": "sha256-xLgQEfdb6LAzpwaLqNl1EIk1sl7jC85zVt0aVCVCv+o=", + "lastModified": 1690596958, + "narHash": "sha256-SWqxUiEP9O2gvlWtR4Ku6rIMGM7PuNZreAPrU2yAjsk=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c707d9606ff9acea7f9508f5ad8218e36a96b126", + "rev": "5c06b0ed7bfb00f3a925af6c4acd1636596381c1", "type": "github" }, "original": { From 29af296e71c25cf59322220e43e65f95bd1f4699 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 6 Aug 2023 00:20:37 +0000 Subject: [PATCH 034/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e' (2023-07-07) → 'github:ipetkov/crane/1a551ae11bff91521cbeaebb8ca59a101c9f33f8' (2023-08-03) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7' (2023-06-25) → 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/f9b92316727af9e6c7fee4a761242f7f46880329' (2023-07-03) → 'github:oxalica/rust-overlay/99df4908445be37ddb2d332580365fce512a7dcf' (2023-08-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29) → 'github:NixOS/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/5c06b0ed7bfb00f3a925af6c4acd1636596381c1' (2023-07-29) → 'github:oxalica/rust-overlay/18ee2a71de24273e4ad4503b5604532f0b53f382' (2023-08-05) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index e972984471..ba8ce7c08b 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1688772518, - "narHash": "sha256-ol7gZxwvgLnxNSZwFTDJJ49xVY5teaSvF7lzlo3YQfM=", + "lastModified": 1691089569, + "narHash": "sha256-PYiaVen8kZKOl8Fd+IiChhRwR5oc9HwCqscvIArEEhU=", "owner": "ipetkov", "repo": "crane", - "rev": "8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e", + "rev": "1a551ae11bff91521cbeaebb8ca59a101c9f33f8", "type": "github" }, "original": { @@ -60,11 +60,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1687709756, - "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1690630721, - "narHash": "sha256-Y04onHyBQT4Erfr2fc82dbJTfXGYrf4V0ysLUYnPOP8=", + "lastModified": 1691218994, + "narHash": "sha256-46GJ5vLf9H+Oh7Jii2gJI9GATJHGbx2iQpon5nUSFPI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2b52322f35597c62abf56de91b0236746b2a03d", + "rev": "0d2fb29f5071a12d7983319c2c2576be6a130582", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1688351637, - "narHash": "sha256-CLTufJ29VxNOIZ8UTg0lepsn3X03AmopmaLTTeHDCL4=", + "lastModified": 1691029059, + "narHash": "sha256-QwVeE9YTgH3LmL7yw2V/hgswL6yorIvYSp4YGI8lZYM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f9b92316727af9e6c7fee4a761242f7f46880329", + "rev": "99df4908445be37ddb2d332580365fce512a7dcf", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1690596958, - "narHash": "sha256-SWqxUiEP9O2gvlWtR4Ku6rIMGM7PuNZreAPrU2yAjsk=", + "lastModified": 1691201768, + "narHash": "sha256-h+QJMpawZoK1+8efF6UjQoY1EHZfHteXVa5OYnlqRWA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "5c06b0ed7bfb00f3a925af6c4acd1636596381c1", + "rev": "18ee2a71de24273e4ad4503b5604532f0b53f382", "type": "github" }, "original": { From 178bb4e44034eeab0f18d4156e77e992aab00989 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 20 Aug 2023 00:19:36 +0000 Subject: [PATCH 035/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/98e8483ac17d42eeeeee51d4d02ad8a690bd12c7' (2023-07-29) → 'github:rustsec/advisory-db/ae12a8f93fb93d447f7b4ba3bb157c66568a5a05' (2023-08-19) • Updated input 'crane': 'github:ipetkov/crane/1a551ae11bff91521cbeaebb8ca59a101c9f33f8' (2023-08-03) → 'github:ipetkov/crane/7809d369710abb17767b624f9e72b500373580bc' (2023-08-12) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/99df4908445be37ddb2d332580365fce512a7dcf' (2023-08-03) → 'github:oxalica/rust-overlay/b520a3889b24aaf909e287d19d406862ced9ffc9' (2023-08-07) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05) → 'github:NixOS/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/18ee2a71de24273e4ad4503b5604532f0b53f382' (2023-08-05) → 'github:oxalica/rust-overlay/598b2f04ed252eb5808b108d7a10084c0c548753' (2023-08-19) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index ba8ce7c08b..fa59d61e95 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1690651200, - "narHash": "sha256-0aDZUueboXYxKy/ckHQYA6zkvLOVsb2wyzJjSuEdJzE=", + "lastModified": 1692440992, + "narHash": "sha256-La/c/AWVoEKcppyaxyZLNvWPVQuLrIiXtLaKAc4jVjk=", "owner": "rustsec", "repo": "advisory-db", - "rev": "98e8483ac17d42eeeeee51d4d02ad8a690bd12c7", + "rev": "ae12a8f93fb93d447f7b4ba3bb157c66568a5a05", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1691089569, - "narHash": "sha256-PYiaVen8kZKOl8Fd+IiChhRwR5oc9HwCqscvIArEEhU=", + "lastModified": 1691803597, + "narHash": "sha256-khWW1Owzselq5o816Lb7x624d6QGnv+kpronK3ndkr4=", "owner": "ipetkov", "repo": "crane", - "rev": "1a551ae11bff91521cbeaebb8ca59a101c9f33f8", + "rev": "7809d369710abb17767b624f9e72b500373580bc", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691218994, - "narHash": "sha256-46GJ5vLf9H+Oh7Jii2gJI9GATJHGbx2iQpon5nUSFPI=", + "lastModified": 1692463654, + "narHash": "sha256-F8hZmsQINI+S6UROM4jyxAMbQLtzE44pI8Nk6NtMdao=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d2fb29f5071a12d7983319c2c2576be6a130582", + "rev": "ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1691029059, - "narHash": "sha256-QwVeE9YTgH3LmL7yw2V/hgswL6yorIvYSp4YGI8lZYM=", + "lastModified": 1691374719, + "narHash": "sha256-HCodqnx1Mi2vN4f3hjRPc7+lSQy18vRn8xWW68GeQOg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "99df4908445be37ddb2d332580365fce512a7dcf", + "rev": "b520a3889b24aaf909e287d19d406862ced9ffc9", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1691201768, - "narHash": "sha256-h+QJMpawZoK1+8efF6UjQoY1EHZfHteXVa5OYnlqRWA=", + "lastModified": 1692410823, + "narHash": "sha256-YM1QCenpghNqgleUmoCJUArTuMEBqScyQuhepA6JZaI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "18ee2a71de24273e4ad4503b5604532f0b53f382", + "rev": "598b2f04ed252eb5808b108d7a10084c0c548753", "type": "github" }, "original": { From 9e1325302ef6a14b018b8efc04507d97270dcb5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 27 Aug 2023 00:19:53 +0000 Subject: [PATCH 036/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/ae12a8f93fb93d447f7b4ba3bb157c66568a5a05' (2023-08-19) → 'github:rustsec/advisory-db/d401af5af8e74d61872688d6228d067c553db2c9' (2023-08-25) • Updated input 'crane': 'github:ipetkov/crane/7809d369710abb17767b624f9e72b500373580bc' (2023-08-12) → 'github:ipetkov/crane/ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae' (2023-08-23) • Updated input 'flake-utils': 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11) → 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19) → 'github:NixOS/nixpkgs/c66ccfa00c643751da2fd9290e096ceaa30493fc' (2023-08-26) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/598b2f04ed252eb5808b108d7a10084c0c548753' (2023-08-19) → 'github:oxalica/rust-overlay/e90223633068a44f0fb62374e0fa360ccc987292' (2023-08-26) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index fa59d61e95..afd4e6129b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1692440992, - "narHash": "sha256-La/c/AWVoEKcppyaxyZLNvWPVQuLrIiXtLaKAc4jVjk=", + "lastModified": 1692985935, + "narHash": "sha256-hD7PPA9yBJntT5l4H+DGakOGzHaHLyxQhPztoFWbO1E=", "owner": "rustsec", "repo": "advisory-db", - "rev": "ae12a8f93fb93d447f7b4ba3bb157c66568a5a05", + "rev": "d401af5af8e74d61872688d6228d067c553db2c9", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1691803597, - "narHash": "sha256-khWW1Owzselq5o816Lb7x624d6QGnv+kpronK3ndkr4=", + "lastModified": 1692750383, + "narHash": "sha256-n5P5HOXuu23UB1h9PuayldnRRVQuXJLpoO+xqtMO3ws=", "owner": "ipetkov", "repo": "crane", - "rev": "7809d369710abb17767b624f9e72b500373580bc", + "rev": "ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1692463654, - "narHash": "sha256-F8hZmsQINI+S6UROM4jyxAMbQLtzE44pI8Nk6NtMdao=", + "lastModified": 1693060755, + "narHash": "sha256-KNsbfqewEziFJEpPR0qvVz4rx0x6QXxw1CcunRhlFdk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783", + "rev": "c66ccfa00c643751da2fd9290e096ceaa30493fc", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1692410823, - "narHash": "sha256-YM1QCenpghNqgleUmoCJUArTuMEBqScyQuhepA6JZaI=", + "lastModified": 1693015707, + "narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "598b2f04ed252eb5808b108d7a10084c0c548753", + "rev": "e90223633068a44f0fb62374e0fa360ccc987292", "type": "github" }, "original": { From a27746fb226204ec3709e8bb5d4dea9d5524e252 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Sep 2023 00:20:10 +0000 Subject: [PATCH 037/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/d401af5af8e74d61872688d6228d067c553db2c9' (2023-08-25) → 'github:rustsec/advisory-db/a6c90b9cd0246a19e9e073ad47bf5f5c6dcb9fc1' (2023-08-30) • Updated input 'crane': 'github:ipetkov/crane/ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae' (2023-08-23) → 'github:ipetkov/crane/80432e15452e55a72403da3bc91837508a4ccae3' (2023-09-01) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/c66ccfa00c643751da2fd9290e096ceaa30493fc' (2023-08-26) → 'github:NixOS/nixpkgs/bfb7dfec93f3b5d7274db109f2990bc889861caf' (2023-09-02) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/e90223633068a44f0fb62374e0fa360ccc987292' (2023-08-26) → 'github:oxalica/rust-overlay/cdf3b15af70f2db17d5f47822f12016f1a89bd73' (2023-09-02) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index afd4e6129b..41003bee88 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1692985935, - "narHash": "sha256-hD7PPA9yBJntT5l4H+DGakOGzHaHLyxQhPztoFWbO1E=", + "lastModified": 1693432889, + "narHash": "sha256-0daNvQDpL4R17vPG/ieybIblUYf6a2dbWr/mwc4pPUA=", "owner": "rustsec", "repo": "advisory-db", - "rev": "d401af5af8e74d61872688d6228d067c553db2c9", + "rev": "a6c90b9cd0246a19e9e073ad47bf5f5c6dcb9fc1", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1692750383, - "narHash": "sha256-n5P5HOXuu23UB1h9PuayldnRRVQuXJLpoO+xqtMO3ws=", + "lastModified": 1693608196, + "narHash": "sha256-qs1rDvXXjrKdobPvTdn9qKjV0/RE2uqCCTHD/c6AAo8=", "owner": "ipetkov", "repo": "crane", - "rev": "ef5d11e3c2e5b3924eb0309dba2e1fea2d9062ae", + "rev": "80432e15452e55a72403da3bc91837508a4ccae3", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1693060755, - "narHash": "sha256-KNsbfqewEziFJEpPR0qvVz4rx0x6QXxw1CcunRhlFdk=", + "lastModified": 1693626178, + "narHash": "sha256-Rpiy6lIOu4zny8tfGuIeN1ji9eSz9nPmm9yBhh/4IOM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c66ccfa00c643751da2fd9290e096ceaa30493fc", + "rev": "bfb7dfec93f3b5d7274db109f2990bc889861caf", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1693015707, - "narHash": "sha256-SFr93DYn502sVT9nB5U8/cKg1INyEk/jCeq8tHioz7Y=", + "lastModified": 1693620498, + "narHash": "sha256-GPhAI2YayaSs3WYeVVbGN3K4mvRTbui/ii7YGoABZBs=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "e90223633068a44f0fb62374e0fa360ccc987292", + "rev": "cdf3b15af70f2db17d5f47822f12016f1a89bd73", "type": "github" }, "original": { From 5aadaeeb02093f8116df14c34e8c8ad056b139c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 10 Sep 2023 00:20:15 +0000 Subject: [PATCH 038/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/a6c90b9cd0246a19e9e073ad47bf5f5c6dcb9fc1' (2023-08-30) → 'github:rustsec/advisory-db/0fcce3f7cbbc76da50ab0d778399bf85dc141834' (2023-09-08) • Updated input 'crane': 'github:ipetkov/crane/80432e15452e55a72403da3bc91837508a4ccae3' (2023-09-01) → 'github:ipetkov/crane/8b4f7a4dab2120cf41e7957a28a853f45016bd9d' (2023-09-04) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/919d646de7be200f3bf08cb76ae1f09402b6f9b4' (2023-07-11) → 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/b520a3889b24aaf909e287d19d406862ced9ffc9' (2023-08-07) → 'github:oxalica/rust-overlay/98ccb73e6eefc481da6039ee57ad8818d1ca8d56' (2023-09-03) • Updated input 'nix-filter': 'github:numtide/nix-filter/d90c75e8319d0dd9be67d933d8eb9d0894ec9174' (2023-06-19) → 'github:numtide/nix-filter/ac030bd9ba98e318e1f4c4328d60766ade8ebe8b' (2023-09-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/bfb7dfec93f3b5d7274db109f2990bc889861caf' (2023-09-02) → 'github:NixOS/nixpkgs/b200e0df08f80c32974a6108ce431d8a8a5e6547' (2023-09-07) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/cdf3b15af70f2db17d5f47822f12016f1a89bd73' (2023-09-02) → 'github:oxalica/rust-overlay/1b4fad9dccece45c25b9ebda607427d69a8f1eae' (2023-09-09) --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 41003bee88..3351154273 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1693432889, - "narHash": "sha256-0daNvQDpL4R17vPG/ieybIblUYf6a2dbWr/mwc4pPUA=", + "lastModified": 1694187037, + "narHash": "sha256-8RVTTvOmxg4H0W8wHbsAHIoi5NVg3svbk0xA32Dr9dY=", "owner": "rustsec", "repo": "advisory-db", - "rev": "a6c90b9cd0246a19e9e073ad47bf5f5c6dcb9fc1", + "rev": "0fcce3f7cbbc76da50ab0d778399bf85dc141834", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1693608196, - "narHash": "sha256-qs1rDvXXjrKdobPvTdn9qKjV0/RE2uqCCTHD/c6AAo8=", + "lastModified": 1693787605, + "narHash": "sha256-rwq5U8dy+a9JFny/73L0SJu1GfWwATMPMTp7D+mjHy8=", "owner": "ipetkov", "repo": "crane", - "rev": "80432e15452e55a72403da3bc91837508a4ccae3", + "rev": "8b4f7a4dab2120cf41e7957a28a853f45016bd9d", "type": "github" }, "original": { @@ -60,11 +60,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", "type": "github" }, "original": { @@ -111,11 +111,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1687178632, - "narHash": "sha256-HS7YR5erss0JCaUijPeyg2XrisEb959FIct3n2TMGbE=", + "lastModified": 1693833173, + "narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", "owner": "numtide", "repo": "nix-filter", - "rev": "d90c75e8319d0dd9be67d933d8eb9d0894ec9174", + "rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1693626178, - "narHash": "sha256-Rpiy6lIOu4zny8tfGuIeN1ji9eSz9nPmm9yBhh/4IOM=", + "lastModified": 1694062546, + "narHash": "sha256-PiGI4f2BGnZcedP6slLjCLGLRLXPa9+ogGGgVPfGxys=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfb7dfec93f3b5d7274db109f2990bc889861caf", + "rev": "b200e0df08f80c32974a6108ce431d8a8a5e6547", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1691374719, - "narHash": "sha256-HCodqnx1Mi2vN4f3hjRPc7+lSQy18vRn8xWW68GeQOg=", + "lastModified": 1693707092, + "narHash": "sha256-HR1EnynBSPqbt+04/yxxqsG1E3n6uXrOl7SPco/UnYo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b520a3889b24aaf909e287d19d406862ced9ffc9", + "rev": "98ccb73e6eefc481da6039ee57ad8818d1ca8d56", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1693620498, - "narHash": "sha256-GPhAI2YayaSs3WYeVVbGN3K4mvRTbui/ii7YGoABZBs=", + "lastModified": 1694225334, + "narHash": "sha256-f3uOfcfmG53biFl6zHPHSFrBucLGQp0LpRYQJlozZSA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "cdf3b15af70f2db17d5f47822f12016f1a89bd73", + "rev": "1b4fad9dccece45c25b9ebda607427d69a8f1eae", "type": "github" }, "original": { From cac5ade24d4a752a82a816245fc05e4a299eec64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 17 Sep 2023 00:20:25 +0000 Subject: [PATCH 039/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/0fcce3f7cbbc76da50ab0d778399bf85dc141834' (2023-09-08) → 'github:rustsec/advisory-db/12719bd23b88573977c7ad7fe818b05e8fbc33b3' (2023-09-13) • Updated input 'flake-utils': 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23) → 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12) • Updated input 'nix-filter': 'github:numtide/nix-filter/ac030bd9ba98e318e1f4c4328d60766ade8ebe8b' (2023-09-04) → 'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/b200e0df08f80c32974a6108ce431d8a8a5e6547' (2023-09-07) → 'github:NixOS/nixpkgs/46688f8eb5cd6f1298d873d4d2b9cf245e09e88e' (2023-09-15) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/1b4fad9dccece45c25b9ebda607427d69a8f1eae' (2023-09-09) → 'github:oxalica/rust-overlay/f84bb1621574473d05e6ed79ba57a371d8ad8259' (2023-09-16) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 3351154273..62798ca59b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1694187037, - "narHash": "sha256-8RVTTvOmxg4H0W8wHbsAHIoi5NVg3svbk0xA32Dr9dY=", + "lastModified": 1694620341, + "narHash": "sha256-5hV38PQ1roGn5oxWdmv7YRp684/9hypW/7nzcdLARZI=", "owner": "rustsec", "repo": "advisory-db", - "rev": "0fcce3f7cbbc76da50ab0d778399bf85dc141834", + "rev": "12719bd23b88573977c7ad7fe818b05e8fbc33b3", "type": "github" }, "original": { @@ -78,11 +78,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -111,11 +111,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1693833173, - "narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", + "lastModified": 1694857738, + "narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=", "owner": "numtide", "repo": "nix-filter", - "rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", + "rev": "41fd48e00c22b4ced525af521ead8792402de0ea", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694062546, - "narHash": "sha256-PiGI4f2BGnZcedP6slLjCLGLRLXPa9+ogGGgVPfGxys=", + "lastModified": 1694760568, + "narHash": "sha256-3G07BiXrp2YQKxdcdms22MUx6spc6A++MSePtatCYuI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b200e0df08f80c32974a6108ce431d8a8a5e6547", + "rev": "46688f8eb5cd6f1298d873d4d2b9cf245e09e88e", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1694225334, - "narHash": "sha256-f3uOfcfmG53biFl6zHPHSFrBucLGQp0LpRYQJlozZSA=", + "lastModified": 1694830162, + "narHash": "sha256-BOs2/e70ojvkAPaChy/mz9EuJ7Lgp7oRygwVzStvsnU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "1b4fad9dccece45c25b9ebda607427d69a8f1eae", + "rev": "f84bb1621574473d05e6ed79ba57a371d8ad8259", "type": "github" }, "original": { From e54e08385672ebff79d46532088e325505b4b7a2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Sep 2023 00:20:40 +0000 Subject: [PATCH 040/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/12719bd23b88573977c7ad7fe818b05e8fbc33b3' (2023-09-13) → 'github:rustsec/advisory-db/81594d9fd5b32c3eaa199812475498b47fc98742' (2023-09-21) • Updated input 'crane': 'github:ipetkov/crane/8b4f7a4dab2120cf41e7957a28a853f45016bd9d' (2023-09-04) → 'github:ipetkov/crane/3de322e06fc88ada5e3589dc8a375b73e749f512' (2023-09-23) • Updated input 'crane/flake-utils': 'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23) → 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/98ccb73e6eefc481da6039ee57ad8818d1ca8d56' (2023-09-03) → 'github:oxalica/rust-overlay/b87a14abea512d956f0b89d0d8a1e9b41f3e20ff' (2023-09-18) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/46688f8eb5cd6f1298d873d4d2b9cf245e09e88e' (2023-09-15) → 'github:NixOS/nixpkgs/e12483116b3b51a185a33a272bf351e357ba9a99' (2023-09-21) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/f84bb1621574473d05e6ed79ba57a371d8ad8259' (2023-09-16) → 'github:oxalica/rust-overlay/c0ad320f9aadcc3cb1e62794cb950fe243e077d6' (2023-09-23) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 62798ca59b..078335783c 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1694620341, - "narHash": "sha256-5hV38PQ1roGn5oxWdmv7YRp684/9hypW/7nzcdLARZI=", + "lastModified": 1695296241, + "narHash": "sha256-t3SBLTqXyMlloAC0qSTHRAlWweiww6rmp0gSotDy1yo=", "owner": "rustsec", "repo": "advisory-db", - "rev": "12719bd23b88573977c7ad7fe818b05e8fbc33b3", + "rev": "81594d9fd5b32c3eaa199812475498b47fc98742", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1693787605, - "narHash": "sha256-rwq5U8dy+a9JFny/73L0SJu1GfWwATMPMTp7D+mjHy8=", + "lastModified": 1695511445, + "narHash": "sha256-mnE14re43v3/Jc50Jv0BKPMtEk7FEtDSligP6B5HwlI=", "owner": "ipetkov", "repo": "crane", - "rev": "8b4f7a4dab2120cf41e7957a28a853f45016bd9d", + "rev": "3de322e06fc88ada5e3589dc8a375b73e749f512", "type": "github" }, "original": { @@ -60,11 +60,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694760568, - "narHash": "sha256-3G07BiXrp2YQKxdcdms22MUx6spc6A++MSePtatCYuI=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "46688f8eb5cd6f1298d873d4d2b9cf245e09e88e", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1693707092, - "narHash": "sha256-HR1EnynBSPqbt+04/yxxqsG1E3n6uXrOl7SPco/UnYo=", + "lastModified": 1695003086, + "narHash": "sha256-d1/ZKuBRpxifmUf7FaedCqhy0lyVbqj44Oc2s+P5bdA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "98ccb73e6eefc481da6039ee57ad8818d1ca8d56", + "rev": "b87a14abea512d956f0b89d0d8a1e9b41f3e20ff", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1694830162, - "narHash": "sha256-BOs2/e70ojvkAPaChy/mz9EuJ7Lgp7oRygwVzStvsnU=", + "lastModified": 1695434972, + "narHash": "sha256-xApD0SkgTSZNEp2QBKT1Cwt1H8xkZhdZvmHL6hjbE/o=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f84bb1621574473d05e6ed79ba57a371d8ad8259", + "rev": "c0ad320f9aadcc3cb1e62794cb950fe243e077d6", "type": "github" }, "original": { From 00d3366ff1ee485b337fe96c2f7b4694771f32cc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Oct 2023 00:20:58 +0000 Subject: [PATCH 041/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/81594d9fd5b32c3eaa199812475498b47fc98742' (2023-09-21) → 'github:rustsec/advisory-db/da470caa84d3dd3be02657a9cb35bd5269636127' (2023-10-03) • Updated input 'crane': 'github:ipetkov/crane/3de322e06fc88ada5e3589dc8a375b73e749f512' (2023-09-23) → 'github:ipetkov/crane/f2143cd27f8bd09ee4f0121336c65015a2a0a19c' (2023-10-04) • Updated input 'crane/flake-compat': 'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17) → 'github:edolstra/flake-compat/4f910c9827911b1ec2bf26b5a062cd09f8d89f85' (2023-10-02) • Updated input 'crane/rust-overlay': 'github:oxalica/rust-overlay/b87a14abea512d956f0b89d0d8a1e9b41f3e20ff' (2023-09-18) → 'github:oxalica/rust-overlay/611ccdceed92b4d94ae75328148d84ee4a5b462d' (2023-10-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/e12483116b3b51a185a33a272bf351e357ba9a99' (2023-09-21) → 'github:NixOS/nixpkgs/2de1be5b51c3d6fa833f1c1f222dc867dd054b31' (2023-10-07) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/c0ad320f9aadcc3cb1e62794cb950fe243e077d6' (2023-09-23) → 'github:oxalica/rust-overlay/126829788e99c188be4eeb805f144d73d8a00f2c' (2023-10-07) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 078335783c..e014637073 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1695296241, - "narHash": "sha256-t3SBLTqXyMlloAC0qSTHRAlWweiww6rmp0gSotDy1yo=", + "lastModified": 1696341198, + "narHash": "sha256-AgAcrT3+22QZiHxapKIt8drtP3hacNmyxFneD/Jsp8I=", "owner": "rustsec", "repo": "advisory-db", - "rev": "81594d9fd5b32c3eaa199812475498b47fc98742", + "rev": "da470caa84d3dd3be02657a9cb35bd5269636127", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1695511445, - "narHash": "sha256-mnE14re43v3/Jc50Jv0BKPMtEk7FEtDSligP6B5HwlI=", + "lastModified": 1696384830, + "narHash": "sha256-j8ZsVqzmj5sOm5MW9cqwQJUZELFFwOislDmqDDEMl6k=", "owner": "ipetkov", "repo": "crane", - "rev": "3de322e06fc88ada5e3589dc8a375b73e749f512", + "rev": "f2143cd27f8bd09ee4f0121336c65015a2a0a19c", "type": "github" }, "original": { @@ -42,11 +42,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696267196, + "narHash": "sha256-AAQ/2sD+0D18bb8hKuEEVpHUYD1GmO2Uh/taFamn6XQ=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "4f910c9827911b1ec2bf26b5a062cd09f8d89f85", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "lastModified": 1696693680, + "narHash": "sha256-PH0HQTkqyj7DmdPKPwrrXwVURLBqzZs4nqnDw9q8mhg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "rev": "945559664c1dc5836173ee12896ba421d9b37181", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1695003086, - "narHash": "sha256-d1/ZKuBRpxifmUf7FaedCqhy0lyVbqj44Oc2s+P5bdA=", + "lastModified": 1696299134, + "narHash": "sha256-RS77cAa0N+Sfj5EmKbm5IdncNXaBCE1BSSQvUE8exvo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b87a14abea512d956f0b89d0d8a1e9b41f3e20ff", + "rev": "611ccdceed92b4d94ae75328148d84ee4a5b462d", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1695434972, - "narHash": "sha256-xApD0SkgTSZNEp2QBKT1Cwt1H8xkZhdZvmHL6hjbE/o=", + "lastModified": 1696731188, + "narHash": "sha256-EL0iBBEUEV2oVygwv31C2+3w63826yEUN3LfIHAR0jo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c0ad320f9aadcc3cb1e62794cb950fe243e077d6", + "rev": "6528a18a62d817200099c520b6eea7833ade9a9a", "type": "github" }, "original": { From 0de32a8a5cb4cc0460eca9d60da65660d50713a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Oct 2023 00:21:18 +0000 Subject: [PATCH 042/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/da470caa84d3dd3be02657a9cb35bd5269636127' (2023-10-03) → 'github:rustsec/advisory-db/71d80e811f2e29a4b82d3e545ad6591e35227e03' (2023-10-14) • Updated input 'crane': 'github:ipetkov/crane/f2143cd27f8bd09ee4f0121336c65015a2a0a19c' (2023-10-04) → 'github:ipetkov/crane/ce0a13f8ba34e62e11e2a73ef81261b5461d1573' (2023-10-14) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/945559664c1dc5836173ee12896ba421d9b37181' (2023-10-07) → 'github:NixOS/nixpkgs/01441e14af5e29c9d27ace398e6dd0b293e25a54' (2023-10-11) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/6528a18a62d817200099c520b6eea7833ade9a9a' (2023-10-08) → 'github:oxalica/rust-overlay/dce60ca7fca201014868c08a612edb73a998310f' (2023-10-14) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index e014637073..6bcea857cc 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1696341198, - "narHash": "sha256-AgAcrT3+22QZiHxapKIt8drtP3hacNmyxFneD/Jsp8I=", + "lastModified": 1697318478, + "narHash": "sha256-ZEDgHfurZiv9lBGTmHnQ0YECoi6H2NYs3pTo1VU1koQ=", "owner": "rustsec", "repo": "advisory-db", - "rev": "da470caa84d3dd3be02657a9cb35bd5269636127", + "rev": "71d80e811f2e29a4b82d3e545ad6591e35227e03", "type": "github" }, "original": { @@ -26,11 +26,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1696384830, - "narHash": "sha256-j8ZsVqzmj5sOm5MW9cqwQJUZELFFwOislDmqDDEMl6k=", + "lastModified": 1697320248, + "narHash": "sha256-z64U4vr+hdnmqO+dThcvQ8Yl7GI0/7jfiknWq4sn0OQ=", "owner": "ipetkov", "repo": "crane", - "rev": "f2143cd27f8bd09ee4f0121336c65015a2a0a19c", + "rev": "ce0a13f8ba34e62e11e2a73ef81261b5461d1573", "type": "github" }, "original": { @@ -126,11 +126,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1696693680, - "narHash": "sha256-PH0HQTkqyj7DmdPKPwrrXwVURLBqzZs4nqnDw9q8mhg=", + "lastModified": 1697009197, + "narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "945559664c1dc5836173ee12896ba421d9b37181", + "rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54", "type": "github" }, "original": { @@ -183,11 +183,11 @@ ] }, "locked": { - "lastModified": 1696731188, - "narHash": "sha256-EL0iBBEUEV2oVygwv31C2+3w63826yEUN3LfIHAR0jo=", + "lastModified": 1697249410, + "narHash": "sha256-OmsnxNsjBB1DJlUuJyzDJJ7psbm4/VzokNT+o0ajzFQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6528a18a62d817200099c520b6eea7833ade9a9a", + "rev": "dce60ca7fca201014868c08a612edb73a998310f", "type": "github" }, "original": { From ef6a2b5f01040fed23094e53d55c7f1df24eb800 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 22 Oct 2023 00:21:12 +0000 Subject: [PATCH 043/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/ce0a13f8ba34e62e11e2a73ef81261b5461d1573' (2023-10-14) → 'github:ipetkov/crane/758ae442227103fa501276e8225609a11c99718e' (2023-10-20) • Removed input 'crane/flake-compat' • Removed input 'crane/flake-utils' • Removed input 'crane/flake-utils/systems' • Removed input 'crane/rust-overlay' • Removed input 'crane/rust-overlay/flake-utils' • Removed input 'crane/rust-overlay/nixpkgs' • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/01441e14af5e29c9d27ace398e6dd0b293e25a54' (2023-10-11) → 'github:NixOS/nixpkgs/44881e03af1c730cbb1d72a4d41274a2c957813a' (2023-10-21) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/dce60ca7fca201014868c08a612edb73a998310f' (2023-10-14) → 'github:oxalica/rust-overlay/6e8e3332433847cd56186b1f6fc8c47603cf5b46' (2023-10-21) --- flake.lock | 103 +++++++---------------------------------------------- 1 file changed, 13 insertions(+), 90 deletions(-) diff --git a/flake.lock b/flake.lock index 6bcea857cc..62e9974905 100644 --- a/flake.lock +++ b/flake.lock @@ -18,19 +18,16 @@ }, "crane": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", "nixpkgs": [ "nixpkgs" - ], - "rust-overlay": "rust-overlay" + ] }, "locked": { - "lastModified": 1697320248, - "narHash": "sha256-z64U4vr+hdnmqO+dThcvQ8Yl7GI0/7jfiknWq4sn0OQ=", + "lastModified": 1697840921, + "narHash": "sha256-zXHwu104SQOxogkMgg+w22c3+zI/FvK83TAkfLmeKw0=", "owner": "ipetkov", "repo": "crane", - "rev": "ce0a13f8ba34e62e11e2a73ef81261b5461d1573", + "rev": "758ae442227103fa501276e8225609a11c99718e", "type": "github" }, "original": { @@ -39,22 +36,6 @@ "type": "github" } }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1696267196, - "narHash": "sha256-AAQ/2sD+0D18bb8hKuEEVpHUYD1GmO2Uh/taFamn6XQ=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "4f910c9827911b1ec2bf26b5a062cd09f8d89f85", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems" @@ -77,24 +58,6 @@ "inputs": { "systems": "systems_2" }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_3" - }, "locked": { "lastModified": 1681202837, "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", @@ -126,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1697009197, - "narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=", + "lastModified": 1697886341, + "narHash": "sha256-AdE67xPty9M9wn36nPVp6aDntIdigrs7UbyaGv1VAaM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54", + "rev": "44881e03af1c730cbb1d72a4d41274a2c957813a", "type": "github" }, "original": { @@ -144,50 +107,25 @@ "inputs": { "advisory-db": "advisory-db", "crane": "crane", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "nix-filter": "nix-filter", "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay_2" + "rust-overlay": "rust-overlay" } }, "rust-overlay": { "inputs": { - "flake-utils": [ - "crane", - "flake-utils" - ], - "nixpkgs": [ - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1696299134, - "narHash": "sha256-RS77cAa0N+Sfj5EmKbm5IdncNXaBCE1BSSQvUE8exvo=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "611ccdceed92b4d94ae75328148d84ee4a5b462d", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1697249410, - "narHash": "sha256-OmsnxNsjBB1DJlUuJyzDJJ7psbm4/VzokNT+o0ajzFQ=", + "lastModified": 1697854201, + "narHash": "sha256-H+0Wb20PQx/8N7X/OfwwAVPeN9TbfjcyG0sXbdgsh50=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "dce60ca7fca201014868c08a612edb73a998310f", + "rev": "6e8e3332433847cd56186b1f6fc8c47603cf5b46", "type": "github" }, "original": { @@ -225,21 +163,6 @@ "repo": "default", "type": "github" } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", From 07e77763bc192afa2de78c1b0386cf869d37eea1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Oct 2023 00:20:56 +0000 Subject: [PATCH 044/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/71d80e811f2e29a4b82d3e545ad6591e35227e03' (2023-10-14) → 'github:rustsec/advisory-db/0c251c3c9a1b08e08ef5946d4c2d133fe1bc213e' (2023-10-28) • Updated input 'crane': 'github:ipetkov/crane/758ae442227103fa501276e8225609a11c99718e' (2023-10-20) → 'github:ipetkov/crane/b7db46f0f1751f7b1d1911f6be7daf568ad5bc65' (2023-10-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/44881e03af1c730cbb1d72a4d41274a2c957813a' (2023-10-21) → 'github:NixOS/nixpkgs/808c0d8c53c7ae50f82aca8e7df263225cf235bf' (2023-10-26) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/6e8e3332433847cd56186b1f6fc8c47603cf5b46' (2023-10-21) → 'github:oxalica/rust-overlay/571fee291b386dd6fe0d125bc20a7c7b3ad042ac' (2023-10-28) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 62e9974905..57cdfbb339 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1697318478, - "narHash": "sha256-ZEDgHfurZiv9lBGTmHnQ0YECoi6H2NYs3pTo1VU1koQ=", + "lastModified": 1698509797, + "narHash": "sha256-7U+RPs2Zue8Ci/tD6aftLGlf4mUHJ9bmbB+c4mfwH9s=", "owner": "rustsec", "repo": "advisory-db", - "rev": "71d80e811f2e29a4b82d3e545ad6591e35227e03", + "rev": "0c251c3c9a1b08e08ef5946d4c2d133fe1bc213e", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1697840921, - "narHash": "sha256-zXHwu104SQOxogkMgg+w22c3+zI/FvK83TAkfLmeKw0=", + "lastModified": 1698166613, + "narHash": "sha256-y4rdN4flxRiROqNi1waMYIZj/Fs7L2OrszFk/1ry9vU=", "owner": "ipetkov", "repo": "crane", - "rev": "758ae442227103fa501276e8225609a11c99718e", + "rev": "b7db46f0f1751f7b1d1911f6be7daf568ad5bc65", "type": "github" }, "original": { @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1697886341, - "narHash": "sha256-AdE67xPty9M9wn36nPVp6aDntIdigrs7UbyaGv1VAaM=", + "lastModified": 1698553279, + "narHash": "sha256-T/9P8yBSLcqo/v+FTOBK+0rjzjPMctVymZydbvR/Fak=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44881e03af1c730cbb1d72a4d41274a2c957813a", + "rev": "90e85bc7c1a6fc0760a94ace129d3a1c61c3d035", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1697854201, - "narHash": "sha256-H+0Wb20PQx/8N7X/OfwwAVPeN9TbfjcyG0sXbdgsh50=", + "lastModified": 1698726852, + "narHash": "sha256-V1S4TTzg++GzPc96i/yy4jib+7/xU0LXHcggm9MllMM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6e8e3332433847cd56186b1f6fc8c47603cf5b46", + "rev": "ec19bd20af08f3b004089cc12ab54c823ed899b7", "type": "github" }, "original": { From 903eaf952eee1050612f8c93a8222a23fb6c4b96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 Nov 2023 00:21:28 +0000 Subject: [PATCH 045/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/0c251c3c9a1b08e08ef5946d4c2d133fe1bc213e' (2023-10-28) → 'github:rustsec/advisory-db/088ec034cfc17c918d8c1d4f9fbb832b935011b0' (2023-11-02) • Updated input 'crane': 'github:ipetkov/crane/b7db46f0f1751f7b1d1911f6be7daf568ad5bc65' (2023-10-24) → 'github:ipetkov/crane/2c89c36bffac32d8267e719f73b0d06e313ede30' (2023-11-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/90e85bc7c1a6fc0760a94ace129d3a1c61c3d035' (2023-10-29) → 'github:NixOS/nixpkgs/9d5d25bbfe8c0297ebe85324addcb5020ed1a454' (2023-11-04) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/ec19bd20af08f3b004089cc12ab54c823ed899b7' (2023-10-31) → 'github:oxalica/rust-overlay/321affd863e3e4e669990a1db5fdabef98387b95' (2023-11-03) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 57cdfbb339..f01d37967a 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1698509797, - "narHash": "sha256-7U+RPs2Zue8Ci/tD6aftLGlf4mUHJ9bmbB+c4mfwH9s=", + "lastModified": 1698930228, + "narHash": "sha256-ewxEUkQljd/D6jJyixlgQi0ZBFzYrhIY1EuoPylxkag=", "owner": "rustsec", "repo": "advisory-db", - "rev": "0c251c3c9a1b08e08ef5946d4c2d133fe1bc213e", + "rev": "088ec034cfc17c918d8c1d4f9fbb832b935011b0", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1698166613, - "narHash": "sha256-y4rdN4flxRiROqNi1waMYIZj/Fs7L2OrszFk/1ry9vU=", + "lastModified": 1699030822, + "narHash": "sha256-a25bCHvTPJfAvK3qLoi5uI2pvwnOYhMQLRpJYNEt55o=", "owner": "ipetkov", "repo": "crane", - "rev": "b7db46f0f1751f7b1d1911f6be7daf568ad5bc65", + "rev": "2c89c36bffac32d8267e719f73b0d06e313ede30", "type": "github" }, "original": { @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1698553279, - "narHash": "sha256-T/9P8yBSLcqo/v+FTOBK+0rjzjPMctVymZydbvR/Fak=", + "lastModified": 1699094435, + "narHash": "sha256-YLZ5/KKZ1PyLrm2MO8UxRe4H3M0/oaYqNhSlq6FDeeA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "90e85bc7c1a6fc0760a94ace129d3a1c61c3d035", + "rev": "9d5d25bbfe8c0297ebe85324addcb5020ed1a454", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1698726852, - "narHash": "sha256-V1S4TTzg++GzPc96i/yy4jib+7/xU0LXHcggm9MllMM=", + "lastModified": 1698977568, + "narHash": "sha256-bnbCqPDFdOUcSANJv9Br3q/b1LyK9vyB1I7os5T4jXI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ec19bd20af08f3b004089cc12ab54c823ed899b7", + "rev": "321affd863e3e4e669990a1db5fdabef98387b95", "type": "github" }, "original": { From 3d7d8cf44190bba2cfc3b399257b104221f86c75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 12 Nov 2023 00:21:40 +0000 Subject: [PATCH 046/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/088ec034cfc17c918d8c1d4f9fbb832b935011b0' (2023-11-02) → 'github:rustsec/advisory-db/3338fcfb59cea5fcd7d2a4e7fe24cbc7cb778003' (2023-11-11) • Updated input 'crane': 'github:ipetkov/crane/2c89c36bffac32d8267e719f73b0d06e313ede30' (2023-11-03) → 'github:ipetkov/crane/6849911446e18e520970cc6b7a691e64ee90d649' (2023-11-09) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/9d5d25bbfe8c0297ebe85324addcb5020ed1a454' (2023-11-04) → 'github:NixOS/nixpkgs/ec750fd01963ab6b20ee1f0cb488754e8036d89d' (2023-11-07) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/321affd863e3e4e669990a1db5fdabef98387b95' (2023-11-03) → 'github:oxalica/rust-overlay/efd15e11c8954051a47679e7718b4c2a9b68ce27' (2023-11-11) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index f01d37967a..ca95bface7 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1698930228, - "narHash": "sha256-ewxEUkQljd/D6jJyixlgQi0ZBFzYrhIY1EuoPylxkag=", + "lastModified": 1699714741, + "narHash": "sha256-7cRZc3RoBv4n9GgMun+OoTK5ssI2fzqkDAZsp37uhTs=", "owner": "rustsec", "repo": "advisory-db", - "rev": "088ec034cfc17c918d8c1d4f9fbb832b935011b0", + "rev": "3338fcfb59cea5fcd7d2a4e7fe24cbc7cb778003", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1699030822, - "narHash": "sha256-a25bCHvTPJfAvK3qLoi5uI2pvwnOYhMQLRpJYNEt55o=", + "lastModified": 1699548976, + "narHash": "sha256-xnpxms0koM8mQpxIup9JnT0F7GrKdvv0QvtxvRuOYR4=", "owner": "ipetkov", "repo": "crane", - "rev": "2c89c36bffac32d8267e719f73b0d06e313ede30", + "rev": "6849911446e18e520970cc6b7a691e64ee90d649", "type": "github" }, "original": { @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1699094435, - "narHash": "sha256-YLZ5/KKZ1PyLrm2MO8UxRe4H3M0/oaYqNhSlq6FDeeA=", + "lastModified": 1699725108, + "narHash": "sha256-NTiPW4jRC+9puakU4Vi8WpFEirhp92kTOSThuZke+FA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9d5d25bbfe8c0297ebe85324addcb5020ed1a454", + "rev": "911ad1e67f458b6bcf0278fa85e33bb9924fed7e", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1698977568, - "narHash": "sha256-bnbCqPDFdOUcSANJv9Br3q/b1LyK9vyB1I7os5T4jXI=", + "lastModified": 1699841702, + "narHash": "sha256-EG1Fpw732KmcyFJB0tUNsvreRomwTI/H5ngqlGrfB1Y=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "321affd863e3e4e669990a1db5fdabef98387b95", + "rev": "05c34b45e276a9939d1170b025faafe7a5fab2c8", "type": "github" }, "original": { From cccd52825de4fa65fc33f6a8af96b00bd439916e Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Sun, 12 Nov 2023 11:22:30 +0100 Subject: [PATCH 047/154] fix(nix): include cargo-llvm-cov on Linux platforms only. cargo-llvm-cov is flagged as broken if you're not building on a Linux platform since the profiler runtime is (currently) disabled on non-Linux platforms [0]. Therefore, we make the inclusion of cargo-llvm-cov a condition of our package platform. [0] https://github.com/NixOS/nixpkgs/blob/005576a68442b421950cff2951cf6dd78090fbc6/pkgs/development/tools/rust/cargo-llvm-cov/default.nix#L85 --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 18e82e4244..504499a433 100644 --- a/flake.nix +++ b/flake.nix @@ -188,6 +188,7 @@ packages = { default = unblob-native; inherit libunblob-native; + } // lib.optionalAttrs (!(pkgs.cargo-llvm-cov.meta.broken or false)) { libunblob-native-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { inherit cargoArtifacts; }); From 9663f33bd79b211d31aeb6111f8a10ff7194087b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 19 Nov 2023 00:22:14 +0000 Subject: [PATCH 048/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/6849911446e18e520970cc6b7a691e64ee90d649' (2023-11-09) → 'github:ipetkov/crane/ae7cd510e508ee03d792005c2f1c0a3ff25ecb80' (2023-11-18) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/911ad1e67f458b6bcf0278fa85e33bb9924fed7e' (2023-11-11) → 'github:NixOS/nixpkgs/7414e9ee0b3e9903c24d3379f577a417f0aae5f1' (2023-11-16) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/05c34b45e276a9939d1170b025faafe7a5fab2c8' (2023-11-13) → 'github:oxalica/rust-overlay/616074a1b2a71bbe44da4cc29a64255aecb8d541' (2023-11-18) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index ca95bface7..aac760516b 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1699548976, - "narHash": "sha256-xnpxms0koM8mQpxIup9JnT0F7GrKdvv0QvtxvRuOYR4=", + "lastModified": 1700327093, + "narHash": "sha256-OgYvlBABxJYWhZ/HBd0bPVcIEkT+xDhDCpRYqtVhYWY=", "owner": "ipetkov", "repo": "crane", - "rev": "6849911446e18e520970cc6b7a691e64ee90d649", + "rev": "ae7cd510e508ee03d792005c2f1c0a3ff25ecb80", "type": "github" }, "original": { @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1699725108, - "narHash": "sha256-NTiPW4jRC+9puakU4Vi8WpFEirhp92kTOSThuZke+FA=", + "lastModified": 1700108881, + "narHash": "sha256-+Lqybl8kj0+nD/IlAWPPG/RDTa47gff9nbei0u7BntE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "911ad1e67f458b6bcf0278fa85e33bb9924fed7e", + "rev": "7414e9ee0b3e9903c24d3379f577a417f0aae5f1", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1699841702, - "narHash": "sha256-EG1Fpw732KmcyFJB0tUNsvreRomwTI/H5ngqlGrfB1Y=", + "lastModified": 1700273673, + "narHash": "sha256-0XD4JvrQiZ9BDFdH3VTwqZVXTYzOfS7DVblvqHBnWgE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "05c34b45e276a9939d1170b025faafe7a5fab2c8", + "rev": "616074a1b2a71bbe44da4cc29a64255aecb8d541", "type": "github" }, "original": { From 566609f3d3a816114e0eba9289f3e31b37faaa64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 26 Nov 2023 00:22:00 +0000 Subject: [PATCH 049/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/7414e9ee0b3e9903c24d3379f577a417f0aae5f1' (2023-11-16) → 'github:NixOS/nixpkgs/0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1' (2023-11-24) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/616074a1b2a71bbe44da4cc29a64255aecb8d541' (2023-11-18) → 'github:oxalica/rust-overlay/0309d58c91c57e8d519de68312430074de3ef5f8' (2023-11-25) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index aac760516b..cf973099a0 100644 --- a/flake.lock +++ b/flake.lock @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1700108881, - "narHash": "sha256-+Lqybl8kj0+nD/IlAWPPG/RDTa47gff9nbei0u7BntE=", + "lastModified": 1700856099, + "narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7414e9ee0b3e9903c24d3379f577a417f0aae5f1", + "rev": "0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1700273673, - "narHash": "sha256-0XD4JvrQiZ9BDFdH3VTwqZVXTYzOfS7DVblvqHBnWgE=", + "lastModified": 1700878361, + "narHash": "sha256-O30hSOliHJhSdhZw5T8JFtxlL309mNLI+agYffuccIo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "616074a1b2a71bbe44da4cc29a64255aecb8d541", + "rev": "0309d58c91c57e8d519de68312430074de3ef5f8", "type": "github" }, "original": { From 4188db2d36ea4c7bd01371de5dfd574bc038d311 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 10 Dec 2023 00:22:47 +0000 Subject: [PATCH 050/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/3338fcfb59cea5fcd7d2a4e7fe24cbc7cb778003' (2023-11-11) → 'github:rustsec/advisory-db/6ef1d1fd84c57e46253ff16bf7379c115e1062eb' (2023-12-09) • Updated input 'crane': 'github:ipetkov/crane/ae7cd510e508ee03d792005c2f1c0a3ff25ecb80' (2023-11-18) → 'github:ipetkov/crane/62fc1a0cbe144c1014d956e603d56bf1ffe69c7d' (2023-12-09) • Updated input 'flake-utils': 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12) → 'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04) • Updated input 'nix-filter': 'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16) → 'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1' (2023-11-24) → 'github:NixOS/nixpkgs/09dc04054ba2ff1f861357d0e7e76d021b273cd7' (2023-12-08) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/0309d58c91c57e8d519de68312430074de3ef5f8' (2023-11-25) → 'github:oxalica/rust-overlay/2cfb76b8e836a26efecd9f853bea78355a11c58a' (2023-12-09) --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index cf973099a0..aca63cf5e1 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1699714741, - "narHash": "sha256-7cRZc3RoBv4n9GgMun+OoTK5ssI2fzqkDAZsp37uhTs=", + "lastModified": 1702116332, + "narHash": "sha256-Qzx1cRU8QnCmbEp0LJFoEzm7tetiNTc+wRTJTzPo2ko=", "owner": "rustsec", "repo": "advisory-db", - "rev": "3338fcfb59cea5fcd7d2a4e7fe24cbc7cb778003", + "rev": "6ef1d1fd84c57e46253ff16bf7379c115e1062eb", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1700327093, - "narHash": "sha256-OgYvlBABxJYWhZ/HBd0bPVcIEkT+xDhDCpRYqtVhYWY=", + "lastModified": 1702141249, + "narHash": "sha256-8wDpJKbDTDqFmyJfNEJOLrHYDoEzCjCbmz+lSRoU3CI=", "owner": "ipetkov", "repo": "crane", - "rev": "ae7cd510e508ee03d792005c2f1c0a3ff25ecb80", + "rev": "62fc1a0cbe144c1014d956e603d56bf1ffe69c7d", "type": "github" }, "original": { @@ -41,11 +41,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -74,11 +74,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1694857738, - "narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=", + "lastModified": 1701697642, + "narHash": "sha256-L217WytWZHSY8GW9Gx1A64OnNctbuDbfslaTEofXXRw=", "owner": "numtide", "repo": "nix-filter", - "rev": "41fd48e00c22b4ced525af521ead8792402de0ea", + "rev": "c843418ecfd0344ecb85844b082ff5675e02c443", "type": "github" }, "original": { @@ -89,11 +89,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1700856099, - "narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=", + "lastModified": 1701998057, + "narHash": "sha256-gAJGhcTO9cso7XDfAScXUlPcva427AUT2q02qrmXPdo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1", + "rev": "09dc04054ba2ff1f861357d0e7e76d021b273cd7", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1700878361, - "narHash": "sha256-O30hSOliHJhSdhZw5T8JFtxlL309mNLI+agYffuccIo=", + "lastModified": 1702088052, + "narHash": "sha256-FkwIBTAMsxyceQce0Mbm+/+cOjj2r5IHBK4R/ekPNaw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "0309d58c91c57e8d519de68312430074de3ef5f8", + "rev": "2cfb76b8e836a26efecd9f853bea78355a11c58a", "type": "github" }, "original": { From 7c5577accc0351aef54f9cce55a98c24dd602e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 13 Dec 2023 18:24:45 +0100 Subject: [PATCH 051/154] nix: expose unblob-native as an overlay Nix recently started checking the consistency of python derivations: a python environment must refer only a single python interpreter and package set. Unblob needs to be updated later to use this overlay. During the rewrite some simplifications are made: - use nix's default rust environment - remove (unused) code coverage measurement for now --- default.nix | 104 +++++++++++++++++++++++++++ flake.lock | 57 +-------------- flake.nix | 201 ++++++++++++---------------------------------------- 3 files changed, 149 insertions(+), 213 deletions(-) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000000..8a0745390d --- /dev/null +++ b/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, craneLib +, nixFilter +, maturin +, rustPlatform +, libiconv +, python3 +}: + +let + src = craneLib.cleanCargoSource (craneLib.path ./.); + + # Common arguments can be set here to avoid repeating them later + commonArgs = { + inherit src; + + # python package build will recompile PyO3 when built with maturin + # as there are different build features are used for the extension module + # and the standalone dylib which is used for tests and benchmarks + doNotLinkInheritedArtifacts = true; + + buildInputs = [ + python3 + ] ++ lib.optionals stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + libiconv + ]; + }; + + # Build *just* the cargo dependencies, so we can reuse + # all of that work (e.g. via cachix) when running in CI + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + + # Build the actual crate itself, reusing the dependency + # artifacts from above. + libunblob-native = craneLib.buildPackage (commonArgs // { + inherit cargoArtifacts; + }); + self = python3.pkgs.buildPythonPackage { + + inherit (libunblob-native) pname version; + format = "pyproject"; + + src = nixFilter { + root = ./.; + include = [ + "Cargo.toml" + "Cargo.lock" + "pyproject.toml" + "python" + "benches" + "src" + "README.md" + "LICENSE" + ]; + }; + + buildInputs = commonArgs.buildInputs ++ [ maturin ]; + + strictDeps = true; + doCheck = false; + cargoDeps = rustPlatform.importCargoLock { + lockFile = ./Cargo.lock; + }; + + nativeBuildInputs = + (with rustPlatform; [ + cargoSetupHook + maturinBuildHook + ]); + + + passthru = { + inherit cargoArtifacts craneLib commonArgs libunblob-native; + tests = { + pytest = + with python3.pkgs; buildPythonPackage + { + inherit (libunblob-native) pname version; + format = "other"; + + src = nixFilter + { + root = ./.; + include = [ + "pyproject.toml" + "tests" + ]; + }; + + dontBuild = true; + dontInstall = true; + + nativeCheckInputs = [ + self + pytestCheckHook + ]; + }; + }; + }; + }; +in +self diff --git a/flake.lock b/flake.lock index aca63cf5e1..3ea22f9ff9 100644 --- a/flake.lock +++ b/flake.lock @@ -54,24 +54,6 @@ "type": "github" } }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nix-filter": { "locked": { "lastModified": 1701697642, @@ -109,29 +91,7 @@ "crane": "crane", "flake-utils": "flake-utils", "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1702088052, - "narHash": "sha256-FkwIBTAMsxyceQce0Mbm+/+cOjj2r5IHBK4R/ekPNaw=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "2cfb76b8e836a26efecd9f853bea78355a11c58a", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "nixpkgs": "nixpkgs" } }, "systems": { @@ -148,21 +108,6 @@ "repo": "default", "type": "github" } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 504499a433..1d16323312 100644 --- a/flake.nix +++ b/flake.nix @@ -11,11 +11,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - flake-utils.url = "github:numtide/flake-utils"; advisory-db = { @@ -24,131 +19,36 @@ }; }; - outputs = { self, nixpkgs, nix-filter, crane, rust-overlay, flake-utils, advisory-db, ... }: - flake-utils.lib.eachDefaultSystem (system: + outputs = { self, nixpkgs, nix-filter, crane, flake-utils, advisory-db, ... }: { + overlays.default = final: prev: let - pkgs = import nixpkgs { - inherit system; - overlays = [ (import rust-overlay) ]; - }; - - filter = nix-filter.lib; - - inherit (pkgs) lib makeRustPlatform python3Packages; - - rust-toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; - craneLib = crane.lib.${system}.overrideToolchain rust-toolchain; - src = craneLib.cleanCargoSource (craneLib.path ./.); - - # Common arguments can be set here to avoid repeating them later - commonArgs = { - inherit src; - - # python package build will recompile PyO3 when built with maturin - # as there are different build features are used for the extension module - # and the standalone dylib which is used for tests and benchmarks - doNotLinkInheritedArtifacts = true; - - buildInputs = [ - # Add additional build inputs here - pkgs.python3 - ] ++ lib.optionals pkgs.stdenv.isDarwin [ - # Additional darwin specific inputs can be set here - pkgs.libiconv - ]; - - # Additional environment variables can be set directly - # MY_CUSTOM_VAR = "some value"; - }; - - craneLibLLvmTools = craneLib.overrideToolchain - (rust-toolchain.override { - extensions = [ - "cargo" - "llvm-tools-preview" - "rustc" - ]; - }); - - # Build *just* the cargo dependencies, so we can reuse - # all of that work (e.g. via cachix) when running in CI - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - - # Build the actual crate itself, reusing the dependency - # artifacts from above. - libunblob-native = craneLib.buildPackage (commonArgs // { - inherit cargoArtifacts; - }); - - rustPlatform = makeRustPlatform { - rustc = rust-toolchain; - cargo = rust-toolchain; - }; - - unblob-native = python3Packages.buildPythonPackage - { - inherit (libunblob-native) pname version; - format = "pyproject"; - - src = filter { - root = ./.; - include = [ - "Cargo.toml" - "Cargo.lock" - "pyproject.toml" - "python" - "benches" - "src" - "README.md" - "LICENSE" - ]; - }; - - buildInputs = commonArgs.buildInputs ++ [ pkgs.maturin ]; - - strictDeps = true; - doCheck = false; - cargoDeps = rustPlatform.importCargoLock { - lockFile = ./Cargo.lock; - }; - - nativeBuildInputs = - (with rustPlatform; [ - cargoSetupHook - maturinBuildHook - ]); - - passthru = { - tests = { - pytest = - with python3Packages; buildPythonPackage - { - inherit (libunblob-native) pname version; - format = "other"; - - src = filter - { - root = ./.; - include = [ - "pyproject.toml" - "tests" - ]; - }; - - dontBuild = true; - dontInstall = true; - - nativeCheckInputs = [ - unblob-native - pytestCheckHook - ]; - }; - }; - }; - }; + craneLib = crane.lib.${final.system}; + nixFilter = nix-filter.lib; in { - checks = unblob-native.tests // { + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (python-final: python-prev: { + unblob-native = python-final.callPackage ./. { inherit craneLib nixFilter; }; + }) + ]; + }; + } + // flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; + + inherit (pkgs.python3Packages) unblob-native; + in + { + + checks = unblob-native.tests // ( + let + inherit (unblob-native) cargoArtifacts commonArgs craneLib libunblob-native src; + in + { # Build the crate as part of `nix flake check` for convenience inherit libunblob-native; @@ -177,38 +77,25 @@ inherit src advisory-db; }; - } // lib.optionalAttrs (system == "x86_64-linux") { - # NB: cargo-tarpaulin only supports x86_64 systems - # Check code coverage (note: this will not upload coverage anywhere) - libunblob-native-coverage = craneLib.cargoTarpaulin (commonArgs // { - inherit cargoArtifacts; - }); - }; - - packages = { - default = unblob-native; - inherit libunblob-native; - } // lib.optionalAttrs (!(pkgs.cargo-llvm-cov.meta.broken or false)) { - libunblob-native-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { - inherit cargoArtifacts; - }); - }; + } + ); - devShells.default = pkgs.mkShell { - inputsFrom = builtins.attrValues self.checks.${system}; + packages = { + default = unblob-native; + inherit unblob-native; + }; - # Additional dev-shell environment variables can be set directly - # MY_CUSTOM_DEVELOPMENT_VAR = "something else"; + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues self.checks.${system}; - # Extra inputs can be added here - nativeBuildInputs = with pkgs; [ - black - maturin - pdm - ruff - ]; - }; + nativeBuildInputs = with pkgs; [ + black + maturin + pdm + ruff + ]; + }; - formatter = pkgs.nixpkgs-fmt; - }); + formatter = pkgs.nixpkgs-fmt; + }); } From 5f5307caa152cff147afe3ca74511f54c03e2a14 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 17 Dec 2023 00:22:46 +0000 Subject: [PATCH 052/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/6ef1d1fd84c57e46253ff16bf7379c115e1062eb' (2023-12-09) → 'github:rustsec/advisory-db/fd71859263a51bf69da4ad9f692d6ebfe7db525b' (2023-12-15) • Updated input 'crane': 'github:ipetkov/crane/62fc1a0cbe144c1014d956e603d56bf1ffe69c7d' (2023-12-09) → 'github:ipetkov/crane/3330c0de31e8729bb5d01820e59ceb1640e128dc' (2023-12-16) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/09dc04054ba2ff1f861357d0e7e76d021b273cd7' (2023-12-08) → 'github:NixOS/nixpkgs/aa9d4729cbc99dabacb50e3994dcefb3ea0f7447' (2023-12-14) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 3ea22f9ff9..398f0ae2da 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1702116332, - "narHash": "sha256-Qzx1cRU8QnCmbEp0LJFoEzm7tetiNTc+wRTJTzPo2ko=", + "lastModified": 1702652226, + "narHash": "sha256-nBq7EmP7E42XRLkMArk4aSjoclBxFT2gxgLmS2xF1EY=", "owner": "rustsec", "repo": "advisory-db", - "rev": "6ef1d1fd84c57e46253ff16bf7379c115e1062eb", + "rev": "fd71859263a51bf69da4ad9f692d6ebfe7db525b", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1702141249, - "narHash": "sha256-8wDpJKbDTDqFmyJfNEJOLrHYDoEzCjCbmz+lSRoU3CI=", + "lastModified": 1702749801, + "narHash": "sha256-frIhfv0h4RAobzQ/vp7C7a2bEbz2gcZc2qVSc2CElxw=", "owner": "ipetkov", "repo": "crane", - "rev": "62fc1a0cbe144c1014d956e603d56bf1ffe69c7d", + "rev": "3330c0de31e8729bb5d01820e59ceb1640e128dc", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701998057, - "narHash": "sha256-gAJGhcTO9cso7XDfAScXUlPcva427AUT2q02qrmXPdo=", + "lastModified": 1702539185, + "narHash": "sha256-KnIRG5NMdLIpEkZTnN5zovNYc0hhXjAgv6pfd5Z4c7U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09dc04054ba2ff1f861357d0e7e76d021b273cd7", + "rev": "aa9d4729cbc99dabacb50e3994dcefb3ea0f7447", "type": "github" }, "original": { From dc8245284475384ec43b8add93875825d2dd7923 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 20 Dec 2023 09:50:34 +0100 Subject: [PATCH 053/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/fd71859263a51bf69da4ad9f692d6ebfe7db525b' (2023-12-15) → 'github:rustsec/advisory-db/bc17aeb6838cfc331384dc4360a98ca4d56f2320' (2023-12-18) • Updated input 'crane': 'github:ipetkov/crane/3330c0de31e8729bb5d01820e59ceb1640e128dc' (2023-12-16) → 'github:ipetkov/crane/537ebb11db883f9076e37d83e3c7ee69a4abb48c' (2023-12-19) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/aa9d4729cbc99dabacb50e3994dcefb3ea0f7447' (2023-12-14) → 'github:NixOS/nixpkgs/dd8e82f3b4017b8faa52c2b1897a38d53c3c26cb' (2023-12-18) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 398f0ae2da..b1644d7c56 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1702652226, - "narHash": "sha256-nBq7EmP7E42XRLkMArk4aSjoclBxFT2gxgLmS2xF1EY=", + "lastModified": 1702914599, + "narHash": "sha256-QYwzxCTyW5cEmBOZuikoBs7pO4H6TkC6oikLxIxuzyk=", "owner": "rustsec", "repo": "advisory-db", - "rev": "fd71859263a51bf69da4ad9f692d6ebfe7db525b", + "rev": "bc17aeb6838cfc331384dc4360a98ca4d56f2320", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1702749801, - "narHash": "sha256-frIhfv0h4RAobzQ/vp7C7a2bEbz2gcZc2qVSc2CElxw=", + "lastModified": 1702956644, + "narHash": "sha256-6XxZSkhb/OkxIx705RHTTLYZ2qemmEC7tODD8f21gKw=", "owner": "ipetkov", "repo": "crane", - "rev": "3330c0de31e8729bb5d01820e59ceb1640e128dc", + "rev": "537ebb11db883f9076e37d83e3c7ee69a4abb48c", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702539185, - "narHash": "sha256-KnIRG5NMdLIpEkZTnN5zovNYc0hhXjAgv6pfd5Z4c7U=", + "lastModified": 1702938738, + "narHash": "sha256-O7Vb0xC9s4Dmgxj8APEpuuMj7HsLgPbpy1UKvNVJp7o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "aa9d4729cbc99dabacb50e3994dcefb3ea0f7447", + "rev": "dd8e82f3b4017b8faa52c2b1897a38d53c3c26cb", "type": "github" }, "original": { From 4c811c9ccce066dda98f4e2f33e40e9f6e7b542e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Dec 2023 00:22:33 +0000 Subject: [PATCH 054/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/bc17aeb6838cfc331384dc4360a98ca4d56f2320' (2023-12-18) → 'github:rustsec/advisory-db/a5fb72de318a74eb69a2c241c0e46705684a35d0' (2023-12-21) • Updated input 'crane': 'github:ipetkov/crane/537ebb11db883f9076e37d83e3c7ee69a4abb48c' (2023-12-19) → 'github:ipetkov/crane/2a5136f14a9ac93d9d370d64a36026c5de3ae8a4' (2023-12-20) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/dd8e82f3b4017b8faa52c2b1897a38d53c3c26cb' (2023-12-18) → 'github:NixOS/nixpkgs/d6863cbcbbb80e71cecfc03356db1cda38919523' (2023-12-21) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index b1644d7c56..79f3d42c50 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1702914599, - "narHash": "sha256-QYwzxCTyW5cEmBOZuikoBs7pO4H6TkC6oikLxIxuzyk=", + "lastModified": 1703184318, + "narHash": "sha256-vx2/goSpegxiFc7e1jKNHzBkhnsIQjriV4GZLaVe17M=", "owner": "rustsec", "repo": "advisory-db", - "rev": "bc17aeb6838cfc331384dc4360a98ca4d56f2320", + "rev": "a5fb72de318a74eb69a2c241c0e46705684a35d0", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1702956644, - "narHash": "sha256-6XxZSkhb/OkxIx705RHTTLYZ2qemmEC7tODD8f21gKw=", + "lastModified": 1703089493, + "narHash": "sha256-WUjYqUP/Lhhop9+aiHVFREgElunx1AHEWxqMT8ePfzo=", "owner": "ipetkov", "repo": "crane", - "rev": "537ebb11db883f9076e37d83e3c7ee69a4abb48c", + "rev": "2a5136f14a9ac93d9d370d64a36026c5de3ae8a4", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702938738, - "narHash": "sha256-O7Vb0xC9s4Dmgxj8APEpuuMj7HsLgPbpy1UKvNVJp7o=", + "lastModified": 1703134684, + "narHash": "sha256-SQmng1EnBFLzS7WSRyPM9HgmZP2kLJcPAz+Ug/nug6o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dd8e82f3b4017b8faa52c2b1897a38d53c3c26cb", + "rev": "d6863cbcbbb80e71cecfc03356db1cda38919523", "type": "github" }, "original": { From cac66e94cf9bd713fbd5e6ff5ad11464d130b227 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 31 Dec 2023 00:22:43 +0000 Subject: [PATCH 055/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/2a5136f14a9ac93d9d370d64a36026c5de3ae8a4' (2023-12-20) → 'github:ipetkov/crane/afdcd41180e3dfe4dac46b5ee396e3b12ccc967a' (2023-12-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/d6863cbcbbb80e71cecfc03356db1cda38919523' (2023-12-21) → 'github:NixOS/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870' (2023-12-25) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 79f3d42c50..04dbd79d1f 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1703089493, - "narHash": "sha256-WUjYqUP/Lhhop9+aiHVFREgElunx1AHEWxqMT8ePfzo=", + "lastModified": 1703439018, + "narHash": "sha256-VT+06ft/x3eMZ1MJxWzQP3zXFGcrxGo5VR2rB7t88hs=", "owner": "ipetkov", "repo": "crane", - "rev": "2a5136f14a9ac93d9d370d64a36026c5de3ae8a4", + "rev": "afdcd41180e3dfe4dac46b5ee396e3b12ccc967a", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1703134684, - "narHash": "sha256-SQmng1EnBFLzS7WSRyPM9HgmZP2kLJcPAz+Ug/nug6o=", + "lastModified": 1703499205, + "narHash": "sha256-lF9rK5mSUfIZJgZxC3ge40tp1gmyyOXZ+lRY3P8bfbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d6863cbcbbb80e71cecfc03356db1cda38919523", + "rev": "e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870", "type": "github" }, "original": { From 4c7649481dad1f61819f19096a6a46db3eaec02b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jan 2024 00:23:12 +0000 Subject: [PATCH 056/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/afdcd41180e3dfe4dac46b5ee396e3b12ccc967a' (2023-12-24) → 'github:ipetkov/crane/0efe36f9232e0961512572883ba9c995aa1f54b1' (2024-01-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870' (2023-12-25) → 'github:NixOS/nixpkgs/63143ac2c9186be6d9da6035fa22620018c85932' (2024-01-02) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 04dbd79d1f..7d9ad614e5 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1703439018, - "narHash": "sha256-VT+06ft/x3eMZ1MJxWzQP3zXFGcrxGo5VR2rB7t88hs=", + "lastModified": 1704300976, + "narHash": "sha256-QLMpTrHxsND2T8+khAhLCqzOY/h2SzWS0s4Z7N2ds/E=", "owner": "ipetkov", "repo": "crane", - "rev": "afdcd41180e3dfe4dac46b5ee396e3b12ccc967a", + "rev": "0efe36f9232e0961512572883ba9c995aa1f54b1", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1703499205, - "narHash": "sha256-lF9rK5mSUfIZJgZxC3ge40tp1gmyyOXZ+lRY3P8bfbg=", + "lastModified": 1704161960, + "narHash": "sha256-QGua89Pmq+FBAro8NriTuoO/wNaUtugt29/qqA8zeeM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870", + "rev": "63143ac2c9186be6d9da6035fa22620018c85932", "type": "github" }, "original": { From 85f432370114793b31df05087c97a9e9ba54b3cb Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Tue, 9 Jan 2024 17:36:22 +0100 Subject: [PATCH 057/154] chore(ci): extend pytest coverage to python 3.12 --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index dfa88a68a7..8a68980c1b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -64,7 +64,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] os: [ubuntu-latest, macOS-latest] steps: - uses: actions/checkout@v3 From 9ae970ae65c73737fa53ff6ed757151faad05a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:24:30 +0100 Subject: [PATCH 058/154] chore(pdm): update lock-file format via `pdm lock --refresh` --- pdm.lock | 354 ++++++++++++++++++++++++++----------------------------- 1 file changed, 169 insertions(+), 185 deletions(-) diff --git a/pdm.lock b/pdm.lock index ff4f6ffb6d..fabafc3fd9 100644 --- a/pdm.lock +++ b/pdm.lock @@ -1,17 +1,30 @@ # This file is @generated by PDM. # It is not intended for manual editing. +[metadata] +groups = ["default", "dev", "test"] +strategy = ["cross_platform"] +lock_version = "4.4" +content_hash = "sha256:89f0d91473a6f96a2f787599046c913a9b1f7a9b0b57800d59610c80d211ddbe" + [[package]] name = "atomicwrites" version = "1.4.1" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" summary = "Atomic file writes." +files = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] [[package]] name = "attrs" version = "23.1.0" requires_python = ">=3.7" summary = "Classes Without Boilerplate" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] [[package]] name = "black" @@ -27,12 +40,40 @@ dependencies = [ "tomli>=1.1.0; python_version < \"3.11\"", "typing-extensions>=3.10.0.0; python_version < \"3.10\"", ] +files = [ + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, +] [[package]] name = "cfgv" version = "3.3.1" requires_python = ">=3.6.1" summary = "Validate configuration and produce human readable error messages." +files = [ + {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, + {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, +] [[package]] name = "click" @@ -42,41 +83,69 @@ summary = "Composable command line interface toolkit" dependencies = [ "colorama; platform_system == \"Windows\"", ] +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] [[package]] name = "colorama" version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "distlib" version = "0.3.6" summary = "Distribution utilities" +files = [ + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, +] [[package]] name = "filelock" version = "3.12.0" requires_python = ">=3.7" summary = "A platform independent file lock." +files = [ + {file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, + {file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, +] [[package]] name = "identify" version = "2.5.24" requires_python = ">=3.7" summary = "File identification library for Python" +files = [ + {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, + {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, +] [[package]] name = "iniconfig" version = "2.0.0" requires_python = ">=3.7" summary = "brain-dead simple config-ini parsing" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "mypy-extensions" version = "1.0.0" requires_python = ">=3.5" summary = "Type system extensions for programs checked with the mypy type checker." +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] [[package]] name = "nodeenv" @@ -86,30 +155,50 @@ summary = "Node.js virtual environment builder" dependencies = [ "setuptools", ] +files = [ + {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, + {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, +] [[package]] name = "packaging" version = "23.1" requires_python = ">=3.7" summary = "Core utilities for Python packages" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] [[package]] name = "pathspec" version = "0.11.1" requires_python = ">=3.7" summary = "Utility library for gitignore style pattern matching of file paths." +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, +] [[package]] name = "platformdirs" version = "3.5.0" requires_python = ">=3.7" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +files = [ + {file = "platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, + {file = "platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, +] [[package]] name = "pluggy" version = "1.0.0" requires_python = ">=3.6" summary = "plugin and hook calling mechanisms for python" +files = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] [[package]] name = "pre-commit" @@ -123,12 +212,20 @@ dependencies = [ "pyyaml>=5.1", "virtualenv>=20.10.0", ] +files = [ + {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, + {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, +] [[package]] name = "py" version = "1.11.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" summary = "library with cross-python path, ini-parsing, io, code, log facilities" +files = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] [[package]] name = "pyright" @@ -138,6 +235,10 @@ summary = "Command line wrapper for pyright" dependencies = [ "nodeenv>=1.6.0", ] +files = [ + {file = "pyright-1.1.306-py3-none-any.whl", hash = "sha256:008eb2a29584ae274a154d749cf81476a3073fb562a462eac8d43a753378b9db"}, + {file = "pyright-1.1.306.tar.gz", hash = "sha256:16d5d198be64de497d5f9002000a271176c381e21b977ca5566cf779b643c9ed"}, +] [[package]] name = "pytest" @@ -154,36 +255,101 @@ dependencies = [ "py>=1.8.2", "tomli>=1.0.0", ] +files = [ + {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, + {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, +] [[package]] name = "pyyaml" version = "6.0" requires_python = ">=3.6" summary = "YAML parser and emitter for Python" +files = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] [[package]] name = "ruff" version = "0.0.264" requires_python = ">=3.7" summary = "An extremely fast Python linter, written in Rust." +files = [ + {file = "ruff-0.0.264-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:ec2fa192c035b8b68cc2b91049c561cd69543e2b8c4d157d9aa7727320bedcca"}, + {file = "ruff-0.0.264-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d97ba8db0fb601ffe9ee996ebb97c698e427a2fd4514fefbe7b803111354f783"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4564e0f245eb515c6ed63988c21e9c40bcfd485cd1ec63bdd790f9a81d301f15"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:323ae6c1702b26c96d0fbf939c5959c37e79021f86b70f63634df918bc77f36e"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18a29ed37bf8cfe6dce8a2db56c313a64c0804095108753621f3c3321e0c9c5f"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d628de91e2be7a83128526636097d2dd890669a06143f826f6c591d79aeefbc4"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c6eb4f979b661a2dd850d9ac803842bb7b66d4926de84f09c787af82590f73"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04ec5d75e4bca754cedd20d53e2ba4920d6259e7579abfb2e8e30c3c80e41b17"}, + {file = "ruff-0.0.264-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71fd865ebacc1083259b3fb7e3eb45235a86e62e21830b8a6b067be0ec54aa2e"}, + {file = "ruff-0.0.264-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cd4f60ffc3eb15802c554a9c8581bf2117c4d3d06fbc57e0ba58f04cb1aaa47f"}, + {file = "ruff-0.0.264-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:05ee163a046fc593d150179d23f4af447fb82f3e59cd34e031ea0868c65bb8e8"}, + {file = "ruff-0.0.264-py3-none-musllinux_1_2_i686.whl", hash = "sha256:484e395d1984ab9e1e66bd42e7a5192decfee86998d07d36ee50b2fadccc8734"}, + {file = "ruff-0.0.264-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:67326fdc9ac0a1b13e229c6e24e8d115863c52cd710faaaaa588851535281d6c"}, + {file = "ruff-0.0.264-py3-none-win32.whl", hash = "sha256:5a8658ebcc37d62f72840cbdf564171c1a2b6831db482b4d917962541a2f4a44"}, + {file = "ruff-0.0.264-py3-none-win_amd64.whl", hash = "sha256:068a82a29d80848a56e3d9d4308e6e0ca8b2ecdaf5ac342a292545a59b7f2c21"}, + {file = "ruff-0.0.264-py3-none-win_arm64.whl", hash = "sha256:3e2c38449548e122f2612843a7c04e22b4fd491656955c57b8cb05df11639ad6"}, + {file = "ruff-0.0.264.tar.gz", hash = "sha256:8fcd4b693ca1374eb7a5796581c90689f884f98f388740d94f0702fd30f8f78f"}, +] [[package]] name = "setuptools" version = "67.7.2" requires_python = ">=3.7" summary = "Easily download, build, install, upgrade, and uninstall Python packages" +files = [ + {file = "setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, + {file = "setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, +] [[package]] name = "tomli" version = "2.0.1" requires_python = ">=3.7" summary = "A lil' TOML parser" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] [[package]] name = "typing-extensions" version = "4.5.0" requires_python = ">=3.7" summary = "Backported and Experimental Type Hints for Python 3.7+" +files = [ + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, +] [[package]] name = "virtualenv" @@ -195,189 +361,7 @@ dependencies = [ "filelock<4,>=3.11", "platformdirs<4,>=3.2", ] - -[metadata] -lock_version = "4.2" -groups = ["default", "dev", "test"] -content_hash = "sha256:89f0d91473a6f96a2f787599046c913a9b1f7a9b0b57800d59610c80d211ddbe" - -[metadata.files] -"atomicwrites 1.4.1" = [ - {url = "https://files.pythonhosted.org/packages/87/c6/53da25344e3e3a9c01095a89f16dbcda021c609ddb42dd6d7c0528236fb2/atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] -"attrs 23.1.0" = [ - {url = "https://files.pythonhosted.org/packages/97/90/81f95d5f705be17872843536b1868f351805acf6971251ff07c1b8334dbb/attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, - {url = "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, -] -"black 23.3.0" = [ - {url = "https://files.pythonhosted.org/packages/06/1e/273d610249f0335afb1ddb03664a03223f4826e3d1a95170a0142cb19fb4/black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {url = "https://files.pythonhosted.org/packages/12/4b/99c71d1cf1353edd5aff2700b8960f92e9b805c9dab72639b67dbb449d3a/black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {url = "https://files.pythonhosted.org/packages/13/0a/ed8b66c299e896780e4528eed4018f5b084da3b9ba4ee48328550567d866/black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {url = "https://files.pythonhosted.org/packages/13/25/cfa06788d0a936f2445af88f13604b5bcd5c9d050db618c718e6ebe66f74/black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {url = "https://files.pythonhosted.org/packages/21/14/d5a2bec5fb15f9118baab7123d344646fac0b1c6939d51c2b05259cd2d9c/black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {url = "https://files.pythonhosted.org/packages/24/eb/2d2d2c27cb64cfd073896f62a952a802cd83cf943a692a2f278525b57ca9/black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {url = "https://files.pythonhosted.org/packages/27/70/07aab2623cfd3789786f17e051487a41d5657258c7b1ef8f780512ffea9c/black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {url = "https://files.pythonhosted.org/packages/29/b1/b584fc863c155653963039664a592b3327b002405043b7e761b9b0212337/black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {url = "https://files.pythonhosted.org/packages/3c/d7/85f3d79f9e543402de2244c4d117793f262149e404ea0168841613c33e07/black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {url = "https://files.pythonhosted.org/packages/3f/0d/81dd4194ce7057c199d4f28e4c2a885082d9d929e7a55c514b23784f7787/black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {url = "https://files.pythonhosted.org/packages/49/36/15d2122f90ff1cd70f06892ebda777b650218cf84b56b5916a993dc1359a/black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {url = "https://files.pythonhosted.org/packages/49/d7/f3b7da6c772800f5375aeb050a3dcf682f0bbeb41d313c9c2820d0156e4e/black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {url = "https://files.pythonhosted.org/packages/69/49/7e1f0cf585b0d607aad3f971f95982cc4208fc77f92363d632d23021ee57/black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {url = "https://files.pythonhosted.org/packages/6d/b4/0f13ab7f5e364795ff82b76b0f9a4c9c50afda6f1e2feeb8b03fdd7ec57d/black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {url = "https://files.pythonhosted.org/packages/ad/e7/4642b7f462381799393fbad894ba4b32db00870a797f0616c197b07129a9/black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {url = "https://files.pythonhosted.org/packages/c0/53/42e312c17cfda5c8fc4b6b396a508218807a3fcbb963b318e49d3ddd11d5/black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {url = "https://files.pythonhosted.org/packages/ca/44/eb41edd3f558a6139f09eee052dead4a7a464e563b822ddf236f5a8ee286/black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {url = "https://files.pythonhosted.org/packages/ce/f4/2b0c6ac9e1f8584296747f66dd511898b4ebd51d6510dba118279bff53b6/black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {url = "https://files.pythonhosted.org/packages/d1/6e/5810b6992ed70403124c67e8b3f62858a32b35405177553f1a78ed6b6e31/black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {url = "https://files.pythonhosted.org/packages/d6/36/66370f5017b100225ec4950a60caeef60201a10080da57ddb24124453fba/black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, - {url = "https://files.pythonhosted.org/packages/d7/6f/d3832960a3b646b333b7f0d80d336a3c123012e9d9d5dba4a622b2b6181d/black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {url = "https://files.pythonhosted.org/packages/db/f4/7908f71cc71da08df1317a3619f002cbf91927fb5d3ffc7723905a2113f7/black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {url = "https://files.pythonhosted.org/packages/de/b4/76f152c5eb0be5471c22cd18380d31d188930377a1a57969073b89d6615d/black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {url = "https://files.pythonhosted.org/packages/eb/a5/17b40bfd9b607b69fa726b0b3a473d14b093dcd5191ea1a1dd664eccfee3/black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {url = "https://files.pythonhosted.org/packages/fd/5b/fc2d7922c1a6bb49458d424b5be71d251f2d0dc97be9534e35d171bdc653/black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, -] -"cfgv 3.3.1" = [ - {url = "https://files.pythonhosted.org/packages/6d/82/0a0ebd35bae9981dea55c06f8e6aaf44a49171ad798795c72c6f64cba4c2/cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {url = "https://files.pythonhosted.org/packages/c4/bf/d0d622b660d414a47dc7f0d303791a627663f554345b21250e39e7acb48b/cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, -] -"click 8.1.3" = [ - {url = "https://files.pythonhosted.org/packages/59/87/84326af34517fca8c58418d148f2403df25303e02736832403587318e9e8/click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, - {url = "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, -] -"colorama 0.4.6" = [ - {url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] -"distlib 0.3.6" = [ - {url = "https://files.pythonhosted.org/packages/58/07/815476ae605bcc5f95c87a62b95e74a1bce0878bc7a3119bc2bf4178f175/distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, - {url = "https://files.pythonhosted.org/packages/76/cb/6bbd2b10170ed991cf64e8c8b85e01f2fb38f95d1bc77617569e0b0b26ac/distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, -] -"filelock 3.12.0" = [ - {url = "https://files.pythonhosted.org/packages/24/85/cf4df939cc0a037ebfe18353005e775916faec24dcdbc7a2f6539ad9d943/filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, - {url = "https://files.pythonhosted.org/packages/ad/73/b094a662ae05cdc4ec95bc54e434e307986a5de5960166b8161b7c1373ee/filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, -] -"identify 2.5.24" = [ - {url = "https://files.pythonhosted.org/packages/4f/fd/2c46fba2bc032ba4c970bb8de59d25187087d7138a0ebf7c1dcc91d94f01/identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, - {url = "https://files.pythonhosted.org/packages/c4/f8/498e13e408d25ee6ff04aa0acbf91ad8e9caae74be91720fc0e811e649b7/identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, -] -"iniconfig 2.0.0" = [ - {url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, - {url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, -] -"mypy-extensions 1.0.0" = [ - {url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] -"nodeenv 1.7.0" = [ - {url = "https://files.pythonhosted.org/packages/96/a8/d3b5baead78adadacb99e7281b3e842126da825cf53df61688cfc8b8ff91/nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {url = "https://files.pythonhosted.org/packages/f3/9d/a28ecbd1721cd6c0ea65da6bfb2771d31c5d7e32d916a8f643b062530af3/nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, -] -"packaging 23.1" = [ - {url = "https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {url = "https://files.pythonhosted.org/packages/b9/6c/7c6658d258d7971c5eb0d9b69fa9265879ec9a9158031206d47800ae2213/packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, -] -"pathspec 0.11.1" = [ - {url = "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, - {url = "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, -] -"platformdirs 3.5.0" = [ - {url = "https://files.pythonhosted.org/packages/91/17/3836ffe140abb245726d0e21c5b9b984e2569e7027c20d12e969ec69bd8a/platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, - {url = "https://files.pythonhosted.org/packages/ce/cf/279b73aae00f7ba9d5d7664156ef323ebbf16fb556285bb223ecc45031aa/platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, -] -"pluggy 1.0.0" = [ - {url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -"pre-commit 2.21.0" = [ - {url = "https://files.pythonhosted.org/packages/6b/00/1637ae945c6e10838ef5c41965f1c864e59301811bb203e979f335608e7c/pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, - {url = "https://files.pythonhosted.org/packages/a6/6b/6cfe3a8b351b54f4b6c6d2ad4286804e3367f628dce379c603d3b96635f4/pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, -] -"py 1.11.0" = [ - {url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, - {url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, -] -"pyright 1.1.306" = [ - {url = "https://files.pythonhosted.org/packages/91/0a/8e5bfa6079f8240da3bcb02780583f808e431e3e79627c2748b96919ee11/pyright-1.1.306-py3-none-any.whl", hash = "sha256:008eb2a29584ae274a154d749cf81476a3073fb562a462eac8d43a753378b9db"}, - {url = "https://files.pythonhosted.org/packages/9c/65/e12aee503b6093a22e1e01254a37bf5115bce8f62d67a6bd27fb81196c7f/pyright-1.1.306.tar.gz", hash = "sha256:16d5d198be64de497d5f9002000a271176c381e21b977ca5566cf779b643c9ed"}, -] -"pytest 7.0.1" = [ - {url = "https://files.pythonhosted.org/packages/38/93/c7c0bd1e932b287fb948eb9ce5a3d6307c9fc619db1e199f8c8bc5dad95f/pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, - {url = "https://files.pythonhosted.org/packages/3e/2c/a67ad48759051c7abf82ce182a4e6d766de371b183182d2dde03089e8dfb/pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, -] -"pyyaml 6.0" = [ - {url = "https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {url = "https://files.pythonhosted.org/packages/08/f4/ffa743f860f34a5e8c60abaaa686f82c9ac7a2b50e5a1c3b1eb564d59159/PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {url = "https://files.pythonhosted.org/packages/0f/93/5f81d1925ce3b531f5ff215376445ec220887cd1c9a8bde23759554dbdfd/PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {url = "https://files.pythonhosted.org/packages/12/fc/a4d5a7554e0067677823f7265cb3ae22aed8a238560b5133b58cda252dad/PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {url = "https://files.pythonhosted.org/packages/21/67/b42191239c5650c9e419c4a08a7a022bbf1abf55b0391c380a72c3af5462/PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {url = "https://files.pythonhosted.org/packages/2e/b3/13dfd4eeb5e4b2d686b6d1822b40702e991bf3a4194ca5cbcce8d43749db/PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {url = "https://files.pythonhosted.org/packages/36/2b/61d51a2c4f25ef062ae3f74576b01638bebad5e045f747ff12643df63844/PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, - {url = "https://files.pythonhosted.org/packages/44/e5/4fea13230bcebf24b28c0efd774a2dd65a0937a2d39e94a4503438b078ed/PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {url = "https://files.pythonhosted.org/packages/4d/7d/c2ab8da648cd2b937de11fb35649b127adab4851cbeaf5fd9b60a2dab0f7/PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {url = "https://files.pythonhosted.org/packages/55/e3/507a92589994a5b3c3d7f2a7a066339d6ff61c5c839bae56f7eff03d9c7b/PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {url = "https://files.pythonhosted.org/packages/56/8f/e8b49ad21d26111493dc2d5cae4d7efbd0e2e065440665f5023515f87f64/PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {url = "https://files.pythonhosted.org/packages/59/00/30e33fcd2a4562cd40c49c7740881009240c5cbbc0e41ca79ca4bba7c24b/PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {url = "https://files.pythonhosted.org/packages/5e/f4/7b4bb01873be78fc9fde307f38f62e380b7111862c165372cf094ca2b093/PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {url = "https://files.pythonhosted.org/packages/63/6b/f5dc7942bac17192f4ef00b2d0cdd1ae45eea453d05c1944c0573debe945/PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {url = "https://files.pythonhosted.org/packages/67/d4/b95266228a25ef5bd70984c08b4efce2c035a4baa5ccafa827b266e3dc36/PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {url = "https://files.pythonhosted.org/packages/68/3f/c027422e49433239267c62323fbc6320d6ac8d7d50cf0cb2a376260dad5f/PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {url = "https://files.pythonhosted.org/packages/6c/3d/524c642f3db37e7e7ab8d13a3f8b0c72d04a619abc19100097d987378fc6/PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {url = "https://files.pythonhosted.org/packages/74/68/3c13deaa496c14a030c431b7b828d6b343f79eb241b4848c7918091a64a2/PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {url = "https://files.pythonhosted.org/packages/77/da/e845437ffe0dffae4e7562faf23a4f264d886431c5d2a2816c853288dc8e/PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {url = "https://files.pythonhosted.org/packages/7f/d9/6a0d14ac8d3b5605dc925d177c1d21ee9f0b7b39287799db1e50d197b2f4/PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {url = "https://files.pythonhosted.org/packages/81/59/561f7e46916b78f3c4cab8d0c307c81656f11e32c846c0c97fda0019ed76/PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {url = "https://files.pythonhosted.org/packages/89/26/0bfd7b756b34c68f8fd158b7bc762b6b1705fc1b3cebf4cdbb53fd9ea75b/PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {url = "https://files.pythonhosted.org/packages/91/49/d46d7b15cddfa98533e89f3832f391aedf7e31f37b4d4df3a7a7855a7073/PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {url = "https://files.pythonhosted.org/packages/9d/f6/7e91fbb58c9ee528759aea5892e062cccb426720c5830ddcce92eba00ff1/PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {url = "https://files.pythonhosted.org/packages/a4/ba/e508fc780e3c94c12753a54fe8f74de535741a10d33b29a576a9bec03500/PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {url = "https://files.pythonhosted.org/packages/a4/e6/4d7a01bc0730c8f958a62d6a4c4f3df23b6139ad68c132b168970d84f192/PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {url = "https://files.pythonhosted.org/packages/a8/32/1bbe38477fb23f1d83041fefeabf93ef1cd6f0efcf44c221519507315d92/PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {url = "https://files.pythonhosted.org/packages/a8/5b/c4d674846ea4b07ee239fbf6010bcc427c4e4552ba5655b446e36b9a40a7/PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {url = "https://files.pythonhosted.org/packages/b3/85/79b9e5b4e8d3c0ac657f4e8617713cca8408f6cdc65d2ee6554217cedff1/PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {url = "https://files.pythonhosted.org/packages/b7/09/2f6f4851bbca08642fef087bade095edc3c47f28d1e7bff6b20de5262a77/PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {url = "https://files.pythonhosted.org/packages/cb/5f/05dd91f5046e2256e35d885f3b8f0f280148568f08e1bf20421887523e9a/PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {url = "https://files.pythonhosted.org/packages/d1/c0/4fe04181b0210ee2647cfbb89ecd10a36eef89f10d8aca6a192c201bbe58/PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {url = "https://files.pythonhosted.org/packages/d7/42/7ad4b6d67a16229496d4f6e74201bdbebcf4bc1e87d5a70c9297d4961bd2/PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {url = "https://files.pythonhosted.org/packages/db/4e/74bc723f2d22677387ab90cd9139e62874d14211be7172ed8c9f9a7c81a9/PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {url = "https://files.pythonhosted.org/packages/df/75/ee0565bbf65133e5b6ffa154db43544af96ea4c42439e6b58c1e0eb44b4e/PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {url = "https://files.pythonhosted.org/packages/eb/5f/6e6fe6904e1a9c67bc2ca5629a69e7a5a0b17f079da838bab98a1e548b25/PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {url = "https://files.pythonhosted.org/packages/ef/ad/b443cce94539e57e1a745a845f95c100ad7b97593d7e104051e43f730ecd/PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {url = "https://files.pythonhosted.org/packages/f5/6f/b8b4515346af7c33d3b07cd8ca8ea0700ca72e8d7a750b2b87ac0268ca4e/PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {url = "https://files.pythonhosted.org/packages/f8/54/799b059314b13e1063473f76e908f44106014d18f54b16c83a16edccd5ec/PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {url = "https://files.pythonhosted.org/packages/fc/48/531ecd926fe0a374346dd811bf1eda59a95583595bb80eadad511f3269b8/PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, -] -"ruff 0.0.264" = [ - {url = "https://files.pythonhosted.org/packages/1e/0e/375fde351cb0531470ad6b437cb1bbb6ce83cb0f6e01d0fd68680e3cfeff/ruff-0.0.264-py3-none-win32.whl", hash = "sha256:5a8658ebcc37d62f72840cbdf564171c1a2b6831db482b4d917962541a2f4a44"}, - {url = "https://files.pythonhosted.org/packages/23/dc/51ee0cd6d2c3c8e0ddc6531c7a8909c5df5f5f21d091854e9ff4293a7466/ruff-0.0.264-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d628de91e2be7a83128526636097d2dd890669a06143f826f6c591d79aeefbc4"}, - {url = "https://files.pythonhosted.org/packages/31/84/b47957fa69018359dfbc350e28404a78f20a6cf213b580eff737784e3389/ruff-0.0.264-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cd4f60ffc3eb15802c554a9c8581bf2117c4d3d06fbc57e0ba58f04cb1aaa47f"}, - {url = "https://files.pythonhosted.org/packages/37/6f/4aeda64a401beecf560381961efd8a01d6d53d1e095b084b77f31e410dca/ruff-0.0.264-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c6eb4f979b661a2dd850d9ac803842bb7b66d4926de84f09c787af82590f73"}, - {url = "https://files.pythonhosted.org/packages/37/f1/c4023c9dc501d7e49fe939fd86a287c02cf044be6f6cece359218c2ea025/ruff-0.0.264-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71fd865ebacc1083259b3fb7e3eb45235a86e62e21830b8a6b067be0ec54aa2e"}, - {url = "https://files.pythonhosted.org/packages/57/eb/ec0dd02cfd07b7f725d5ba18edcbe1f1228b89d650eb72f50049c75f1df2/ruff-0.0.264-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04ec5d75e4bca754cedd20d53e2ba4920d6259e7579abfb2e8e30c3c80e41b17"}, - {url = "https://files.pythonhosted.org/packages/64/a9/0ab814985bc90c19e7ac8ba53406c8f2f535739fff3a749e83a0573420ae/ruff-0.0.264-py3-none-musllinux_1_2_i686.whl", hash = "sha256:484e395d1984ab9e1e66bd42e7a5192decfee86998d07d36ee50b2fadccc8734"}, - {url = "https://files.pythonhosted.org/packages/68/1d/f6fbf3b023b0c86c372ebe31907e18a3fc22ee3f6e00ea534e530aa48466/ruff-0.0.264-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4564e0f245eb515c6ed63988c21e9c40bcfd485cd1ec63bdd790f9a81d301f15"}, - {url = "https://files.pythonhosted.org/packages/6a/18/9809f9c1008a9f0cf1cbfc400b46649f1631eebe4dc6f9421f7178c361f8/ruff-0.0.264-py3-none-win_arm64.whl", hash = "sha256:3e2c38449548e122f2612843a7c04e22b4fd491656955c57b8cb05df11639ad6"}, - {url = "https://files.pythonhosted.org/packages/78/40/6a33d40d0bd48adce97775ed68b06922c95dba8076bb6db7ab320f6b9002/ruff-0.0.264-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:323ae6c1702b26c96d0fbf939c5959c37e79021f86b70f63634df918bc77f36e"}, - {url = "https://files.pythonhosted.org/packages/8a/e0/3cc67b6f9b9f20c04f1237a6192b19343309d3c2605930ea2472eb2f81fe/ruff-0.0.264-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18a29ed37bf8cfe6dce8a2db56c313a64c0804095108753621f3c3321e0c9c5f"}, - {url = "https://files.pythonhosted.org/packages/a3/82/2cb89c8afffb03201cbdd19529ed5b3338705d5c6fb2b76830d3d1955f17/ruff-0.0.264-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d97ba8db0fb601ffe9ee996ebb97c698e427a2fd4514fefbe7b803111354f783"}, - {url = "https://files.pythonhosted.org/packages/b2/95/bb0befe3eb5fc7ae4bfde2f4162323bf55136a106fd0685378c35a89e1bb/ruff-0.0.264-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:67326fdc9ac0a1b13e229c6e24e8d115863c52cd710faaaaa588851535281d6c"}, - {url = "https://files.pythonhosted.org/packages/be/b3/bcf54b0ddf6e0e75ebe7fbe3bb1c7786647f1aac3ed60e128863129b3b4a/ruff-0.0.264-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:ec2fa192c035b8b68cc2b91049c561cd69543e2b8c4d157d9aa7727320bedcca"}, - {url = "https://files.pythonhosted.org/packages/c2/a9/7c1b194946f1460ffbf26d9d25649c6ec4119982552936b3ce4425b7cae7/ruff-0.0.264-py3-none-win_amd64.whl", hash = "sha256:068a82a29d80848a56e3d9d4308e6e0ca8b2ecdaf5ac342a292545a59b7f2c21"}, - {url = "https://files.pythonhosted.org/packages/c6/06/3ed1d46e1e2a71d5b88b0087a994642730e5c1396425dd31d017463e0614/ruff-0.0.264.tar.gz", hash = "sha256:8fcd4b693ca1374eb7a5796581c90689f884f98f388740d94f0702fd30f8f78f"}, - {url = "https://files.pythonhosted.org/packages/fb/60/2f4f5170c58d70e4600d71c91e76b83a25ec31dfd2eb939e0805c1bbe6d2/ruff-0.0.264-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:05ee163a046fc593d150179d23f4af447fb82f3e59cd34e031ea0868c65bb8e8"}, -] -"setuptools 67.7.2" = [ - {url = "https://files.pythonhosted.org/packages/2f/8c/f336a966d4097c7cef6fc699b2ecb83b5fb63fd698198c1b5c7905a74f0f/setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, - {url = "https://files.pythonhosted.org/packages/fd/53/e5d7ae40d03e4ed20b7cba317cf9c0c97097c8debb39f9d72d182a6578a2/setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, -] -"tomli 2.0.1" = [ - {url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -"typing-extensions 4.5.0" = [ - {url = "https://files.pythonhosted.org/packages/31/25/5abcd82372d3d4a3932e1fa8c3dbf9efac10cc7c0d16e78467460571b404/typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {url = "https://files.pythonhosted.org/packages/d3/20/06270dac7316220643c32ae61694e451c98f8caf4c8eab3aa80a2bedf0df/typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, -] -"virtualenv 20.23.0" = [ - {url = "https://files.pythonhosted.org/packages/d6/37/3ff25b2ad0d51cfd752dc68ee0ad4387f058a5ceba4d89b47ac478de3f59/virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, - {url = "https://files.pythonhosted.org/packages/f1/0a/18755fa6aec794fd539b050beeaa905fa5c77c64356aa8bdecb62c01581a/virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, +files = [ + {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, + {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, ] From 7716190fb491c6528b031400f9c4311030c4b9a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:40:28 +0100 Subject: [PATCH 059/154] chore(pdm): override pyyaml version to support Python 3.12 --- pdm.lock | 70 ++++++++++++++++++++++++++++---------------------- pyproject.toml | 3 +++ 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/pdm.lock b/pdm.lock index fabafc3fd9..8f928585b8 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev", "test"] strategy = ["cross_platform"] lock_version = "4.4" -content_hash = "sha256:89f0d91473a6f96a2f787599046c913a9b1f7a9b0b57800d59610c80d211ddbe" +content_hash = "sha256:059c14537cbb124d6a6d0a3efcf15ed933cada57de74904f7048c38992d060f1" [[package]] name = "atomicwrites" @@ -262,38 +262,48 @@ files = [ [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" requires_python = ">=3.6" summary = "YAML parser and emitter for Python" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 83b4ee7742..014a49a83e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,9 @@ test = [ "pytest ~= 7.0.0", ] +[tool.pdm.resolution.overrides] +pyyaml = "~= 6.0.1" # For Python 3.12 compatibility + [build-system] requires = ["maturin>=0.14,<0.15"] build-backend = "maturin" From 88a7b81f2753439023cd0c6adf61676216fd0fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:40:52 +0100 Subject: [PATCH 060/154] chore(nix): install rust toolchain in the shell environment --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 1d16323312..af80874a6b 100644 --- a/flake.nix +++ b/flake.nix @@ -93,6 +93,8 @@ maturin pdm ruff + rustc + cargo ]; }; From 8c217b354f501d4baafd87bf33de829bc339fd5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Jan 2024 00:23:46 +0000 Subject: [PATCH 061/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/0efe36f9232e0961512572883ba9c995aa1f54b1' (2024-01-03) → 'github:ipetkov/crane/5c234301a1277e4cc759c23a2a7a00a06ddd7111' (2024-01-09) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/63143ac2c9186be6d9da6035fa22620018c85932' (2024-01-02) → 'github:NixOS/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 7d9ad614e5..3cc8707ee0 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1704300976, - "narHash": "sha256-QLMpTrHxsND2T8+khAhLCqzOY/h2SzWS0s4Z7N2ds/E=", + "lastModified": 1704819371, + "narHash": "sha256-oFUfPWrWGQTZaCM3byxwYwrMLwshDxVGOrMH5cVP/X8=", "owner": "ipetkov", "repo": "crane", - "rev": "0efe36f9232e0961512572883ba9c995aa1f54b1", + "rev": "5c234301a1277e4cc759c23a2a7a00a06ddd7111", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1704161960, - "narHash": "sha256-QGua89Pmq+FBAro8NriTuoO/wNaUtugt29/qqA8zeeM=", + "lastModified": 1704842529, + "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "63143ac2c9186be6d9da6035fa22620018c85932", + "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", "type": "github" }, "original": { From e559e20eb04dff7adb0531e69b0eddd69c763982 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Mon, 15 Jan 2024 14:02:44 +0100 Subject: [PATCH 062/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/a5fb72de318a74eb69a2c241c0e46705684a35d0' (2023-12-21) → 'github:rustsec/advisory-db/826f71c4027a6db6ecf870fdd541814041fc8e1e' (2024-01-14) • Updated input 'flake-utils': 'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04) → 'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09) → 'github:NixOS/nixpkgs/ea780f3de2d169f982564128804841500e85e373' (2024-01-14) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 3cc8707ee0..f51e256270 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1703184318, - "narHash": "sha256-vx2/goSpegxiFc7e1jKNHzBkhnsIQjriV4GZLaVe17M=", + "lastModified": 1705203771, + "narHash": "sha256-2SApzyw9lm1Dfq+mxLf6JsEVb1hJ5pwR5osd58dj0aQ=", "owner": "rustsec", "repo": "advisory-db", - "rev": "a5fb72de318a74eb69a2c241c0e46705684a35d0", + "rev": "826f71c4027a6db6ecf870fdd541814041fc8e1e", "type": "github" }, "original": { @@ -41,11 +41,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1704842529, - "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "lastModified": 1705242415, + "narHash": "sha256-a8DRYrNrzTudvO7XHUPNJD89Wbf1ZZT0VbwCsPnHWaE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "rev": "ea780f3de2d169f982564128804841500e85e373", "type": "github" }, "original": { From 5ffca1b472d5523e1fc233ac938bbc67aa5648df Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Tue, 16 Jan 2024 11:56:01 +0100 Subject: [PATCH 063/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-filter': 'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04) → 'github:numtide/nix-filter/3449dc925982ad46246cfc36469baf66e1b64f17' (2024-01-15) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ea780f3de2d169f982564128804841500e85e373' (2024-01-14) → 'github:NixOS/nixpkgs/e0629618b4b419a47e2c8a3cab223e2a7f3a8f97' (2024-01-15) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index f51e256270..bc2da11edf 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1701697642, - "narHash": "sha256-L217WytWZHSY8GW9Gx1A64OnNctbuDbfslaTEofXXRw=", + "lastModified": 1705332318, + "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=", "owner": "numtide", "repo": "nix-filter", - "rev": "c843418ecfd0344ecb85844b082ff5675e02c443", + "rev": "3449dc925982ad46246cfc36469baf66e1b64f17", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705242415, - "narHash": "sha256-a8DRYrNrzTudvO7XHUPNJD89Wbf1ZZT0VbwCsPnHWaE=", + "lastModified": 1705303754, + "narHash": "sha256-loWkd7lUzSvGBU9xnva37iPB2rr5ulq1qBLT44KjzGA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea780f3de2d169f982564128804841500e85e373", + "rev": "e0629618b4b419a47e2c8a3cab223e2a7f3a8f97", "type": "github" }, "original": { From 909c85261bb50bfea3bd26914ddd262b03576b40 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Thu, 18 Jan 2024 20:32:53 +0100 Subject: [PATCH 064/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/826f71c4027a6db6ecf870fdd541814041fc8e1e' (2024-01-14) → 'github:rustsec/advisory-db/33acf3edda9c7b8a991b3a8007c1b2282932f262' (2024-01-17) • Updated input 'crane': 'github:ipetkov/crane/5c234301a1277e4cc759c23a2a7a00a06ddd7111' (2024-01-09) → 'github:ipetkov/crane/742170d82cd65c925dcddc5c3d6185699fbbad08' (2024-01-18) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/e0629618b4b419a47e2c8a3cab223e2a7f3a8f97' (2024-01-15) → 'github:NixOS/nixpkgs/b06ff4bf8f4ad900fe0c2a61fc2946edc3a84be7' (2024-01-18) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index bc2da11edf..19c162ea02 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1705203771, - "narHash": "sha256-2SApzyw9lm1Dfq+mxLf6JsEVb1hJ5pwR5osd58dj0aQ=", + "lastModified": 1705525424, + "narHash": "sha256-R5B1Wo6+0f3tsDEvsn2zt5Q0fHYAcRYtGv/SpjfAOms=", "owner": "rustsec", "repo": "advisory-db", - "rev": "826f71c4027a6db6ecf870fdd541814041fc8e1e", + "rev": "33acf3edda9c7b8a991b3a8007c1b2282932f262", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1704819371, - "narHash": "sha256-oFUfPWrWGQTZaCM3byxwYwrMLwshDxVGOrMH5cVP/X8=", + "lastModified": 1705597458, + "narHash": "sha256-vJ8Ib9ruxbaBxGEcA0d7dHqxpc6Z+SGR2XIxVeSMuLM=", "owner": "ipetkov", "repo": "crane", - "rev": "5c234301a1277e4cc759c23a2a7a00a06ddd7111", + "rev": "742170d82cd65c925dcddc5c3d6185699fbbad08", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705303754, - "narHash": "sha256-loWkd7lUzSvGBU9xnva37iPB2rr5ulq1qBLT44KjzGA=", + "lastModified": 1705566941, + "narHash": "sha256-CLNtVRDA8eUPk+bxsCCZtRO0Cp+SpHdn1nNOLoFypLs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0629618b4b419a47e2c8a3cab223e2a7f3a8f97", + "rev": "b06ff4bf8f4ad900fe0c2a61fc2946edc3a84be7", "type": "github" }, "original": { From f0fc4db422cd42b140d3197ccf587e892e281c10 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 21 Jan 2024 00:23:52 +0000 Subject: [PATCH 065/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/742170d82cd65c925dcddc5c3d6185699fbbad08' (2024-01-18) → 'github:ipetkov/crane/8f515142e805dc377cf8edb0ff75d14a11307f89' (2024-01-19) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/b06ff4bf8f4ad900fe0c2a61fc2946edc3a84be7' (2024-01-18) → 'github:NixOS/nixpkgs/e5d1c87f5813afde2dda384ac807c57a105721cc' (2024-01-19) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 19c162ea02..f7bab42070 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1705597458, - "narHash": "sha256-vJ8Ib9ruxbaBxGEcA0d7dHqxpc6Z+SGR2XIxVeSMuLM=", + "lastModified": 1705625727, + "narHash": "sha256-naMq6+TNLpEiBBjc0XaCbMLYJxJXWTZz4JGSpYGgIOM=", "owner": "ipetkov", "repo": "crane", - "rev": "742170d82cd65c925dcddc5c3d6185699fbbad08", + "rev": "8f515142e805dc377cf8edb0ff75d14a11307f89", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705566941, - "narHash": "sha256-CLNtVRDA8eUPk+bxsCCZtRO0Cp+SpHdn1nNOLoFypLs=", + "lastModified": 1705697961, + "narHash": "sha256-XepT3WS516evSFYkme3GrcI3+7uwXHqtHbip+t24J7E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b06ff4bf8f4ad900fe0c2a61fc2946edc3a84be7", + "rev": "e5d1c87f5813afde2dda384ac807c57a105721cc", "type": "github" }, "original": { From 7a456d00ae04d7e4c711f822dd8af5857daaaf4a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 Jan 2024 00:22:31 +0000 Subject: [PATCH 066/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/33acf3edda9c7b8a991b3a8007c1b2282932f262' (2024-01-17) → 'github:rustsec/advisory-db/1d2202ea2b32fabd3307641010301bfe187ef11a' (2024-01-24) • Updated input 'crane': 'github:ipetkov/crane/8f515142e805dc377cf8edb0ff75d14a11307f89' (2024-01-19) → 'github:ipetkov/crane/0327ca9d77695421b37e8caca7a35003adb8eade' (2024-01-27) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/e5d1c87f5813afde2dda384ac807c57a105721cc' (2024-01-19) → 'github:NixOS/nixpkgs/4fddc9be4eaf195d631333908f2a454b03628ee5' (2024-01-25) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index f7bab42070..fdcb059678 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1705525424, - "narHash": "sha256-R5B1Wo6+0f3tsDEvsn2zt5Q0fHYAcRYtGv/SpjfAOms=", + "lastModified": 1706115649, + "narHash": "sha256-Qrqb54qGaRsFdLDj8EJtI5leFGFfqWHLRgC+t6KWlpQ=", "owner": "rustsec", "repo": "advisory-db", - "rev": "33acf3edda9c7b8a991b3a8007c1b2282932f262", + "rev": "1d2202ea2b32fabd3307641010301bfe187ef11a", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1705625727, - "narHash": "sha256-naMq6+TNLpEiBBjc0XaCbMLYJxJXWTZz4JGSpYGgIOM=", + "lastModified": 1706377950, + "narHash": "sha256-qOLcz+XdZ7sR39+i6bjzJVKxc2TE1J49e/O0dwN63CY=", "owner": "ipetkov", "repo": "crane", - "rev": "8f515142e805dc377cf8edb0ff75d14a11307f89", + "rev": "0327ca9d77695421b37e8caca7a35003adb8eade", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705697961, - "narHash": "sha256-XepT3WS516evSFYkme3GrcI3+7uwXHqtHbip+t24J7E=", + "lastModified": 1706173671, + "narHash": "sha256-lciR7kQUK2FCAYuszyd7zyRRmTaXVeoZsCyK6QFpGdk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5d1c87f5813afde2dda384ac807c57a105721cc", + "rev": "4fddc9be4eaf195d631333908f2a454b03628ee5", "type": "github" }, "original": { From ae8193f03b7a2d6e98eecce50a93d33600930f55 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 4 Feb 2024 00:22:30 +0000 Subject: [PATCH 067/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/0327ca9d77695421b37e8caca7a35003adb8eade' (2024-01-27) → 'github:ipetkov/crane/b693ec872ea8511fc8c233022e4f0eabb43bd9be' (2024-02-03) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4fddc9be4eaf195d631333908f2a454b03628ee5' (2024-01-25) → 'github:NixOS/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index fdcb059678..24b24b5ccb 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1706377950, - "narHash": "sha256-qOLcz+XdZ7sR39+i6bjzJVKxc2TE1J49e/O0dwN63CY=", + "lastModified": 1706979728, + "narHash": "sha256-X4nEYqI4bpCFF/Ck1HV9RuBVVYcwIeW8MEkHw+UeoO4=", "owner": "ipetkov", "repo": "crane", - "rev": "0327ca9d77695421b37e8caca7a35003adb8eade", + "rev": "b693ec872ea8511fc8c233022e4f0eabb43bd9be", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706173671, - "narHash": "sha256-lciR7kQUK2FCAYuszyd7zyRRmTaXVeoZsCyK6QFpGdk=", + "lastModified": 1706925685, + "narHash": "sha256-hVInjWMmgH4yZgA4ZtbgJM1qEAel72SYhP5nOWX4UIM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4fddc9be4eaf195d631333908f2a454b03628ee5", + "rev": "79a13f1437e149dc7be2d1290c74d378dad60814", "type": "github" }, "original": { From ebfacce3bbb6c492657cab7ece5c1bb50f2913d8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 11 Feb 2024 00:22:39 +0000 Subject: [PATCH 068/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/1d2202ea2b32fabd3307641010301bfe187ef11a' (2024-01-24) → 'github:rustsec/advisory-db/e1a39a608578ce903f445978702bac79d09263d3' (2024-02-10) • Updated input 'crane': 'github:ipetkov/crane/b693ec872ea8511fc8c233022e4f0eabb43bd9be' (2024-02-03) → 'github:ipetkov/crane/505976eaeac289fe41d074bee37006ac094636bb' (2024-02-09) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03) → 'github:NixOS/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e' (2024-02-09) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 24b24b5ccb..17186055b5 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1706115649, - "narHash": "sha256-Qrqb54qGaRsFdLDj8EJtI5leFGFfqWHLRgC+t6KWlpQ=", + "lastModified": 1707580663, + "narHash": "sha256-EPNvi0aSSL9gGpv/DuxSRIsKrdpzxQ/IUPx2zjphnrw=", "owner": "rustsec", "repo": "advisory-db", - "rev": "1d2202ea2b32fabd3307641010301bfe187ef11a", + "rev": "e1a39a608578ce903f445978702bac79d09263d3", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1706979728, - "narHash": "sha256-X4nEYqI4bpCFF/Ck1HV9RuBVVYcwIeW8MEkHw+UeoO4=", + "lastModified": 1707461758, + "narHash": "sha256-VaqINICYEtVKF0X+chdNtXcNp6poZr385v6AG7j0ybM=", "owner": "ipetkov", "repo": "crane", - "rev": "b693ec872ea8511fc8c233022e4f0eabb43bd9be", + "rev": "505976eaeac289fe41d074bee37006ac094636bb", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706925685, - "narHash": "sha256-hVInjWMmgH4yZgA4ZtbgJM1qEAel72SYhP5nOWX4UIM=", + "lastModified": 1707451808, + "narHash": "sha256-UwDBUNHNRsYKFJzyTMVMTF5qS4xeJlWoeyJf+6vvamU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "79a13f1437e149dc7be2d1290c74d378dad60814", + "rev": "442d407992384ed9c0e6d352de75b69079904e4e", "type": "github" }, "original": { From 71a93bd1829f6d0a1c2e63f7eb6d30a4ff412b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 2 Jun 2023 15:02:12 +0200 Subject: [PATCH 069/154] refact: move python submodule initialization to rust submodule --- benches/benches_main.rs | 2 +- src/lib.rs | 12 ++---------- src/{math.rs => math_tools.rs} | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 11 deletions(-) rename src/{math.rs => math_tools.rs} (55%) diff --git a/benches/benches_main.rs b/benches/benches_main.rs index ddd11b606c..626b1d2cbe 100755 --- a/benches/benches_main.rs +++ b/benches/benches_main.rs @@ -19,7 +19,7 @@ fn shannon_entropy(c: &mut Criterion) { BenchmarkId::from_parameter(sample_size), &sample_size, |b, &size| { - b.iter(|| unblob_native::math::shannon_entropy(&sample[0..size])); + b.iter(|| unblob_native::math_tools::shannon_entropy(&sample[0..size])); }, ); } diff --git a/src/lib.rs b/src/lib.rs index a1de8a259f..14f0ef4464 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,19 +1,11 @@ -pub mod math; +pub mod math_tools; use pyo3::prelude::*; -/// Calculates Shannon entropy of data -#[pyfunction(text_signature = "(data)")] -pub fn shannon_entropy(py: Python, data: &[u8]) -> PyResult { - py.allow_threads(|| Ok(math::shannon_entropy(data))) -} - /// Performance-critical functionality #[pymodule] fn _native(py: Python, m: &PyModule) -> PyResult<()> { - let math_module = PyModule::new(py, "math_tools")?; - math_module.add_function(wrap_pyfunction!(shannon_entropy, math_module)?)?; + math_tools::init_module(py, m)?; - m.add_submodule(math_module)?; Ok(()) } diff --git a/src/math.rs b/src/math_tools.rs similarity index 55% rename from src/math.rs rename to src/math_tools.rs index 221ba0cf8c..826adf07eb 100644 --- a/src/math.rs +++ b/src/math_tools.rs @@ -1,3 +1,5 @@ +use pyo3::prelude::*; + pub fn shannon_entropy(data: &[u8]) -> f64 { let mut entropy = 0.0; let mut counts = [0; 256]; @@ -17,6 +19,20 @@ pub fn shannon_entropy(data: &[u8]) -> f64 { entropy } +/// Calculates Shannon entropy of data +#[pyfunction(text_signature = "(data)", name = "shannon_entropy")] +pub fn py_shannon_entropy(py: Python, data: &[u8]) -> PyResult { + py.allow_threads(|| Ok(shannon_entropy(data))) +} + +pub fn init_module(py: Python, root_module: &PyModule) -> PyResult<()> { + let module = PyModule::new(py, "math_tools")?; + module.add_function(wrap_pyfunction!(py_shannon_entropy, module)?)?; + + root_module.add_submodule(module)?; + + Ok(()) +} #[cfg(test)] mod tests { From 590617c66ca991a93eb949c23264a1103b3989f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 2 Jun 2023 15:03:06 +0200 Subject: [PATCH 070/154] chore: allow importing submodule from python This code makes it possible to import math as a Python submodule. Extension modules are not packages, so their submodules are not affected by the usual rules from import machinery. --- src/math_tools.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/math_tools.rs b/src/math_tools.rs index 826adf07eb..7368c2a820 100644 --- a/src/math_tools.rs +++ b/src/math_tools.rs @@ -31,6 +31,10 @@ pub fn init_module(py: Python, root_module: &PyModule) -> PyResult<()> { root_module.add_submodule(module)?; + py.import("sys")? + .getattr("modules")? + .set_item("unblob_native.math", module)?; + Ok(()) } From 9bacee3484252aec5e79cd6ba9fb336d3e9af492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 2 Jun 2023 15:11:09 +0200 Subject: [PATCH 071/154] chore: signature is no longer needed to provide named arguments --- src/math_tools.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/math_tools.rs b/src/math_tools.rs index 7368c2a820..1597444652 100644 --- a/src/math_tools.rs +++ b/src/math_tools.rs @@ -20,7 +20,7 @@ pub fn shannon_entropy(data: &[u8]) -> f64 { entropy } /// Calculates Shannon entropy of data -#[pyfunction(text_signature = "(data)", name = "shannon_entropy")] +#[pyfunction(name = "shannon_entropy")] pub fn py_shannon_entropy(py: Python, data: &[u8]) -> PyResult { py.allow_threads(|| Ok(shannon_entropy(data))) } From ba264e4dc1ad66e59aefde197524e91c7c2b9aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 2 Jun 2023 19:37:08 +0200 Subject: [PATCH 072/154] chore: verbose build output in CI The default output doesn't contain enough information to diagnose issues. --- .github/workflows/CI.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8a68980c1b..afc2c35195 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -86,7 +86,7 @@ jobs: key: pytest-${{ matrix.os }} - name: Install dependencies run: | - pdm sync -d + pdm sync -v -d - name: Run Tests run: | pdm pytest @@ -109,7 +109,7 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install dependencies run: | - pdm sync -d + pdm sync -v -d - name: Type-Check run: | pdm pyright @@ -156,7 +156,7 @@ jobs: with: target: ${{ matrix.target }} container: ${{ env.CONTAINER }} - args: --release --out dist + args: --verbose --release --out dist sccache: ${{ matrix.target == 'musllinux_1_1' }} manylinux: auto docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true @@ -171,7 +171,7 @@ jobs: cd /usr/src curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3.10 - export PATH=/root/.local/bin:$PATH - pdm sync -d --no-self -G test + pdm sync -v -d --no-self -G test pdm run python -m ensurepip pdm run python -m pip install dist/*.whl pdm pytest @@ -196,7 +196,7 @@ jobs: uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} - args: --release --out dist + args: --verbose --release --out dist sccache: "true" - name: Upload wheels uses: actions/upload-artifact@v3 @@ -208,7 +208,7 @@ jobs: - name: Test wheels if: ${{ matrix.target == 'x86_64' }} run: | - pdm sync -d --no-self -G test + pdm sync -v -d --no-self -G test pdm run python -m ensurepip pdm run python -m pip install dist/*.whl pdm pytest From d04c2e48d16e499653bd48badbebd72001132b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 2 Jun 2023 15:23:05 +0200 Subject: [PATCH 073/154] feat: add landlock based access restriction functionality Landlock is a kernel API for unprivileged access control. We take advantage of it to limit where unblob can write to and read from on the filesystem. This is a Linux-only feature that won't be enabled on OSX. For more information, see https://docs.kernel.org/userspace-api/landlock.html We use Landlock ABI version 2 since it introduced the LANDLOCK_ACCESS_FS_REFER permission that's required to create hardlinks. Co-authored-by: Quentin Kaiser --- Cargo.lock | 71 +++++++++++++++++ Cargo.toml | 5 ++ pyproject.toml | 1 + python/unblob_native/_native/__init__.pyi | 3 - .../{_native => }/math_tools.pyi | 0 python/unblob_native/sandbox.pyi | 20 +++++ src/lib.rs | 4 + src/sandbox/linux.rs | 74 ++++++++++++++++++ src/sandbox/mod.rs | 77 +++++++++++++++++++ src/sandbox/unsupported.rs | 9 +++ tests/test_sandbox.py | 65 ++++++++++++++++ 11 files changed, 326 insertions(+), 3 deletions(-) delete mode 100644 python/unblob_native/_native/__init__.pyi rename python/unblob_native/{_native => }/math_tools.pyi (100%) create mode 100644 python/unblob_native/sandbox.pyi create mode 100644 src/sandbox/linux.rs create mode 100644 src/sandbox/mod.rs create mode 100644 src/sandbox/unsupported.rs create mode 100644 tests/test_sandbox.py diff --git a/Cargo.lock b/Cargo.lock index 2035b28674..cb7689b6f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,6 +20,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + [[package]] name = "atty" version = "0.2.14" @@ -178,6 +184,26 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +[[package]] +name = "enumflags2" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.25", +] + [[package]] name = "getrandom" version = "0.2.10" @@ -240,6 +266,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "landlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520baa32708c4e957d2fc3a186bc5bd8d26637c33137f399ddfc202adb240068" +dependencies = [ + "enumflags2", + "libc", + "thiserror", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -426,6 +463,17 @@ dependencies = [ "pyo3-build-config", ] +[[package]] +name = "pyo3-log" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c8b57fe71fb5dcf38970ebedc2b1531cf1c14b1b9b4c560a182a57e115575c" +dependencies = [ + "arc-swap", + "log", + "pyo3", +] + [[package]] name = "pyo3-macros" version = "0.18.3" @@ -650,6 +698,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.25", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -666,7 +734,10 @@ version = "0.1.1" dependencies = [ "approx", "criterion", + "landlock", + "log", "pyo3", + "pyo3-log", "rand", ] diff --git a/Cargo.toml b/Cargo.toml index 0390c5828a..c82c9ff630 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,12 @@ crate-type = [ ] [dependencies] +log = "0.4.18" pyo3 = "0.18.3" +pyo3-log = "0.8.1" + +[target.'cfg(target_os = "linux")'.dependencies] +landlock = "0.2.0" [dev-dependencies] approx = "0.5.0" diff --git a/pyproject.toml b/pyproject.toml index 014a49a83e..f1fabb2737 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,6 +93,7 @@ ignore = [ "D203", # one-blank-line-before-class: D211 (no-blank-line-before-class) is used instead "D213", # multi-line-summary-second-line: D212 (multi-line-summary-first-line) is used instead "E501", # line-too-long: Let black handle line length violations + "UP007", # non-pep604-annotation: Python 3.8 support needs legacy annotations ] [tool.ruff.per-file-ignores] diff --git a/python/unblob_native/_native/__init__.pyi b/python/unblob_native/_native/__init__.pyi deleted file mode 100644 index 023b1298fa..0000000000 --- a/python/unblob_native/_native/__init__.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from . import math_tools as math_tools - -__all__ = ["math_tools"] diff --git a/python/unblob_native/_native/math_tools.pyi b/python/unblob_native/math_tools.pyi similarity index 100% rename from python/unblob_native/_native/math_tools.pyi rename to python/unblob_native/math_tools.pyi diff --git a/python/unblob_native/sandbox.pyi b/python/unblob_native/sandbox.pyi new file mode 100644 index 0000000000..2db117542c --- /dev/null +++ b/python/unblob_native/sandbox.pyi @@ -0,0 +1,20 @@ +import os +import typing + +import typing_extensions + +_Path: typing_extensions.TypeAlias = typing.Union[os.PathLike, str] + +class AccessFS: + @staticmethod + def read(access_dir: _Path) -> AccessFS: ... + @staticmethod + def read_write(access_dir: _Path) -> AccessFS: ... + @staticmethod + def make_reg(access_dir: _Path) -> AccessFS: ... + @staticmethod + def make_dir(access_dir: _Path) -> AccessFS: ... + +def restrict_access(*args: AccessFS) -> None: ... + +class SandboxError(Exception): ... diff --git a/src/lib.rs b/src/lib.rs index 14f0ef4464..d9e70f83ad 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ pub mod math_tools; +pub mod sandbox; use pyo3::prelude::*; @@ -6,6 +7,9 @@ use pyo3::prelude::*; #[pymodule] fn _native(py: Python, m: &PyModule) -> PyResult<()> { math_tools::init_module(py, m)?; + sandbox::init_module(py, m)?; + + pyo3_log::init(); Ok(()) } diff --git a/src/sandbox/linux.rs b/src/sandbox/linux.rs new file mode 100644 index 0000000000..75d6182a88 --- /dev/null +++ b/src/sandbox/linux.rs @@ -0,0 +1,74 @@ +use landlock::{ + path_beneath_rules, Access, AccessFs, Ruleset, RulesetAttr, RulesetCreatedAttr, ABI, +}; +use log; + +use std::path::Path; + +use crate::sandbox::AccessFS; + +impl AccessFS { + fn read(&self) -> Option<&Path> { + if let Self::Read(path) = self { + Some(path) + } else { + None + } + } + + fn read_write(&self) -> Option<&Path> { + if let Self::ReadWrite(path) = self { + Some(path) + } else { + None + } + } + + fn make_reg(&self) -> Option<&Path> { + if let Self::MakeReg(path) = self { + Some(path) + } else { + None + } + } + + fn make_dir(&self) -> Option<&Path> { + if let Self::MakeDir(path) = self { + Some(path) + } else { + None + } + } +} + +pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), Box> { + let abi = ABI::V2; + + let read_only: Vec<&Path> = access_rules.iter().filter_map(AccessFS::read).collect(); + + let read_write: Vec<&Path> = access_rules + .iter() + .filter_map(AccessFS::read_write) + .collect(); + + let create_file: Vec<&Path> = access_rules.iter().filter_map(AccessFS::make_reg).collect(); + + let create_directory: Vec<&Path> = access_rules.iter().filter_map(AccessFS::make_dir).collect(); + + let status = Ruleset::new() + .handle_access(AccessFs::from_all(abi))? + .create()? + .add_rules(path_beneath_rules(read_write, AccessFs::from_all(abi)))? + .add_rules(path_beneath_rules(create_file, AccessFs::MakeReg))? + .add_rules(path_beneath_rules(create_directory, AccessFs::MakeDir))? + .add_rules(path_beneath_rules(read_only, AccessFs::from_read(abi)))? + .restrict_self()?; + + log::info!( + "Activated FS access restrictions; rules={:?}, status={:?}", + access_rules, + status.ruleset + ); + + Ok(()) +} diff --git a/src/sandbox/mod.rs b/src/sandbox/mod.rs new file mode 100644 index 0000000000..4bbedb8b89 --- /dev/null +++ b/src/sandbox/mod.rs @@ -0,0 +1,77 @@ +#[cfg_attr(target_os = "linux", path = "linux.rs")] +#[cfg_attr(not(target_os = "linux"), path = "unsupported.rs")] +mod sandbox_impl; + +use pyo3::{create_exception, exceptions::PyException, prelude::*, types::PyTuple}; +use std::path::PathBuf; + +#[derive(Clone, Debug)] +pub enum AccessFS { + Read(PathBuf), + ReadWrite(PathBuf), + MakeReg(PathBuf), + MakeDir(PathBuf), +} + +/// Enforces access restrictions +#[pyfunction(name = "restrict_access", signature=(*rules))] +fn py_restrict_access(rules: &PyTuple) -> PyResult<()> { + sandbox_impl::restrict_access( + &rules + .iter() + .map(|r| Ok(r.extract::()?.access)) + .collect::>>()?, + ) + .map_err(|err| SandboxError::new_err(err.to_string())) +} + +create_exception!(unblob_native.sandbox, SandboxError, PyException); + +#[pyclass(name = "AccessFS", module = "unblob_native.sandbox")] +#[derive(Clone)] +struct PyAccessFS { + access: AccessFS, +} + +impl PyAccessFS { + fn new(access: AccessFS) -> Self { + Self { access } + } +} + +#[pymethods] +impl PyAccessFS { + #[staticmethod] + fn read(dir: PathBuf) -> Self { + Self::new(AccessFS::Read(dir)) + } + + #[staticmethod] + fn read_write(dir: PathBuf) -> Self { + Self::new(AccessFS::ReadWrite(dir)) + } + + #[staticmethod] + fn make_reg(dir: PathBuf) -> Self { + Self::new(AccessFS::MakeReg(dir)) + } + + #[staticmethod] + fn make_dir(dir: PathBuf) -> Self { + Self::new(AccessFS::MakeDir(dir)) + } +} + +pub fn init_module(py: Python, root_module: &PyModule) -> PyResult<()> { + let module = PyModule::new(py, "sandbox")?; + module.add_function(wrap_pyfunction!(py_restrict_access, module)?)?; + module.add_class::()?; + module.add("SandboxError", py.get_type::())?; + + root_module.add_submodule(module)?; + py.import("sys")? + .getattr("modules")? + .set_item("unblob_native.sandbox", module)?; + + Ok(()) +} diff --git a/src/sandbox/unsupported.rs b/src/sandbox/unsupported.rs new file mode 100644 index 0000000000..2b7d6c7731 --- /dev/null +++ b/src/sandbox/unsupported.rs @@ -0,0 +1,9 @@ +use log; + +use crate::sandbox::AccessFS; + +pub fn restrict_access(_access_rules: &[AccessFS]) -> Result<(), Box> { + log::warn!("Sandboxing FS access is unavailable on this system"); + + Ok(()) +} diff --git a/tests/test_sandbox.py b/tests/test_sandbox.py new file mode 100644 index 0000000000..3b2f4ab344 --- /dev/null +++ b/tests/test_sandbox.py @@ -0,0 +1,65 @@ +import platform +from pathlib import Path + +import pytest + +from unblob_native.sandbox import AccessFS, SandboxError, restrict_access + +FILE_CONTENT = b"HELLO" + + +@pytest.mark.skipif(platform.system() == "Linux", reason="Linux is supported.") +def test_unsupported_platform(): + with pytest.raises(SandboxError): + restrict_access(AccessFS.read("/")) + + +@pytest.fixture(scope="session") +def sandbox_path(tmp_path_factory: pytest.TempPathFactory) -> Path: + sandbox_path = tmp_path_factory.mktemp("sandbox") + + file_path = sandbox_path / "file.txt" + dir_path = sandbox_path / "dir" + link_path = sandbox_path / "link" + + with file_path.open("wb") as f: + assert f.write(FILE_CONTENT) == len(FILE_CONTENT) + + dir_path.mkdir() + link_path.symlink_to(file_path) + + return sandbox_path + + +@pytest.mark.skipif( + platform.system() != "Linux" or platform.machine() != "x86_64", + reason="Only supported on Linux x86-64.", +) +def test_read_sandboxing(request: pytest.FixtureRequest, sandbox_path: Path): + restrict_access( + AccessFS.read("/"), + AccessFS.read(sandbox_path), + # allow pytest caching, coverage, etc... + AccessFS.read_write(request.config.rootpath), + ) + + with pytest.raises(PermissionError): + (sandbox_path / "some-dir").mkdir() + + with pytest.raises(PermissionError): + (sandbox_path / "some-file").touch() + + with pytest.raises(PermissionError): + (sandbox_path / "some-link").symlink_to("file.txt") + + for path in sandbox_path.rglob("**/*"): + if path.is_file() or path.is_symlink(): + with path.open("rb") as f: + assert f.read() == FILE_CONTENT + with pytest.raises(PermissionError): + assert path.open("r+") + with pytest.raises(PermissionError): + assert path.unlink() + elif path.is_dir(): + with pytest.raises(PermissionError): + path.rmdir() From e2763efe6169a1f79c33a3ed1844a6b552e5de59 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Thu, 11 Jan 2024 16:06:47 +0100 Subject: [PATCH 074/154] fix: raise SandboxError exception if unsupported platform --- src/sandbox/unsupported.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/sandbox/unsupported.rs b/src/sandbox/unsupported.rs index 2b7d6c7731..55a148a801 100644 --- a/src/sandbox/unsupported.rs +++ b/src/sandbox/unsupported.rs @@ -1,9 +1,5 @@ -use log; - use crate::sandbox::AccessFS; pub fn restrict_access(_access_rules: &[AccessFS]) -> Result<(), Box> { - log::warn!("Sandboxing FS access is unavailable on this system"); - - Ok(()) + Err("Sandboxing FS access is unavailable on this system")? } From 435cac84aac5a8b70672a90d359500b066492056 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 21 Feb 2024 12:04:30 +0100 Subject: [PATCH 075/154] chore: bumped version to 0.1.2 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb7689b6f4..6c5a34559c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "unblob-native" -version = "0.1.1" +version = "0.1.2" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index c82c9ff630..167a370c4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.1" +version = "0.1.2" edition = "2021" license = "MIT" From 0b1c8a254ba1c6729eb4bd2bc4a163797aa3ef92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 25 Feb 2024 00:21:41 +0000 Subject: [PATCH 076/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/e1a39a608578ce903f445978702bac79d09263d3' (2024-02-10) → 'github:rustsec/advisory-db/feb54ac57e980ef6578f66b307cfb844869e5260' (2024-02-22) • Updated input 'crane': 'github:ipetkov/crane/505976eaeac289fe41d074bee37006ac094636bb' (2024-02-09) → 'github:ipetkov/crane/2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa' (2024-02-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e' (2024-02-09) → 'github:NixOS/nixpkgs/f63ce824cd2f036216eb5f637dfef31e1a03ee89' (2024-02-24) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 17186055b5..7f7b559d8c 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1707580663, - "narHash": "sha256-EPNvi0aSSL9gGpv/DuxSRIsKrdpzxQ/IUPx2zjphnrw=", + "lastModified": 1708645386, + "narHash": "sha256-OdK/fVWOpbMBsl37pSWawPqpk5sePqtu1lx1UM+7c9Q=", "owner": "rustsec", "repo": "advisory-db", - "rev": "e1a39a608578ce903f445978702bac79d09263d3", + "rev": "feb54ac57e980ef6578f66b307cfb844869e5260", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1707461758, - "narHash": "sha256-VaqINICYEtVKF0X+chdNtXcNp6poZr385v6AG7j0ybM=", + "lastModified": 1708794349, + "narHash": "sha256-jX+B1VGHT0ruHHL5RwS8L21R6miBn4B6s9iVyUJsJJY=", "owner": "ipetkov", "repo": "crane", - "rev": "505976eaeac289fe41d074bee37006ac094636bb", + "rev": "2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707451808, - "narHash": "sha256-UwDBUNHNRsYKFJzyTMVMTF5qS4xeJlWoeyJf+6vvamU=", + "lastModified": 1708751719, + "narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "442d407992384ed9c0e6d352de75b69079904e4e", + "rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89", "type": "github" }, "original": { From eb8ea4299ff61f182ce22fd0eba2538e07c9b919 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Mar 2024 00:21:32 +0000 Subject: [PATCH 077/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/feb54ac57e980ef6578f66b307cfb844869e5260' (2024-02-22) → 'github:rustsec/advisory-db/9ec5743512edfa8aa6a057daf66371b0aff66008' (2024-03-02) • Updated input 'crane': 'github:ipetkov/crane/2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa' (2024-02-24) → 'github:ipetkov/crane/766e70fd475cd4d73bd65613d06bbb3dcbb75871' (2024-03-02) • Updated input 'flake-utils': 'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26' (2024-01-15) → 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/f63ce824cd2f036216eb5f637dfef31e1a03ee89' (2024-02-24) → 'github:NixOS/nixpkgs/458b097d81f90275b3fdf03796f0563844926708' (2024-03-02) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 7f7b559d8c..7cb712b141 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1708645386, - "narHash": "sha256-OdK/fVWOpbMBsl37pSWawPqpk5sePqtu1lx1UM+7c9Q=", + "lastModified": 1709400162, + "narHash": "sha256-kAdP0YEvYb2bEfF92+1UkjsEEcqmmJAsBzplaz4x7Zc=", "owner": "rustsec", "repo": "advisory-db", - "rev": "feb54ac57e980ef6578f66b307cfb844869e5260", + "rev": "9ec5743512edfa8aa6a057daf66371b0aff66008", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1708794349, - "narHash": "sha256-jX+B1VGHT0ruHHL5RwS8L21R6miBn4B6s9iVyUJsJJY=", + "lastModified": 1709400089, + "narHash": "sha256-4A6X9xNWJ0EQhBPjM4JTdxQFDTkSqQchkNfuDWOP068=", "owner": "ipetkov", "repo": "crane", - "rev": "2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa", + "rev": "766e70fd475cd4d73bd65613d06bbb3dcbb75871", "type": "github" }, "original": { @@ -41,11 +41,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1708751719, - "narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=", + "lastModified": 1709356872, + "narHash": "sha256-mvxCirJbtkP0cZ6ABdwcgTk0u3bgLoIoEFIoYBvD6+4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89", + "rev": "458b097d81f90275b3fdf03796f0563844926708", "type": "github" }, "original": { From f8655aa09abd98245d1b0a590da26fc981078ba3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 10 Mar 2024 00:21:54 +0000 Subject: [PATCH 078/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/9ec5743512edfa8aa6a057daf66371b0aff66008' (2024-03-02) → 'github:rustsec/advisory-db/120db258e97454f900dff7cb8eb1b61a134f3eb0' (2024-03-06) • Updated input 'crane': 'github:ipetkov/crane/766e70fd475cd4d73bd65613d06bbb3dcbb75871' (2024-03-02) → 'github:ipetkov/crane/10484f86201bb94bd61ecc5335b1496794fedb78' (2024-03-09) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/458b097d81f90275b3fdf03796f0563844926708' (2024-03-02) → 'github:NixOS/nixpkgs/0e7f98a5f30166cbed344569426850b21e4091d4' (2024-03-09) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 7cb712b141..6d6b1f37db 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1709400162, - "narHash": "sha256-kAdP0YEvYb2bEfF92+1UkjsEEcqmmJAsBzplaz4x7Zc=", + "lastModified": 1709733674, + "narHash": "sha256-wmbzUBiecUofJaPLEZnKrfvxxjrxrpBPz9plt2K+Fr4=", "owner": "rustsec", "repo": "advisory-db", - "rev": "9ec5743512edfa8aa6a057daf66371b0aff66008", + "rev": "120db258e97454f900dff7cb8eb1b61a134f3eb0", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1709400089, - "narHash": "sha256-4A6X9xNWJ0EQhBPjM4JTdxQFDTkSqQchkNfuDWOP068=", + "lastModified": 1710003968, + "narHash": "sha256-g8+K+mLiNG5uch35Oy9oDQBAmGSkCcqrd0Jjme7xiG0=", "owner": "ipetkov", "repo": "crane", - "rev": "766e70fd475cd4d73bd65613d06bbb3dcbb75871", + "rev": "10484f86201bb94bd61ecc5335b1496794fedb78", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709356872, - "narHash": "sha256-mvxCirJbtkP0cZ6ABdwcgTk0u3bgLoIoEFIoYBvD6+4=", + "lastModified": 1709968316, + "narHash": "sha256-4rZEtEDT6jcgRaqxsatBeds7x1PoEiEjb6QNGb4mNrk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "458b097d81f90275b3fdf03796f0563844926708", + "rev": "0e7f98a5f30166cbed344569426850b21e4091d4", "type": "github" }, "original": { From 5ff5fb9817c9e693a3fde0f83554bdfecfe7e2bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Mar 2024 00:22:43 +0000 Subject: [PATCH 079/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/120db258e97454f900dff7cb8eb1b61a134f3eb0' (2024-03-06) → 'github:rustsec/advisory-db/369d98c1b95b7b56d0859605916d7b81a7d1f1c4' (2024-03-15) • Updated input 'crane': 'github:ipetkov/crane/10484f86201bb94bd61ecc5335b1496794fedb78' (2024-03-09) → 'github:ipetkov/crane/270c7d60d37b769a31bb04d61bc73cc2da1b3f6f' (2024-03-22) • Updated input 'flake-utils': 'github:numtide/flake-utils/d465f4819400de7c8d874d50b982301f28a84605' (2024-02-28) → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) • Updated input 'nix-filter': 'github:numtide/nix-filter/3449dc925982ad46246cfc36469baf66e1b64f17' (2024-01-15) → 'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b' (2024-03-11) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/0e7f98a5f30166cbed344569426850b21e4091d4' (2024-03-09) → 'github:NixOS/nixpkgs/20bc93ca7b2158ebc99b8cef987a2173a81cde35' (2024-03-23) --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 6d6b1f37db..66450045c6 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1709733674, - "narHash": "sha256-wmbzUBiecUofJaPLEZnKrfvxxjrxrpBPz9plt2K+Fr4=", + "lastModified": 1710515894, + "narHash": "sha256-tmQ9TMCb2jZY3jYdf53qIberkYV3dnUzdAYYK/NB+No=", "owner": "rustsec", "repo": "advisory-db", - "rev": "120db258e97454f900dff7cb8eb1b61a134f3eb0", + "rev": "369d98c1b95b7b56d0859605916d7b81a7d1f1c4", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1710003968, - "narHash": "sha256-g8+K+mLiNG5uch35Oy9oDQBAmGSkCcqrd0Jjme7xiG0=", + "lastModified": 1711150329, + "narHash": "sha256-Mcejz4bU3a3ZVgGaCk6B2ktk+DIdMN/LzIbKJNzZXPA=", "owner": "ipetkov", "repo": "crane", - "rev": "10484f86201bb94bd61ecc5335b1496794fedb78", + "rev": "270c7d60d37b769a31bb04d61bc73cc2da1b3f6f", "type": "github" }, "original": { @@ -41,11 +41,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -56,11 +56,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1705332318, - "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=", + "lastModified": 1710156097, + "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", "owner": "numtide", "repo": "nix-filter", - "rev": "3449dc925982ad46246cfc36469baf66e1b64f17", + "rev": "3342559a24e85fc164b295c3444e8a139924675b", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709968316, - "narHash": "sha256-4rZEtEDT6jcgRaqxsatBeds7x1PoEiEjb6QNGb4mNrk=", + "lastModified": 1711200738, + "narHash": "sha256-dkJmk/ET/tRV4007O6kU101UEg1svUwiyk/zEEX9Tdg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0e7f98a5f30166cbed344569426850b21e4091d4", + "rev": "20bc93ca7b2158ebc99b8cef987a2173a81cde35", "type": "github" }, "original": { From 94c20d5e4cb7c3b50751e7e2774a4847954e3c99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 31 Mar 2024 00:22:54 +0000 Subject: [PATCH 080/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/369d98c1b95b7b56d0859605916d7b81a7d1f1c4' (2024-03-15) → 'github:rustsec/advisory-db/aa8e65c812517eae85190715fa63f312aa875773' (2024-03-25) • Updated input 'crane': 'github:ipetkov/crane/270c7d60d37b769a31bb04d61bc73cc2da1b3f6f' (2024-03-22) → 'github:ipetkov/crane/ada0fb4dcce4561acb1eb17c59b7306d9d4a95f3' (2024-03-29) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/20bc93ca7b2158ebc99b8cef987a2173a81cde35' (2024-03-23) → 'github:NixOS/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 66450045c6..969e65f61c 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1710515894, - "narHash": "sha256-tmQ9TMCb2jZY3jYdf53qIberkYV3dnUzdAYYK/NB+No=", + "lastModified": 1711359280, + "narHash": "sha256-Yri+Uexb2h9tN5Rk4hZCfB7dBjy+tOECl4Kor7VgJFI=", "owner": "rustsec", "repo": "advisory-db", - "rev": "369d98c1b95b7b56d0859605916d7b81a7d1f1c4", + "rev": "aa8e65c812517eae85190715fa63f312aa875773", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1711150329, - "narHash": "sha256-Mcejz4bU3a3ZVgGaCk6B2ktk+DIdMN/LzIbKJNzZXPA=", + "lastModified": 1711681752, + "narHash": "sha256-LEg6/dmEFxx6Ygti5DO9MOhGNpyB7zdxdWtzv/FCTXk=", "owner": "ipetkov", "repo": "crane", - "rev": "270c7d60d37b769a31bb04d61bc73cc2da1b3f6f", + "rev": "ada0fb4dcce4561acb1eb17c59b7306d9d4a95f3", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1711200738, - "narHash": "sha256-dkJmk/ET/tRV4007O6kU101UEg1svUwiyk/zEEX9Tdg=", + "lastModified": 1711715736, + "narHash": "sha256-9slQ609YqT9bT/MNX9+5k5jltL9zgpn36DpFB7TkttM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20bc93ca7b2158ebc99b8cef987a2173a81cde35", + "rev": "807c549feabce7eddbf259dbdcec9e0600a0660d", "type": "github" }, "original": { From 3fdea0ba84cf13fb0dbc4386f7f5820857bb3a42 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Apr 2024 00:23:00 +0000 Subject: [PATCH 081/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/aa8e65c812517eae85190715fa63f312aa875773' (2024-03-25) → 'github:rustsec/advisory-db/0bc9a77248be5cb5f2b51fe6aba8ba451d74c6bb' (2024-04-03) • Updated input 'crane': 'github:ipetkov/crane/ada0fb4dcce4561acb1eb17c59b7306d9d4a95f3' (2024-03-29) → 'github:ipetkov/crane/1e44708c0b34380085ba0cbabc230b8adbde1b3a' (2024-04-05) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29) → 'github:NixOS/nixpkgs/9e7f26f82acb057498335362905fde6fea4ca50a' (2024-04-06) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 969e65f61c..d2a9c4372b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1711359280, - "narHash": "sha256-Yri+Uexb2h9tN5Rk4hZCfB7dBjy+tOECl4Kor7VgJFI=", + "lastModified": 1712168594, + "narHash": "sha256-1Yh+vafNq19JDfmpknkWq11AkcQLPmFZ8X6YJZT5r7o=", "owner": "rustsec", "repo": "advisory-db", - "rev": "aa8e65c812517eae85190715fa63f312aa875773", + "rev": "0bc9a77248be5cb5f2b51fe6aba8ba451d74c6bb", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1711681752, - "narHash": "sha256-LEg6/dmEFxx6Ygti5DO9MOhGNpyB7zdxdWtzv/FCTXk=", + "lastModified": 1712350083, + "narHash": "sha256-ghbs9TH41fOL58JAJgdVrZbq3MthffV/twjpv0KYAMY=", "owner": "ipetkov", "repo": "crane", - "rev": "ada0fb4dcce4561acb1eb17c59b7306d9d4a95f3", + "rev": "1e44708c0b34380085ba0cbabc230b8adbde1b3a", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1711715736, - "narHash": "sha256-9slQ609YqT9bT/MNX9+5k5jltL9zgpn36DpFB7TkttM=", + "lastModified": 1712420723, + "narHash": "sha256-VnG0Eu394Ga2FCe8Q66m6OEQF8iAqjDYsjmtl+N2omk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "807c549feabce7eddbf259dbdcec9e0600a0660d", + "rev": "9e7f26f82acb057498335362905fde6fea4ca50a", "type": "github" }, "original": { From c2b1cc8d2767708a1cdf5fc0d96f1842d7325978 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Apr 2024 00:23:37 +0000 Subject: [PATCH 082/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/0bc9a77248be5cb5f2b51fe6aba8ba451d74c6bb' (2024-04-03) → 'github:rustsec/advisory-db/0631800c0a23c1e543842a70ccb698d0690f8cc3' (2024-04-13) • Updated input 'crane': 'github:ipetkov/crane/1e44708c0b34380085ba0cbabc230b8adbde1b3a' (2024-04-05) → 'github:ipetkov/crane/220387ac8e99cbee0ca4c95b621c4bc782b6a235' (2024-04-09) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/9e7f26f82acb057498335362905fde6fea4ca50a' (2024-04-06) → 'github:NixOS/nixpkgs/a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9' (2024-04-12) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index d2a9c4372b..2b46ca9309 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1712168594, - "narHash": "sha256-1Yh+vafNq19JDfmpknkWq11AkcQLPmFZ8X6YJZT5r7o=", + "lastModified": 1713028595, + "narHash": "sha256-+eWE3wGpGTBy90vdqYhHM4uGScHHn5Y8MugnMXWy3g8=", "owner": "rustsec", "repo": "advisory-db", - "rev": "0bc9a77248be5cb5f2b51fe6aba8ba451d74c6bb", + "rev": "0631800c0a23c1e543842a70ccb698d0690f8cc3", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1712350083, - "narHash": "sha256-ghbs9TH41fOL58JAJgdVrZbq3MthffV/twjpv0KYAMY=", + "lastModified": 1712681629, + "narHash": "sha256-bMDXn4AkTXLCpoZbII6pDGoSeSe9gI87jxPsHRXgu/E=", "owner": "ipetkov", "repo": "crane", - "rev": "1e44708c0b34380085ba0cbabc230b8adbde1b3a", + "rev": "220387ac8e99cbee0ca4c95b621c4bc782b6a235", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712420723, - "narHash": "sha256-VnG0Eu394Ga2FCe8Q66m6OEQF8iAqjDYsjmtl+N2omk=", + "lastModified": 1712883908, + "narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9e7f26f82acb057498335362905fde6fea4ca50a", + "rev": "a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9", "type": "github" }, "original": { From a318468d7c3adac6f774f184f458fa31a56cee35 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 21 Apr 2024 00:22:34 +0000 Subject: [PATCH 083/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/0631800c0a23c1e543842a70ccb698d0690f8cc3' (2024-04-13) → 'github:rustsec/advisory-db/6ab370c779c140c9cb2e7ff1367dd1b66c415409' (2024-04-20) • Updated input 'crane': 'github:ipetkov/crane/220387ac8e99cbee0ca4c95b621c4bc782b6a235' (2024-04-09) → 'github:ipetkov/crane/45ea0059fb325132fdc3c39faffb0941d25d08d3' (2024-04-18) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9' (2024-04-12) → 'github:NixOS/nixpkgs/fd16bb6d3bcca96039b11aa52038fafeb6e4f4be' (2024-04-20) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 2b46ca9309..f4a7391b7b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1713028595, - "narHash": "sha256-+eWE3wGpGTBy90vdqYhHM4uGScHHn5Y8MugnMXWy3g8=", + "lastModified": 1713579674, + "narHash": "sha256-JXiXi2Egq7gHfIvigBXFSdzNsxIjk1s9fcq1ibfoD/U=", "owner": "rustsec", "repo": "advisory-db", - "rev": "0631800c0a23c1e543842a70ccb698d0690f8cc3", + "rev": "6ab370c779c140c9cb2e7ff1367dd1b66c415409", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1712681629, - "narHash": "sha256-bMDXn4AkTXLCpoZbII6pDGoSeSe9gI87jxPsHRXgu/E=", + "lastModified": 1713459701, + "narHash": "sha256-LjQ11ASxnv/FXfb8QnrIyMkyqSqcBPX+lFK8gu0jSQE=", "owner": "ipetkov", "repo": "crane", - "rev": "220387ac8e99cbee0ca4c95b621c4bc782b6a235", + "rev": "45ea0059fb325132fdc3c39faffb0941d25d08d3", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712883908, - "narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=", + "lastModified": 1713596654, + "narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9", + "rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be", "type": "github" }, "original": { From 6292b2744b89c25d0b2db8e8b1366c267efcb315 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Mon, 3 Jun 2024 09:27:03 +0200 Subject: [PATCH 084/154] ci: replace macos-latest by macos-13 macos-14 is ARM based only, and macos-latest was recently transitioned from macos-12 to macos-14, meaning we're no longer building for x86-64 and breaking the wheel build on OSX. See https://github.com/actions/runner-images/issues/9741 --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index afc2c35195..144debbd91 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -38,7 +38,7 @@ jobs: arch: x86_64-linux - os: ubuntu-latest arch: aarch64-linux - - os: macos-latest + - os: macos-13 arch: x86_64-darwin name: Build Nix - ${{ matrix.arch }}.${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -178,7 +178,7 @@ jobs: EOF wheel-macos: - runs-on: macos-latest + runs-on: macos-13 needs: [checks, pytest, pyright] strategy: matrix: From 6c6c7c23061f0e22902b01b481baecddf4fea94a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Jun 2024 00:23:37 +0000 Subject: [PATCH 085/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/6ab370c779c140c9cb2e7ff1367dd1b66c415409' (2024-04-20) → 'github:rustsec/advisory-db/331c2947e70b94a35b53ab25ed64b1bf25080870' (2024-06-01) • Updated input 'crane': 'github:ipetkov/crane/45ea0059fb325132fdc3c39faffb0941d25d08d3' (2024-04-18) → 'github:ipetkov/crane/480dff0be03dac0e51a8dfc26e882b0d123a450e' (2024-05-29) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/fd16bb6d3bcca96039b11aa52038fafeb6e4f4be' (2024-04-20) → 'github:NixOS/nixpkgs/6132b0f6e344ce2fe34fc051b72fb46e34f668e0' (2024-05-30) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index f4a7391b7b..6551b50a40 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1713579674, - "narHash": "sha256-JXiXi2Egq7gHfIvigBXFSdzNsxIjk1s9fcq1ibfoD/U=", + "lastModified": 1717238897, + "narHash": "sha256-+9w8QXpiGvPjJUYxlbLCKqpr0bR6b96fF+TtjaA2nr4=", "owner": "rustsec", "repo": "advisory-db", - "rev": "6ab370c779c140c9cb2e7ff1367dd1b66c415409", + "rev": "331c2947e70b94a35b53ab25ed64b1bf25080870", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1713459701, - "narHash": "sha256-LjQ11ASxnv/FXfb8QnrIyMkyqSqcBPX+lFK8gu0jSQE=", + "lastModified": 1717025063, + "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", "owner": "ipetkov", "repo": "crane", - "rev": "45ea0059fb325132fdc3c39faffb0941d25d08d3", + "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713596654, - "narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=", + "lastModified": 1717112898, + "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be", + "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", "type": "github" }, "original": { From 9389d8e3f27640b78107671fd6471edfe242fd88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 9 Jun 2024 00:24:49 +0000 Subject: [PATCH 086/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/331c2947e70b94a35b53ab25ed64b1bf25080870' (2024-06-01) → 'github:rustsec/advisory-db/af76d4423761499f954411bb3071dcc72e6b0450' (2024-06-05) • Updated input 'crane': 'github:ipetkov/crane/480dff0be03dac0e51a8dfc26e882b0d123a450e' (2024-05-29) → 'github:ipetkov/crane/55e7754ec31dac78980c8be45f8a28e80e370946' (2024-06-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6132b0f6e344ce2fe34fc051b72fb46e34f668e0' (2024-05-30) → 'github:NixOS/nixpkgs/d226935fd75012939397c83f6c385e4d6d832288' (2024-06-07) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 6551b50a40..06623a2a9b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1717238897, - "narHash": "sha256-+9w8QXpiGvPjJUYxlbLCKqpr0bR6b96fF+TtjaA2nr4=", + "lastModified": 1717596017, + "narHash": "sha256-LHjTqlOLgtv43GVkeM7Hb5HcZG5i/vNHnWgYaUzu+Jg=", "owner": "rustsec", "repo": "advisory-db", - "rev": "331c2947e70b94a35b53ab25ed64b1bf25080870", + "rev": "af76d4423761499f954411bb3071dcc72e6b0450", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1717025063, - "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", + "lastModified": 1717535930, + "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", "owner": "ipetkov", "repo": "crane", - "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", + "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717112898, - "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", + "lastModified": 1717774105, + "narHash": "sha256-HV97wqUQv9wvptiHCb3Y0/YH0lJ60uZ8FYfEOIzYEqI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", + "rev": "d226935fd75012939397c83f6c385e4d6d832288", "type": "github" }, "original": { From ea4232ad435dea28f8594b84ee3c1755714a3cf4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 16 Jun 2024 00:24:08 +0000 Subject: [PATCH 087/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/af76d4423761499f954411bb3071dcc72e6b0450' (2024-06-05) → 'github:rustsec/advisory-db/463e8405f85bb74eef17149f7e704b07723ce46e' (2024-06-15) • Updated input 'crane': 'github:ipetkov/crane/55e7754ec31dac78980c8be45f8a28e80e370946' (2024-06-04) → 'github:ipetkov/crane/0095fd8ea00ae0a9e6014f39c375e40c2fbd3386' (2024-06-15) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/d226935fd75012939397c83f6c385e4d6d832288' (2024-06-07) → 'github:NixOS/nixpkgs/3f84a279f1a6290ce154c5531378acc827836fbb' (2024-06-13) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 06623a2a9b..091c9cc9fc 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1717596017, - "narHash": "sha256-LHjTqlOLgtv43GVkeM7Hb5HcZG5i/vNHnWgYaUzu+Jg=", + "lastModified": 1718457093, + "narHash": "sha256-UpZdIss5nqm2Gl3swnmRTPqIpxVpMq/IP7RpMnSEPE0=", "owner": "rustsec", "repo": "advisory-db", - "rev": "af76d4423761499f954411bb3071dcc72e6b0450", + "rev": "463e8405f85bb74eef17149f7e704b07723ce46e", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1717535930, - "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", + "lastModified": 1718474113, + "narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=", "owner": "ipetkov", "repo": "crane", - "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", + "rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717774105, - "narHash": "sha256-HV97wqUQv9wvptiHCb3Y0/YH0lJ60uZ8FYfEOIzYEqI=", + "lastModified": 1718276985, + "narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d226935fd75012939397c83f6c385e4d6d832288", + "rev": "3f84a279f1a6290ce154c5531378acc827836fbb", "type": "github" }, "original": { From 4efc27453dd1f243923059cf139168c4f2bdad20 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 11 Aug 2024 00:25:56 +0000 Subject: [PATCH 088/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/463e8405f85bb74eef17149f7e704b07723ce46e' (2024-06-15) → 'github:rustsec/advisory-db/1d209d3f18c740f104380e988b5aa8eb360190d1' (2024-08-08) • Updated input 'crane': 'github:ipetkov/crane/0095fd8ea00ae0a9e6014f39c375e40c2fbd3386' (2024-06-15) → 'github:ipetkov/crane/4c6c77920b8d44cd6660c1621dea6b3fc4b4c4f4' (2024-08-06) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/3f84a279f1a6290ce154c5531378acc827836fbb' (2024-06-13) → 'github:NixOS/nixpkgs/154bcb95ad51bc257c2ce4043a725de6ca700ef6' (2024-08-09) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 091c9cc9fc..2465265521 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1718457093, - "narHash": "sha256-UpZdIss5nqm2Gl3swnmRTPqIpxVpMq/IP7RpMnSEPE0=", + "lastModified": 1723137097, + "narHash": "sha256-Q/TeuIV610BJ39UkP4zRm6pG6BWEaOCih/WXNR2V9rk=", "owner": "rustsec", "repo": "advisory-db", - "rev": "463e8405f85bb74eef17149f7e704b07723ce46e", + "rev": "1d209d3f18c740f104380e988b5aa8eb360190d1", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1718474113, - "narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=", + "lastModified": 1722960479, + "narHash": "sha256-NhCkJJQhD5GUib8zN9JrmYGMwt4lCRp6ZVNzIiYCl0Y=", "owner": "ipetkov", "repo": "crane", - "rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386", + "rev": "4c6c77920b8d44cd6660c1621dea6b3fc4b4c4f4", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718276985, - "narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=", + "lastModified": 1723221148, + "narHash": "sha256-7pjpeQlZUNQ4eeVntytU3jkw9dFK3k1Htgk2iuXjaD8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f84a279f1a6290ce154c5531378acc827836fbb", + "rev": "154bcb95ad51bc257c2ce4043a725de6ca700ef6", "type": "github" }, "original": { From 5aa483acc73fb67b0db773cde9bb685872a86ed7 Mon Sep 17 00:00:00 2001 From: Antoine Pecoraro Date: Mon, 12 Aug 2024 13:04:34 +0200 Subject: [PATCH 089/154] fix(ruff): update ruff CI --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 144debbd91..eff08a133b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -28,7 +28,7 @@ jobs: - name: Check Python formatting run: nix develop -c -- black --check --diff --color . - name: Ruff - run: nix develop -c -- ruff . + run: nix develop -c -- ruff check . build-nix: strategy: From 42f44ca59b6565bb415302a843fd10271e2b0d20 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 25 Aug 2024 00:25:53 +0000 Subject: [PATCH 090/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/1d209d3f18c740f104380e988b5aa8eb360190d1' (2024-08-08) → 'github:rustsec/advisory-db/dd0703e582ab7edc2637bc3385d540c3dbffa0db' (2024-08-24) • Updated input 'crane': 'github:ipetkov/crane/4c6c77920b8d44cd6660c1621dea6b3fc4b4c4f4' (2024-08-06) → 'github:ipetkov/crane/3e08f4b1fc9aaede5dd511d8f5f4ef27501e49b0' (2024-08-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/154bcb95ad51bc257c2ce4043a725de6ca700ef6' (2024-08-09) → 'github:NixOS/nixpkgs/ae815cee91b417be55d43781eb4b73ae1ecc396c' (2024-08-23) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 2465265521..0a90fd0d24 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1723137097, - "narHash": "sha256-Q/TeuIV610BJ39UkP4zRm6pG6BWEaOCih/WXNR2V9rk=", + "lastModified": 1724510776, + "narHash": "sha256-K9CHOXzHPfNjZsz3dC9Vhdryz70dyaDTsCjFJHB19xA=", "owner": "rustsec", "repo": "advisory-db", - "rev": "1d209d3f18c740f104380e988b5aa8eb360190d1", + "rev": "dd0703e582ab7edc2637bc3385d540c3dbffa0db", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1722960479, - "narHash": "sha256-NhCkJJQhD5GUib8zN9JrmYGMwt4lCRp6ZVNzIiYCl0Y=", + "lastModified": 1724537630, + "narHash": "sha256-gpqINM71zp3kw5XYwUXa84ZtPnCmLLnByuFoYesT1bY=", "owner": "ipetkov", "repo": "crane", - "rev": "4c6c77920b8d44cd6660c1621dea6b3fc4b4c4f4", + "rev": "3e08f4b1fc9aaede5dd511d8f5f4ef27501e49b0", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723221148, - "narHash": "sha256-7pjpeQlZUNQ4eeVntytU3jkw9dFK3k1Htgk2iuXjaD8=", + "lastModified": 1724395761, + "narHash": "sha256-zRkDV/nbrnp3Y8oCADf5ETl1sDrdmAW6/bBVJ8EbIdQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "154bcb95ad51bc257c2ce4043a725de6ca700ef6", + "rev": "ae815cee91b417be55d43781eb4b73ae1ecc396c", "type": "github" }, "original": { From 1a69a934f3f95c589736dbdd03e87fa19617b7da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:40:15 +0000 Subject: [PATCH 091/154] chore(deps): bump actions/download-artifact in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index eff08a133b..4ccb303c63 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -235,7 +235,7 @@ jobs: if: "startsWith(github.ref, 'refs/tags/')" needs: [build-nix, wheel-linux, wheel-macos, sdist] steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4.1.7 with: name: wheels - name: Publish to PyPI From 7ee484162c21c06a4d9fcdd9090677741c1ad4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 13:28:45 +0200 Subject: [PATCH 092/154] chore: update crates The biggest change is PyO3 deprecating its previous API. https://pyo3.rs/v0.22.3/migration#migrating-from-the-gil-refs-api-to-boundt --- Cargo.lock | 382 ++++++++++++++++++++----------------------- Cargo.toml | 10 +- src/lib.rs | 6 +- src/math_tools.rs | 12 +- src/sandbox/linux.rs | 2 +- src/sandbox/mod.rs | 19 ++- 6 files changed, 203 insertions(+), 228 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c5a34559c..3a4a6fdbd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + [[package]] name = "approx" version = "0.5.1" @@ -26,29 +38,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bumpalo" version = "3.13.0" @@ -67,37 +62,78 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "clap" -version = "2.34.0" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ - "bitflags", - "textwrap", - "unicode-width", + "clap_builder", ] +[[package]] +name = "clap_builder" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +dependencies = [ + "anstyle", + "clap_lex", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + [[package]] name = "criterion" -version = "0.3.6" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ - "atty", + "anes", "cast", + "ciborium", "clap", "criterion-plot", - "csv", + "is-terminal", "itertools", - "lazy_static", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_cbor", "serde_derive", "serde_json", "tinytemplate", @@ -106,9 +142,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", "itertools", @@ -144,7 +180,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", + "memoffset", "scopeguard", ] @@ -158,25 +194,10 @@ dependencies = [ ] [[package]] -name = "csv" -version = "1.2.2" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" -dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "either" @@ -201,7 +222,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn", ] [[package]] @@ -217,18 +238,19 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -236,11 +258,28 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "indoc" -version = "1.0.9" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "is-terminal" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys", +] [[package]] name = "itertools" @@ -268,42 +307,26 @@ dependencies = [ [[package]] name = "landlock" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520baa32708c4e957d2fc3a186bc5bd8d26637c33137f399ddfc202adb240068" +checksum = "18738c5d4c7fae6727a96adb94722ef7ce82f3eafea0a11777e258a93816537e" dependencies = [ "enumflags2", "libc", "thiserror", ] -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - [[package]] name = "log" -version = "0.4.19" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" @@ -311,15 +334,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -360,29 +374,6 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - [[package]] name = "plotters" version = "0.3.5" @@ -411,6 +402,12 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -419,24 +416,25 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.64" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" -version = "0.18.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b1ac5b3731ba34fdaa9785f8d74d17448cd18f30cf19e0c7e7b1fdb5272109" +checksum = "15ee168e30649f7f234c3d49ef5a7a6cbf5134289bc46c29ff3155fa3221c225" dependencies = [ "cfg-if", "indoc", "libc", - "memoffset 0.8.0", - "parking_lot", + "memoffset", + "once_cell", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -445,9 +443,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.18.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cb946f5ac61bb61a5014924910d936ebd2b23b705f7a4a3c40b05c720b079a3" +checksum = "e61cef80755fe9e46bb8a0b8f20752ca7676dcc07a5277d8b7768c6172e529b3" dependencies = [ "once_cell", "target-lexicon", @@ -455,9 +453,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.18.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4d7c5337821916ea2a1d21d1092e8443cf34879e53a0ac653fbb98f44ff65c" +checksum = "67ce096073ec5405f5ee2b8b31f03a68e02aa10d5d4f565eca04acc41931fa1c" dependencies = [ "libc", "pyo3-build-config", @@ -465,9 +463,9 @@ dependencies = [ [[package]] name = "pyo3-log" -version = "0.8.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c8b57fe71fb5dcf38970ebedc2b1531cf1c14b1b9b4c560a182a57e115575c" +checksum = "3ac84e6eec1159bc2a575c9ae6723baa6ee9d45873e9bebad1e3ad7e8d28a443" dependencies = [ "arc-swap", "log", @@ -476,32 +474,34 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.18.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d39c55dab3fc5a4b25bbd1ac10a2da452c4aca13bb450f22818a002e29648d" +checksum = "2440c6d12bc8f3ae39f1e775266fa5122fd0c8891ce7520fa6048e683ad3de28" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "pyo3-macros-backend" -version = "0.18.3" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97daff08a4c48320587b5224cc98d609e3c27b6d437315bd40b605c98eeb5918" +checksum = "1be962f0e06da8f8465729ea2cb71a416d2257dff56cbe40a70d3e62a93ae5d1" dependencies = [ + "heck", "proc-macro2", + "pyo3-build-config", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -558,15 +558,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - [[package]] name = "regex" version = "1.9.1" @@ -622,15 +613,8 @@ name = "serde" version = "1.0.171" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" - -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ - "half", - "serde", + "serde_derive", ] [[package]] @@ -641,7 +625,7 @@ checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn", ] [[package]] @@ -655,28 +639,11 @@ dependencies = [ "serde", ] -[[package]] -name = "smallvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" -version = "2.0.25" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -685,18 +652,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.8" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "thiserror" @@ -715,7 +673,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn", ] [[package]] @@ -747,17 +705,11 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - [[package]] name = "unindent" -version = "0.1.11" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "walkdir" @@ -796,7 +748,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.25", + "syn", "wasm-bindgen-shared", ] @@ -818,7 +770,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -870,15 +822,25 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", + "windows_i686_gnullvm", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", @@ -887,42 +849,48 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml index 167a370c4e..a4a054fd48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,16 +12,16 @@ crate-type = [ ] [dependencies] -log = "0.4.18" -pyo3 = "0.18.3" -pyo3-log = "0.8.1" +log = "0.4.22" +pyo3 = "0.22.3" +pyo3-log = "0.11.0" [target.'cfg(target_os = "linux")'.dependencies] -landlock = "0.2.0" +landlock = "0.4.1" [dev-dependencies] approx = "0.5.0" -criterion = "0.3.5" +criterion = "0.5.1" rand = "0.8.4" [[bench]] diff --git a/src/lib.rs b/src/lib.rs index d9e70f83ad..076096c8e5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,9 +5,9 @@ use pyo3::prelude::*; /// Performance-critical functionality #[pymodule] -fn _native(py: Python, m: &PyModule) -> PyResult<()> { - math_tools::init_module(py, m)?; - sandbox::init_module(py, m)?; +fn _native(m: &Bound<'_, PyModule>) -> PyResult<()> { + math_tools::init_module(m)?; + sandbox::init_module(m)?; pyo3_log::init(); diff --git a/src/math_tools.rs b/src/math_tools.rs index 1597444652..e5eb1182e0 100644 --- a/src/math_tools.rs +++ b/src/math_tools.rs @@ -25,13 +25,15 @@ pub fn py_shannon_entropy(py: Python, data: &[u8]) -> PyResult { py.allow_threads(|| Ok(shannon_entropy(data))) } -pub fn init_module(py: Python, root_module: &PyModule) -> PyResult<()> { - let module = PyModule::new(py, "math_tools")?; - module.add_function(wrap_pyfunction!(py_shannon_entropy, module)?)?; +pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { + let module = PyModule::new_bound(root_module.py(), "math_tools")?; + module.add_function(wrap_pyfunction!(py_shannon_entropy, &module)?)?; - root_module.add_submodule(module)?; + root_module.add_submodule(&module)?; - py.import("sys")? + root_module + .py() + .import_bound("sys")? .getattr("modules")? .set_item("unblob_native.math", module)?; diff --git a/src/sandbox/linux.rs b/src/sandbox/linux.rs index 75d6182a88..67813c7366 100644 --- a/src/sandbox/linux.rs +++ b/src/sandbox/linux.rs @@ -55,7 +55,7 @@ pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), Box = access_rules.iter().filter_map(AccessFS::make_dir).collect(); - let status = Ruleset::new() + let status = Ruleset::default() .handle_access(AccessFs::from_all(abi))? .create()? .add_rules(path_beneath_rules(read_write, AccessFs::from_all(abi)))? diff --git a/src/sandbox/mod.rs b/src/sandbox/mod.rs index 4bbedb8b89..2185be53c0 100644 --- a/src/sandbox/mod.rs +++ b/src/sandbox/mod.rs @@ -15,7 +15,7 @@ pub enum AccessFS { /// Enforces access restrictions #[pyfunction(name = "restrict_access", signature=(*rules))] -fn py_restrict_access(rules: &PyTuple) -> PyResult<()> { +fn py_restrict_access(rules: &Bound<'_, PyTuple>) -> PyResult<()> { sandbox_impl::restrict_access( &rules .iter() @@ -62,14 +62,19 @@ impl PyAccessFS { } } -pub fn init_module(py: Python, root_module: &PyModule) -> PyResult<()> { - let module = PyModule::new(py, "sandbox")?; - module.add_function(wrap_pyfunction!(py_restrict_access, module)?)?; +pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { + let module = PyModule::new_bound(root_module.py(), "sandbox")?; + module.add_function(wrap_pyfunction!(py_restrict_access, &module)?)?; module.add_class::()?; - module.add("SandboxError", py.get_type::())?; + module.add( + "SandboxError", + root_module.py().get_type_bound::(), + )?; - root_module.add_submodule(module)?; - py.import("sys")? + root_module.add_submodule(&module)?; + root_module + .py() + .import_bound("sys")? .getattr("modules")? .set_item("unblob_native.sandbox", module)?; From 72c74bad9603e5da681ad36cf03b76e860d22bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:32:54 +0200 Subject: [PATCH 093/154] chore: maturin 0.14 -> 1.x --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f1fabb2737..a6819dcef0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ test = [ pyyaml = "~= 6.0.1" # For Python 3.12 compatibility [build-system] -requires = ["maturin>=0.14,<0.15"] +requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" [tool.maturin] From 1d4ea4a8849d9e2e494c91b864721713ac719d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:34:35 +0200 Subject: [PATCH 094/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/dd0703e582ab7edc2637bc3385d540c3dbffa0db' (2024-08-24) → 'github:rustsec/advisory-db/acb7ce45817b13dd34cb32540ff18be4e1f3ba09' (2024-10-08) • Updated input 'crane': 'github:ipetkov/crane/3e08f4b1fc9aaede5dd511d8f5f4ef27501e49b0' (2024-08-24) → 'github:ipetkov/crane/fd86b78f5f35f712c72147427b1eb81a9bd55d0b' (2024-10-07) • Removed input 'crane/nixpkgs' • Updated input 'flake-utils': 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11) → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ae815cee91b417be55d43781eb4b73ae1ecc396c' (2024-08-23) → 'github:NixOS/nixpkgs/b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221' (2024-10-10) --- flake.lock | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index 0a90fd0d24..7fce5951f3 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1724510776, - "narHash": "sha256-K9CHOXzHPfNjZsz3dC9Vhdryz70dyaDTsCjFJHB19xA=", + "lastModified": 1728429239, + "narHash": "sha256-k1KRRgmfKNhO9eU55FMkkzkneqAlwz5oLC5NSiEfGxs=", "owner": "rustsec", "repo": "advisory-db", - "rev": "dd0703e582ab7edc2637bc3385d540c3dbffa0db", + "rev": "acb7ce45817b13dd34cb32540ff18be4e1f3ba09", "type": "github" }, "original": { @@ -17,17 +17,12 @@ } }, "crane": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, "locked": { - "lastModified": 1724537630, - "narHash": "sha256-gpqINM71zp3kw5XYwUXa84ZtPnCmLLnByuFoYesT1bY=", + "lastModified": 1728344376, + "narHash": "sha256-lxTce2XE6mfJH8Zk6yBbqsbu9/jpwdymbSH5cCbiVOA=", "owner": "ipetkov", "repo": "crane", - "rev": "3e08f4b1fc9aaede5dd511d8f5f4ef27501e49b0", + "rev": "fd86b78f5f35f712c72147427b1eb81a9bd55d0b", "type": "github" }, "original": { @@ -41,11 +36,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -71,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724395761, - "narHash": "sha256-zRkDV/nbrnp3Y8oCADf5ETl1sDrdmAW6/bBVJ8EbIdQ=", + "lastModified": 1728538411, + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ae815cee91b417be55d43781eb4b73ae1ecc396c", + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", "type": "github" }, "original": { From be67fe541a1eaf1b593c4c064e38c4cedf243422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:37:47 +0200 Subject: [PATCH 095/154] chore(nix): crane no longer uses a nixpkgs input implicitly Fixed error: evaluation warning: `crane.lib.${system}` is deprecated. please use `(crane.mkLib nixpkgs.legacyPackages.${system})` instead --- flake.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index af80874a6b..b764e057cd 100644 --- a/flake.nix +++ b/flake.nix @@ -6,10 +6,7 @@ nix-filter.url = "github:numtide/nix-filter"; - crane = { - url = "github:ipetkov/crane"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + crane.url = "github:ipetkov/crane"; flake-utils.url = "github:numtide/flake-utils"; @@ -22,7 +19,7 @@ outputs = { self, nixpkgs, nix-filter, crane, flake-utils, advisory-db, ... }: { overlays.default = final: prev: let - craneLib = crane.lib.${final.system}; + craneLib = crane.mkLib final; nixFilter = nix-filter.lib; in { From 0d0ed19ceec608ff01d852407f5324f2f8fc8c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:43:10 +0200 Subject: [PATCH 096/154] chore(workflows): requests install workaround is no longer needed --- .github/workflows/CI.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4ccb303c63..46b9fe9402 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -104,8 +104,6 @@ jobs: cache-dependency-path: | ./pdm.lock ./Cargo.lock - - name: Work around requests bug https://github.com/psf/requests/issues/6437 - run: pip install --force requests==2.29.0 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install dependencies run: | From 7cf14adea57f17a36c979a5f4aff722ac11ad4e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:45:04 +0200 Subject: [PATCH 097/154] chore(pdm): updated dependencies using `pdm update --unconstrained` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✔ Update pytest 7.0.1 -> 8.3.3 successful ✔ Update black 23.3.0 -> 24.8.0 successful ✔ Update pluggy 1.0.0 -> 1.5.0 successful ✔ Update pyright 1.1.306 -> 1.1.384 successful ✔ Update pre-commit 2.21.0 -> 3.5.0 successful ✔ Update ruff 0.0.264 -> 0.6.9 successful --- pdm.lock | 177 +++++++++++++++++++++++-------------------------- pyproject.toml | 50 +++++++------- 2 files changed, 109 insertions(+), 118 deletions(-) diff --git a/pdm.lock b/pdm.lock index 8f928585b8..546fb78908 100644 --- a/pdm.lock +++ b/pdm.lock @@ -4,32 +4,16 @@ [metadata] groups = ["default", "dev", "test"] strategy = ["cross_platform"] -lock_version = "4.4" -content_hash = "sha256:059c14537cbb124d6a6d0a3efcf15ed933cada57de74904f7048c38992d060f1" +lock_version = "4.5.0" +content_hash = "sha256:80b7801d7cd5653a9a0a03033102535a511f92b3026aa250269b10657253e768" -[[package]] -name = "atomicwrites" -version = "1.4.1" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -summary = "Atomic file writes." -files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] - -[[package]] -name = "attrs" -version = "23.1.0" -requires_python = ">=3.7" -summary = "Classes Without Boilerplate" -files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, -] +[[metadata.targets]] +requires_python = ">=3.8" [[package]] name = "black" -version = "23.3.0" -requires_python = ">=3.7" +version = "24.8.0" +requires_python = ">=3.8" summary = "The uncompromising code formatter." dependencies = [ "click>=8.0.0", @@ -38,31 +22,31 @@ dependencies = [ "pathspec>=0.9.0", "platformdirs>=2", "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=3.10.0.0; python_version < \"3.10\"", + "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, + {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, + {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, + {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, + {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, + {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, + {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, + {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, + {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, + {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, + {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, + {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, + {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, + {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, + {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, + {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, + {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, + {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, + {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, + {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, + {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, + {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, + {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, ] [[package]] @@ -82,6 +66,7 @@ requires_python = ">=3.7" summary = "Composable command line interface toolkit" dependencies = [ "colorama; platform_system == \"Windows\"", + "importlib-metadata; python_version < \"3.8\"", ] files = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, @@ -107,6 +92,16 @@ files = [ {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, ] +[[package]] +name = "exceptiongroup" +version = "1.2.2" +requires_python = ">=3.7" +summary = "Backport of PEP 654 (exception groups)" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + [[package]] name = "filelock" version = "3.12.0" @@ -185,6 +180,9 @@ name = "platformdirs" version = "3.5.0" requires_python = ">=3.7" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +dependencies = [ + "typing-extensions>=4.5; python_version < \"3.8\"", +] files = [ {file = "platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, {file = "platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, @@ -192,18 +190,18 @@ files = [ [[package]] name = "pluggy" -version = "1.0.0" -requires_python = ">=3.6" +version = "1.5.0" +requires_python = ">=3.8" summary = "plugin and hook calling mechanisms for python" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [[package]] name = "pre-commit" -version = "2.21.0" -requires_python = ">=3.7" +version = "3.5.0" +requires_python = ">=3.8" summary = "A framework for managing and maintaining multi-language pre-commit hooks." dependencies = [ "cfgv>=2.0.0", @@ -213,51 +211,40 @@ dependencies = [ "virtualenv>=20.10.0", ] files = [ - {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, - {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, -] - -[[package]] -name = "py" -version = "1.11.0" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -summary = "library with cross-python path, ini-parsing, io, code, log facilities" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, + {file = "pre_commit-3.5.0-py2.py3-none-any.whl", hash = "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660"}, + {file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"}, ] [[package]] name = "pyright" -version = "1.1.306" +version = "1.1.384" requires_python = ">=3.7" summary = "Command line wrapper for pyright" dependencies = [ "nodeenv>=1.6.0", + "typing-extensions>=4.1", ] files = [ - {file = "pyright-1.1.306-py3-none-any.whl", hash = "sha256:008eb2a29584ae274a154d749cf81476a3073fb562a462eac8d43a753378b9db"}, - {file = "pyright-1.1.306.tar.gz", hash = "sha256:16d5d198be64de497d5f9002000a271176c381e21b977ca5566cf779b643c9ed"}, + {file = "pyright-1.1.384-py3-none-any.whl", hash = "sha256:f0b6f4db2da38f27aeb7035c26192f034587875f751b847e9ad42ed0c704ac9e"}, + {file = "pyright-1.1.384.tar.gz", hash = "sha256:25e54d61f55cbb45f1195ff89c488832d7a45d59f3e132f178fdf9ef6cafc706"}, ] [[package]] name = "pytest" -version = "7.0.1" -requires_python = ">=3.6" +version = "8.3.3" +requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" dependencies = [ - "atomicwrites>=1.0; sys_platform == \"win32\"", - "attrs>=19.2.0", "colorama; sys_platform == \"win32\"", + "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", "iniconfig", "packaging", - "pluggy<2.0,>=0.12", - "py>=1.8.2", - "tomli>=1.0.0", + "pluggy<2,>=1.5", + "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"}, - {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [[package]] @@ -308,27 +295,28 @@ files = [ [[package]] name = "ruff" -version = "0.0.264" +version = "0.6.9" requires_python = ">=3.7" -summary = "An extremely fast Python linter, written in Rust." +summary = "An extremely fast Python linter and code formatter, written in Rust." files = [ - {file = "ruff-0.0.264-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:ec2fa192c035b8b68cc2b91049c561cd69543e2b8c4d157d9aa7727320bedcca"}, - {file = "ruff-0.0.264-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d97ba8db0fb601ffe9ee996ebb97c698e427a2fd4514fefbe7b803111354f783"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4564e0f245eb515c6ed63988c21e9c40bcfd485cd1ec63bdd790f9a81d301f15"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:323ae6c1702b26c96d0fbf939c5959c37e79021f86b70f63634df918bc77f36e"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18a29ed37bf8cfe6dce8a2db56c313a64c0804095108753621f3c3321e0c9c5f"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d628de91e2be7a83128526636097d2dd890669a06143f826f6c591d79aeefbc4"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c6eb4f979b661a2dd850d9ac803842bb7b66d4926de84f09c787af82590f73"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04ec5d75e4bca754cedd20d53e2ba4920d6259e7579abfb2e8e30c3c80e41b17"}, - {file = "ruff-0.0.264-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71fd865ebacc1083259b3fb7e3eb45235a86e62e21830b8a6b067be0ec54aa2e"}, - {file = "ruff-0.0.264-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cd4f60ffc3eb15802c554a9c8581bf2117c4d3d06fbc57e0ba58f04cb1aaa47f"}, - {file = "ruff-0.0.264-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:05ee163a046fc593d150179d23f4af447fb82f3e59cd34e031ea0868c65bb8e8"}, - {file = "ruff-0.0.264-py3-none-musllinux_1_2_i686.whl", hash = "sha256:484e395d1984ab9e1e66bd42e7a5192decfee86998d07d36ee50b2fadccc8734"}, - {file = "ruff-0.0.264-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:67326fdc9ac0a1b13e229c6e24e8d115863c52cd710faaaaa588851535281d6c"}, - {file = "ruff-0.0.264-py3-none-win32.whl", hash = "sha256:5a8658ebcc37d62f72840cbdf564171c1a2b6831db482b4d917962541a2f4a44"}, - {file = "ruff-0.0.264-py3-none-win_amd64.whl", hash = "sha256:068a82a29d80848a56e3d9d4308e6e0ca8b2ecdaf5ac342a292545a59b7f2c21"}, - {file = "ruff-0.0.264-py3-none-win_arm64.whl", hash = "sha256:3e2c38449548e122f2612843a7c04e22b4fd491656955c57b8cb05df11639ad6"}, - {file = "ruff-0.0.264.tar.gz", hash = "sha256:8fcd4b693ca1374eb7a5796581c90689f884f98f388740d94f0702fd30f8f78f"}, + {file = "ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd"}, + {file = "ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec"}, + {file = "ruff-0.6.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53fd8ca5e82bdee8da7f506d7b03a261f24cd43d090ea9db9a1dc59d9313914c"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645d7d8761f915e48a00d4ecc3686969761df69fb561dd914a773c1a8266e14e"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eae02b700763e3847595b9d2891488989cac00214da7f845f4bcf2989007d577"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d5ccc9e58112441de8ad4b29dcb7a86dc25c5f770e3c06a9d57e0e5eba48829"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:417b81aa1c9b60b2f8edc463c58363075412866ae4e2b9ab0f690dc1e87ac1b5"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c866b631f5fbce896a74a6e4383407ba7507b815ccc52bcedabb6810fdb3ef7"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b118afbb3202f5911486ad52da86d1d52305b59e7ef2031cea3425142b97d6f"}, + {file = "ruff-0.6.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67267654edc23c97335586774790cde402fb6bbdb3c2314f1fc087dee320bfa"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3ef0cc774b00fec123f635ce5c547dac263f6ee9fb9cc83437c5904183b55ceb"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:12edd2af0c60fa61ff31cefb90aef4288ac4d372b4962c2864aeea3a1a2460c0"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:55bb01caeaf3a60b2b2bba07308a02fca6ab56233302406ed5245180a05c5625"}, + {file = "ruff-0.6.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:925d26471fa24b0ce5a6cdfab1bb526fb4159952385f386bdcc643813d472039"}, + {file = "ruff-0.6.9-py3-none-win32.whl", hash = "sha256:eb61ec9bdb2506cffd492e05ac40e5bc6284873aceb605503d8494180d6fc84d"}, + {file = "ruff-0.6.9-py3-none-win_amd64.whl", hash = "sha256:785d31851c1ae91f45b3d8fe23b8ae4b5170089021fbb42402d811135f0b7117"}, + {file = "ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93"}, + {file = "ruff-0.6.9.tar.gz", hash = "sha256:b076ef717a8e5bc819514ee1d602bbdca5b4420ae13a9cf61a0c0a4f53a2baa2"}, ] [[package]] @@ -369,6 +357,7 @@ summary = "Virtual Python Environment builder" dependencies = [ "distlib<1,>=0.3.6", "filelock<4,>=3.11", + "importlib-metadata>=6.4.1; python_version < \"3.8\"", "platformdirs<4,>=3.2", ] files = [ diff --git a/pyproject.toml b/pyproject.toml index a6819dcef0..6cd492197f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,35 +9,12 @@ readme = "README.md" requires-python = ">=3.8" dynamic = ["version"] # Calculated from the rust module version +dependencies = [] [project.urls] homepage = "https://unblob.org" repository = "https://github.com/onekey-sec/unblob-native" -[tool.pdm.scripts] -venv = "pdm sync -d" -pre-commit = "pre-commit run --all" -pyright = "pyright" -pytest = "python -m pytest tests" -clippy = "cargo clippy --all-targets -- --deny warnings" -test = "cargo test" -all = { composite = ["clippy", "test", "venv", "pre-commit", "pyright", "pytest"] } - -[tool.pdm.dev-dependencies] -dev = [ - "black ~= 23.3.0", - "pre-commit ~= 2.20", - "pyright == 1.1.306", - "ruff ~= 0.0.264", -] - -test = [ - "pytest ~= 7.0.0", -] - -[tool.pdm.resolution.overrides] -pyyaml = "~= 6.0.1" # For Python 3.12 compatibility - [build-system] requires = ["maturin>=1.0,<2.0"] build-backend = "maturin" @@ -136,3 +113,28 @@ reportUnusedCallResult = "warning" reportUnknownArgumentType = "none" reportUnknownVariableType = "none" reportUnknownMemberType = "none" + +[tool.pdm.scripts] +venv = "pdm sync -d" +pre-commit = "pre-commit run --all" +pyright = "pyright" +pytest = "python -m pytest tests" +clippy = "cargo clippy --all-targets -- --deny warnings" +test = "cargo test" +all = { composite = ["clippy", "test", "venv", "pre-commit", "pyright", "pytest"] } + +[tool.pdm.dev-dependencies] +dev = [ + "black>=24.8.0", + "pre-commit>=3.5.0", + "pyright>=1.1.384", + "ruff>=0.6.9", +] + +test = [ + "pytest>=8.3.3", +] + +[tool.pdm.resolution.overrides] +pyyaml = "~= 6.0.1" # For Python 3.12 compatibility + From 53be01c73cb99d2b5bc2c466b79ae4af450e9ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:32:16 +0200 Subject: [PATCH 098/154] chore(ruff): update configuration for new ruff version ISC rule is removed as it conflicts with `ruff format` --- pyproject.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6cd492197f..e90ef8ae48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ features = [ [tool.ruff] target-version = "py38" +[tool.ruff.lint] select = [ "A", # flake8-builtins "ARG", # flake8-unused-arguments @@ -44,7 +45,6 @@ select = [ "FBT", # flake8-boolean-trap "G", # flake8-logging-format "I", # isort - "ISC", # flake8-implicit-str-concats "N", # pep8-naming "PIE", # flake8-pie "PYI", # flake8-pyi @@ -73,7 +73,7 @@ ignore = [ "UP007", # non-pep604-annotation: Python 3.8 support needs legacy annotations ] -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "python/unblob_native/__init__.py" = [ "F403", "A001", @@ -85,10 +85,10 @@ ignore = [ "S101", # assert: Enable usage of asserts ] -[tool.ruff.isort] +[tool.ruff.lint.isort] known-first-party = ["unblob_native"] -[tool.ruff.flake8-pytest-style] +[tool.ruff.lint.flake8-pytest-style] fixture-parentheses = false mark-parentheses = false parametrize-names-type = "csv" From 3931ce2fd3401db6de55b990d0a7cecf36fe0fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:48:19 +0200 Subject: [PATCH 099/154] chore(pdm): resolution override no longer needed --- pyproject.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e90ef8ae48..78ca0421da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -134,7 +134,3 @@ dev = [ test = [ "pytest>=8.3.3", ] - -[tool.pdm.resolution.overrides] -pyyaml = "~= 6.0.1" # For Python 3.12 compatibility - From 04e8657121df5c0c29b3e10087451dc8a4242899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:50:19 +0200 Subject: [PATCH 100/154] chore(pre-commit): updated based on unblob's version --- .pre-commit-config.yaml | 33 ++++++-- default.nix | 95 +++++++++++---------- flake.nix | 181 +++++++++++++++++++++++----------------- pdm.lock | 2 +- 4 files changed, 182 insertions(+), 129 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2ac2223d15..46be51aa36 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,18 +9,33 @@ repos: - id: check-yaml - id: check-added-large-files - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.0.264" + - repo: local hooks: - id: ruff name: Check python (ruff) - args: [--show-source, --fix, --exit-non-zero-on-fix] - - - repo: https://github.com/psf/black - rev: 23.1.0 - hooks: - - id: black - name: Check black + language: system + types_or: [python, pyi] + require_serial: true + entry: pdm run ruff check --force-exclude + args: + [--output-format=full, --fix, --show-fixes, --exit-non-zero-on-fix] + - id: ruff-format + name: Format python (ruff) + language: system + types_or: [python, pyi] + require_serial: true + entry: pdm run ruff format --force-exclude + - id: nixfmt + name: Format Nix (nixfmt) + types: [nix] + language: system + require_serial: true + entry: bash -c 'command -v nix && nix "$@" || echo "skipping nixfmt"' nix + args: + - --experimental-features + - nix-command flakes + - --accept-flake-config + - fmt - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.21.0 diff --git a/default.nix b/default.nix index 8a0745390d..27128374c4 100644 --- a/default.nix +++ b/default.nix @@ -1,11 +1,12 @@ -{ lib -, stdenv -, craneLib -, nixFilter -, maturin -, rustPlatform -, libiconv -, python3 +{ + lib, + stdenv, + craneLib, + nixFilter, + maturin, + rustPlatform, + libiconv, + python3, }: let @@ -20,12 +21,14 @@ let # and the standalone dylib which is used for tests and benchmarks doNotLinkInheritedArtifacts = true; - buildInputs = [ - python3 - ] ++ lib.optionals stdenv.isDarwin [ - # Additional darwin specific inputs can be set here - libiconv - ]; + buildInputs = + [ + python3 + ] + ++ lib.optionals stdenv.isDarwin [ + # Additional darwin specific inputs can be set here + libiconv + ]; }; # Build *just* the cargo dependencies, so we can reuse @@ -34,9 +37,12 @@ let # Build the actual crate itself, reusing the dependency # artifacts from above. - libunblob-native = craneLib.buildPackage (commonArgs // { - inherit cargoArtifacts; - }); + libunblob-native = craneLib.buildPackage ( + commonArgs + // { + inherit cargoArtifacts; + } + ); self = python3.pkgs.buildPythonPackage { inherit (libunblob-native) pname version; @@ -64,39 +70,44 @@ let lockFile = ./Cargo.lock; }; - nativeBuildInputs = - (with rustPlatform; [ + nativeBuildInputs = ( + with rustPlatform; + [ cargoSetupHook maturinBuildHook - ]); - + ] + ); passthru = { - inherit cargoArtifacts craneLib commonArgs libunblob-native; + inherit + cargoArtifacts + craneLib + commonArgs + libunblob-native + ; tests = { pytest = - with python3.pkgs; buildPythonPackage - { - inherit (libunblob-native) pname version; - format = "other"; - - src = nixFilter - { - root = ./.; - include = [ - "pyproject.toml" - "tests" - ]; - }; - - dontBuild = true; - dontInstall = true; - - nativeCheckInputs = [ - self - pytestCheckHook + with python3.pkgs; + buildPythonPackage { + inherit (libunblob-native) pname version; + format = "other"; + + src = nixFilter { + root = ./.; + include = [ + "pyproject.toml" + "tests" ]; }; + + dontBuild = true; + dontInstall = true; + + nativeCheckInputs = [ + self + pytestCheckHook + ]; + }; }; }; }; diff --git a/flake.nix b/flake.nix index b764e057cd..a0b5b5f36e 100644 --- a/flake.nix +++ b/flake.nix @@ -16,85 +16,112 @@ }; }; - outputs = { self, nixpkgs, nix-filter, crane, flake-utils, advisory-db, ... }: { - overlays.default = final: prev: - let - craneLib = crane.mkLib final; - nixFilter = nix-filter.lib; - in - { - pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ - (python-final: python-prev: { - unblob-native = python-final.callPackage ./. { inherit craneLib nixFilter; }; - }) - ]; - }; - } - // flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { - inherit system; - overlays = [ self.overlays.default ]; - }; - - inherit (pkgs.python3Packages) unblob-native; - in + outputs = { - - checks = unblob-native.tests // ( + self, + nixpkgs, + nix-filter, + crane, + flake-utils, + advisory-db, + ... + }: + { + overlays.default = + final: prev: let - inherit (unblob-native) cargoArtifacts commonArgs craneLib libunblob-native src; + craneLib = crane.mkLib final; + nixFilter = nix-filter.lib; in { - # Build the crate as part of `nix flake check` for convenience - inherit libunblob-native; - - # Run clippy (and deny all warnings) on the crate source, - # again, reusing the dependency artifacts from above. - # - # Note that this is done as a separate derivation so that - # we can block the CI if there are issues here, but not - # prevent downstream consumers from building our crate by itself. - libunblob-native-clippy = craneLib.cargoClippy (commonArgs // { - inherit cargoArtifacts; - cargoClippyExtraArgs = "--all-targets -- --deny warnings"; - }); - - libunblob-native-doc = craneLib.cargoDoc (commonArgs // { - inherit cargoArtifacts; - }); - - # Check formatting - libunblob-native-fmt = craneLib.cargoFmt { - inherit src; - }; - - # Audit dependencies - libunblob-native-audit = craneLib.cargoAudit { - inherit src advisory-db; - }; - - } - ); - - packages = { - default = unblob-native; - inherit unblob-native; - }; - - devShells.default = pkgs.mkShell { - inputsFrom = builtins.attrValues self.checks.${system}; - - nativeBuildInputs = with pkgs; [ - black - maturin - pdm - ruff - rustc - cargo - ]; - }; - - formatter = pkgs.nixpkgs-fmt; - }); + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (python-final: python-prev: { + unblob-native = python-final.callPackage ./. { inherit craneLib nixFilter; }; + }) + ]; + }; + } + // flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; + + inherit (pkgs.python3Packages) unblob-native; + in + { + + checks = + unblob-native.tests + // ( + let + inherit (unblob-native) + cargoArtifacts + commonArgs + craneLib + libunblob-native + src + ; + in + { + # Build the crate as part of `nix flake check` for convenience + inherit libunblob-native; + + # Run clippy (and deny all warnings) on the crate source, + # again, reusing the dependency artifacts from above. + # + # Note that this is done as a separate derivation so that + # we can block the CI if there are issues here, but not + # prevent downstream consumers from building our crate by itself. + libunblob-native-clippy = craneLib.cargoClippy ( + commonArgs + // { + inherit cargoArtifacts; + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + } + ); + + libunblob-native-doc = craneLib.cargoDoc ( + commonArgs + // { + inherit cargoArtifacts; + } + ); + + # Check formatting + libunblob-native-fmt = craneLib.cargoFmt { + inherit src; + }; + + # Audit dependencies + libunblob-native-audit = craneLib.cargoAudit { + inherit src advisory-db; + }; + + } + ); + + packages = { + default = unblob-native; + inherit unblob-native; + }; + + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues self.checks.${system}; + + nativeBuildInputs = with pkgs; [ + black + maturin + pdm + ruff + rustc + cargo + ]; + }; + + formatter = pkgs.nixfmt-rfc-style; + } + ); } diff --git a/pdm.lock b/pdm.lock index 546fb78908..e63728ff1c 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev", "test"] strategy = ["cross_platform"] lock_version = "4.5.0" -content_hash = "sha256:80b7801d7cd5653a9a0a03033102535a511f92b3026aa250269b10657253e768" +content_hash = "sha256:fa4a6e5ed6074d8e68af326103d3232afbfd3c73c2c48484740a5a28794c3f09" [[metadata.targets]] requires_python = ">=3.8" From f3d50cb81bcdc04b0f4a04a6856c3f40ab687841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:42:58 +0200 Subject: [PATCH 101/154] chore(workflows): test with python 3.13 as well --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 46b9fe9402..33fbd31cbd 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -64,7 +64,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] os: [ubuntu-latest, macOS-latest] steps: - uses: actions/checkout@v3 From e596bc73efa3caf3d8fdcc5fa5f7600b76e8d22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:28:32 +0200 Subject: [PATCH 102/154] fix(landlock): raise error when cannot enable restrictions Also conditionally enabled tests for aarch64-linux, where landlock support supposed to be working, but it fails in our test environment due to limitations of Qemu user mode emulations. --- Cargo.lock | 9 +++++---- Cargo.toml | 1 + src/sandbox/linux.rs | 12 ++++++++--- src/sandbox/mod.rs | 38 ++++++++++++++++++++++++++++++++--- src/sandbox/unsupported.rs | 6 +++--- tests/test_sandbox.py | 41 ++++++++++++++++++++++++++++++++++++-- 6 files changed, 92 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a4a6fdbd7..b81bc46c14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -658,18 +658,18 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -697,6 +697,7 @@ dependencies = [ "pyo3", "pyo3-log", "rand", + "thiserror", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index a4a054fd48..a5fe9afc56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ crate-type = [ log = "0.4.22" pyo3 = "0.22.3" pyo3-log = "0.11.0" +thiserror = "1.0.64" [target.'cfg(target_os = "linux")'.dependencies] landlock = "0.4.1" diff --git a/src/sandbox/linux.rs b/src/sandbox/linux.rs index 67813c7366..9620f9bb30 100644 --- a/src/sandbox/linux.rs +++ b/src/sandbox/linux.rs @@ -1,11 +1,12 @@ use landlock::{ - path_beneath_rules, Access, AccessFs, Ruleset, RulesetAttr, RulesetCreatedAttr, ABI, + path_beneath_rules, Access, AccessFs, Ruleset, RulesetAttr, RulesetCreatedAttr, RulesetStatus, + ABI, }; use log; use std::path::Path; -use crate::sandbox::AccessFS; +use crate::sandbox::{AccessFS, SandboxError}; impl AccessFS { fn read(&self) -> Option<&Path> { @@ -41,7 +42,7 @@ impl AccessFS { } } -pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), Box> { +pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), SandboxError> { let abi = ABI::V2; let read_only: Vec<&Path> = access_rules.iter().filter_map(AccessFS::read).collect(); @@ -64,6 +65,11 @@ pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), Box) -> PyResult<()> { @@ -22,10 +35,29 @@ fn py_restrict_access(rules: &Bound<'_, PyTuple>) -> PyResult<()> { .map(|r| Ok(r.extract::()?.access)) .collect::>>()?, ) - .map_err(|err| SandboxError::new_err(err.to_string())) + .map_err(|err| PySandboxError::new_err((PySandboxErrorKind::from(&err), err.to_string()))) } -create_exception!(unblob_native.sandbox, SandboxError, PyException); +create_exception!(unblob_native.sandbox, PySandboxError, PyException); + +#[pyclass(eq, eq_int, name = "SandboxErrorKind")] +#[derive(PartialEq)] +enum PySandboxErrorKind { + NotImplementend, + NotEnforced, + Unknown, +} + +impl From<&SandboxError> for PySandboxErrorKind { + fn from(value: &SandboxError) -> Self { + #[allow(unreachable_patterns)] // There are conditional pattern variants that may not exist + match value { + SandboxError::NotImplemented => Self::NotImplementend, + SandboxError::NotEnforced => Self::NotEnforced, + _ => Self::Unknown, + } + } +} #[pyclass(name = "AccessFS", module = "unblob_native.sandbox")] #[derive(Clone)] @@ -68,7 +100,7 @@ pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { module.add_class::()?; module.add( "SandboxError", - root_module.py().get_type_bound::(), + root_module.py().get_type_bound::(), )?; root_module.add_submodule(&module)?; diff --git a/src/sandbox/unsupported.rs b/src/sandbox/unsupported.rs index 55a148a801..2e0d958d83 100644 --- a/src/sandbox/unsupported.rs +++ b/src/sandbox/unsupported.rs @@ -1,5 +1,5 @@ -use crate::sandbox::AccessFS; +use crate::sandbox::{AccessFS, SandboxError}; -pub fn restrict_access(_access_rules: &[AccessFS]) -> Result<(), Box> { - Err("Sandboxing FS access is unavailable on this system")? +pub fn restrict_access(_access_rules: &[AccessFS]) -> Result<(), SandboxError> { + Err(SandboxError::NotImplemented)? } diff --git a/tests/test_sandbox.py b/tests/test_sandbox.py index 3b2f4ab344..4685109a52 100644 --- a/tests/test_sandbox.py +++ b/tests/test_sandbox.py @@ -1,4 +1,8 @@ +import ctypes +import errno +import os import platform +from ctypes import c_uint32 from pathlib import Path import pytest @@ -31,9 +35,42 @@ def sandbox_path(tmp_path_factory: pytest.TempPathFactory) -> Path: return sandbox_path +# In include/uapi/asm-generic/unistd.h: +# #define __NR_landlock_create_ruleset 444 +__NR_landlock_create_ruleset = 444 +# In include/uapi/linux/landlock.h: +# #define LANDLOCK_CREATE_RULESET_VERSION (1U << 0) +LANDLOCK_CREATE_RULESET_VERSION = 1 << 0 + + +def landlock_supported() -> int: + if platform.system() != "Linux": + return 0 + + # https://docs.kernel.org/userspace-api/landlock.html#creating-a-new-ruleset + libc = ctypes.CDLL(None, use_errno=True) + + max_abi_version = libc.syscall( + __NR_landlock_create_ruleset, + None, + ctypes.c_size_t(0), + c_uint32(LANDLOCK_CREATE_RULESET_VERSION), + ) + if max_abi_version > 0: + return max_abi_version + + err = ctypes.get_errno() + if err in ( + errno.EOPNOTSUPP, # disabled at boot time + errno.ENOSYS, # not implememented + ): + return 0 + + raise RuntimeError("landlock_create_ruleset failed", err, os.strerror(err)) + + @pytest.mark.skipif( - platform.system() != "Linux" or platform.machine() != "x86_64", - reason="Only supported on Linux x86-64.", + not landlock_supported(), reason="Landlock support is not available on this system" ) def test_read_sandboxing(request: pytest.FixtureRequest, sandbox_path: Path): restrict_access( From 894f3fd3df63a790bab84e2e99a310743ee21f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:59:45 +0200 Subject: [PATCH 103/154] chore(ruff): suppress TRY003 It is also suppressed in Unblob tests/test_sandbox.py:65:11: TRY003 Avoid specifying long messages outside the exception class | 63 | return 0 64 | 65 | raise RuntimeError( | ___________^ 66 | | "landlock_create_ruleset system call failed", err, os.strerror(err) 67 | | ) | |_____^ TRY003 | --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 78ca0421da..688aa41785 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,6 +70,7 @@ ignore = [ "D203", # one-blank-line-before-class: D211 (no-blank-line-before-class) is used instead "D213", # multi-line-summary-second-line: D212 (multi-line-summary-first-line) is used instead "E501", # line-too-long: Let black handle line length violations + "TRY003", # raise-vanilla-args: We are adding contextual information in exception messages "UP007", # non-pep604-annotation: Python 3.8 support needs legacy annotations ] From 8c5caab6340466f9236a6b9468cbbaadc4adbc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:41:45 +0200 Subject: [PATCH 104/154] chore: bumped version to 0.1.3 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b81bc46c14..91778bb78b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -688,7 +688,7 @@ dependencies = [ [[package]] name = "unblob-native" -version = "0.1.2" +version = "0.1.3" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index a5fe9afc56..2398c2c37d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.2" +version = "0.1.3" edition = "2021" license = "MIT" From 920641821d6104c8607e0ab18d77ddb8bb680e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sun, 13 Oct 2024 18:07:57 +0200 Subject: [PATCH 105/154] CI: ensure, that upload and download artifact actions are compatible --- .github/workflows/CI.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 33fbd31cbd..d4be63b26a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -159,9 +159,9 @@ jobs: manylinux: auto docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-linux-${{ matrix.target }}-${{ matrix.platform }} path: dist - name: Test wheels run: | @@ -197,9 +197,9 @@ jobs: args: --verbose --release --out dist sccache: "true" - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-macos-${{ matrix.target }} path: dist - uses: pdm-project/setup-pdm@v3 name: Setup PDM @@ -222,9 +222,9 @@ jobs: command: sdist args: --out dist - name: Upload sdist - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: sdist path: dist release: @@ -233,9 +233,9 @@ jobs: if: "startsWith(github.ref, 'refs/tags/')" needs: [build-nix, wheel-linux, wheel-macos, sdist] steps: - - uses: actions/download-artifact@v4.1.7 + - uses: actions/download-artifact@v4 with: - name: wheels + merge-multiple: true - name: Publish to PyPI uses: PyO3/maturin-action@v1 env: From 65f05444bca8c205653c4fa91ae31d3681579920 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 14:10:06 +0000 Subject: [PATCH 106/154] chore(deps): bump pyo3 from 0.22.3 to 0.22.4 Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.22.3 to 0.22.4. - [Release notes](https://github.com/pyo3/pyo3/releases) - [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md) - [Commits](https://github.com/pyo3/pyo3/compare/v0.22.3...v0.22.4) --- updated-dependencies: - dependency-name: pyo3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 91778bb78b..bf98ad164f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -425,9 +425,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15ee168e30649f7f234c3d49ef5a7a6cbf5134289bc46c29ff3155fa3221c225" +checksum = "00e89ce2565d6044ca31a3eb79a334c3a79a841120a98f64eea9f579564cb691" dependencies = [ "cfg-if", "indoc", @@ -443,9 +443,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e61cef80755fe9e46bb8a0b8f20752ca7676dcc07a5277d8b7768c6172e529b3" +checksum = "d8afbaf3abd7325e08f35ffb8deb5892046fcb2608b703db6a583a5ba4cea01e" dependencies = [ "once_cell", "target-lexicon", @@ -453,9 +453,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ce096073ec5405f5ee2b8b31f03a68e02aa10d5d4f565eca04acc41931fa1c" +checksum = "ec15a5ba277339d04763f4c23d85987a5b08cbb494860be141e6a10a8eb88022" dependencies = [ "libc", "pyo3-build-config", @@ -474,9 +474,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2440c6d12bc8f3ae39f1e775266fa5122fd0c8891ce7520fa6048e683ad3de28" +checksum = "15e0f01b5364bcfbb686a52fc4181d412b708a68ed20c330db9fc8d2c2bf5a43" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -486,9 +486,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be962f0e06da8f8465729ea2cb71a416d2257dff56cbe40a70d3e62a93ae5d1" +checksum = "a09b550200e1e5ed9176976d0060cbc2ea82dc8515da07885e7b8153a85caacb" dependencies = [ "heck", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 2398c2c37d..bcafa40aa6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ crate-type = [ [dependencies] log = "0.4.22" -pyo3 = "0.22.3" +pyo3 = "0.22.4" pyo3-log = "0.11.0" thiserror = "1.0.64" From 759ba0c935ffda9d649d7959679cff7adb72185c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:30:58 +0200 Subject: [PATCH 107/154] fix(sandbox): typo in PySandboxErrorKind::NotImplemented --- src/sandbox/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sandbox/mod.rs b/src/sandbox/mod.rs index 97804fdde9..ac9b48df47 100644 --- a/src/sandbox/mod.rs +++ b/src/sandbox/mod.rs @@ -43,7 +43,7 @@ create_exception!(unblob_native.sandbox, PySandboxError, PyException); #[pyclass(eq, eq_int, name = "SandboxErrorKind")] #[derive(PartialEq)] enum PySandboxErrorKind { - NotImplementend, + NotImplemented, NotEnforced, Unknown, } @@ -52,7 +52,7 @@ impl From<&SandboxError> for PySandboxErrorKind { fn from(value: &SandboxError) -> Self { #[allow(unreachable_patterns)] // There are conditional pattern variants that may not exist match value { - SandboxError::NotImplemented => Self::NotImplementend, + SandboxError::NotImplemented => Self::NotImplemented, SandboxError::NotEnforced => Self::NotEnforced, _ => Self::Unknown, } From af3979f05ca9e20fc53f3e287c466ebc57610a98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:31:51 +0200 Subject: [PATCH 108/154] chore: bumped version to 0.1.4 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf98ad164f..8efe65e535 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -688,7 +688,7 @@ dependencies = [ [[package]] name = "unblob-native" -version = "0.1.3" +version = "0.1.4" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index bcafa40aa6..d21319559c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.3" +version = "0.1.4" edition = "2021" license = "MIT" From a75dd5abbd13192b4ba9585ddeec8d129b649f76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 20 Oct 2024 00:28:50 +0000 Subject: [PATCH 109/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/acb7ce45817b13dd34cb32540ff18be4e1f3ba09' (2024-10-08) → 'github:rustsec/advisory-db/57c4a0ce3a1a3cdbf9e7eaa16b5441345de50d13' (2024-10-14) • Updated input 'crane': 'github:ipetkov/crane/fd86b78f5f35f712c72147427b1eb81a9bd55d0b' (2024-10-07) → 'github:ipetkov/crane/fa8b7445ddadc37850ed222718ca86622be01967' (2024-10-18) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221' (2024-10-10) → 'github:NixOS/nixpkgs/ccc0c2126893dd20963580b6478d1a10a4512185' (2024-10-18) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 7fce5951f3..f3a192f10f 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1728429239, - "narHash": "sha256-k1KRRgmfKNhO9eU55FMkkzkneqAlwz5oLC5NSiEfGxs=", + "lastModified": 1728933535, + "narHash": "sha256-+EO3jis98fMzG2/JPeFcmWgDxxm4RO0q/TSxiXHoAFs=", "owner": "rustsec", "repo": "advisory-db", - "rev": "acb7ce45817b13dd34cb32540ff18be4e1f3ba09", + "rev": "57c4a0ce3a1a3cdbf9e7eaa16b5441345de50d13", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1728344376, - "narHash": "sha256-lxTce2XE6mfJH8Zk6yBbqsbu9/jpwdymbSH5cCbiVOA=", + "lastModified": 1729273024, + "narHash": "sha256-Mb5SemVsootkn4Q2IiY0rr9vrXdCCpQ9HnZeD/J3uXs=", "owner": "ipetkov", "repo": "crane", - "rev": "fd86b78f5f35f712c72147427b1eb81a9bd55d0b", + "rev": "fa8b7445ddadc37850ed222718ca86622be01967", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "lastModified": 1729265718, + "narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "rev": "ccc0c2126893dd20963580b6478d1a10a4512185", "type": "github" }, "original": { From 0439c66f0430d9ccef1a15e0acb5e7dac39955d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 27 Oct 2024 00:28:47 +0000 Subject: [PATCH 110/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/57c4a0ce3a1a3cdbf9e7eaa16b5441345de50d13' (2024-10-14) → 'github:rustsec/advisory-db/c586bd65ec3543e2fe2f21e358f0645220822325' (2024-10-25) • Updated input 'crane': 'github:ipetkov/crane/fa8b7445ddadc37850ed222718ca86622be01967' (2024-10-18) → 'github:ipetkov/crane/f235b656ee5b2bfd6d94c3bfd67896a575d4a6ed' (2024-10-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/ccc0c2126893dd20963580b6478d1a10a4512185' (2024-10-18) → 'github:NixOS/nixpkgs/41dea55321e5a999b17033296ac05fe8a8b5a257' (2024-10-25) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index f3a192f10f..00da051714 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1728933535, - "narHash": "sha256-+EO3jis98fMzG2/JPeFcmWgDxxm4RO0q/TSxiXHoAFs=", + "lastModified": 1729881936, + "narHash": "sha256-Fgyr39xQ0tmGhA9aEZW0onvH8QMKXU5osr48Hz4wvp4=", "owner": "rustsec", "repo": "advisory-db", - "rev": "57c4a0ce3a1a3cdbf9e7eaa16b5441345de50d13", + "rev": "c586bd65ec3543e2fe2f21e358f0645220822325", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1729273024, - "narHash": "sha256-Mb5SemVsootkn4Q2IiY0rr9vrXdCCpQ9HnZeD/J3uXs=", + "lastModified": 1729741221, + "narHash": "sha256-8AHZZXs1lFkERfBY0C8cZGElSo33D/et7NKEpLRmvzo=", "owner": "ipetkov", "repo": "crane", - "rev": "fa8b7445ddadc37850ed222718ca86622be01967", + "rev": "f235b656ee5b2bfd6d94c3bfd67896a575d4a6ed", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729265718, - "narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=", + "lastModified": 1729850857, + "narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ccc0c2126893dd20963580b6478d1a10a4512185", + "rev": "41dea55321e5a999b17033296ac05fe8a8b5a257", "type": "github" }, "original": { From c0cff9eafecf5901b87499831f5cd924cdc03385 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Nov 2024 00:28:51 +0000 Subject: [PATCH 111/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/c586bd65ec3543e2fe2f21e358f0645220822325' (2024-10-25) → 'github:rustsec/advisory-db/f3460e5ed91658ab94fa41908cfa44991f9f4f02' (2024-11-01) • Updated input 'crane': 'github:ipetkov/crane/f235b656ee5b2bfd6d94c3bfd67896a575d4a6ed' (2024-10-24) → 'github:ipetkov/crane/8658adcdad49b8f2c6cbf0cc3cb4b4db988f7638' (2024-11-01) • Updated input 'nix-filter': 'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b' (2024-03-11) → 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4' (2024-10-29) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/41dea55321e5a999b17033296ac05fe8a8b5a257' (2024-10-25) → 'github:NixOS/nixpkgs/2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53' (2024-10-30) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 00da051714..45a05e4640 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1729881936, - "narHash": "sha256-Fgyr39xQ0tmGhA9aEZW0onvH8QMKXU5osr48Hz4wvp4=", + "lastModified": 1730464311, + "narHash": "sha256-9xJoP1766XJSO1Qr0Lxg2P6dwPncTr3BJYlFMSXBd/E=", "owner": "rustsec", "repo": "advisory-db", - "rev": "c586bd65ec3543e2fe2f21e358f0645220822325", + "rev": "f3460e5ed91658ab94fa41908cfa44991f9f4f02", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1729741221, - "narHash": "sha256-8AHZZXs1lFkERfBY0C8cZGElSo33D/et7NKEpLRmvzo=", + "lastModified": 1730504891, + "narHash": "sha256-Fvieht4pai+Wey7terllZAKOj0YsaDP0e88NYs3K/Lo=", "owner": "ipetkov", "repo": "crane", - "rev": "f235b656ee5b2bfd6d94c3bfd67896a575d4a6ed", + "rev": "8658adcdad49b8f2c6cbf0cc3cb4b4db988f7638", "type": "github" }, "original": { @@ -51,11 +51,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1710156097, - "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", + "lastModified": 1730207686, + "narHash": "sha256-SCHiL+1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I=", "owner": "numtide", "repo": "nix-filter", - "rev": "3342559a24e85fc164b295c3444e8a139924675b", + "rev": "776e68c1d014c3adde193a18db9d738458cd2ba4", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729850857, - "narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=", + "lastModified": 1730272153, + "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "41dea55321e5a999b17033296ac05fe8a8b5a257", + "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", "type": "github" }, "original": { From 02f5bd421b229037a4495fc2813fc561ee1211fa Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Fri, 25 Oct 2024 12:58:08 +0200 Subject: [PATCH 112/154] chore(deps): bump rustc requirement to 1.82 When using version 1.65, the following error message is received when running cargo: > error: package `clap_lex v0.7.2` cannot be built because it requires > rustc 1.74 or newer, while the currently active rustc version is > 1.65.0 Either upgrade to rustc 1.74 or newer, or use cargo update -p > clap_lex@0.7.2 --precise ver where `ver` is the latest version of > `clap_lex` supporting rustc 1.65.0 When using version 1.74 and statrs we get: > error: unsupported output in build script of libm v0.2.9: > cargo::rustc-check-cfg=cfg(assert_no_panic) Found a cargo::key=value > build directive which is reserved for future use. Either change the > directive to cargo:key=value syntax (note the single :) or upgrade your > version of Rust. --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 6824925829..5f3ff17765 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.65.0" +channel = "1.82.0" profile = "default" From edec78f8a3cc84720d1d51848653f89a5ac4c10b Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Sun, 27 Oct 2024 13:36:57 +0100 Subject: [PATCH 113/154] chore(deps): add statrs 0.17.1 --- Cargo.lock | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 1 + 2 files changed, 156 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8efe65e535..e6f12c3124 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,6 +50,12 @@ version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +[[package]] +name = "bytemuck" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" + [[package]] name = "cast" version = "0.3.0" @@ -322,12 +328,28 @@ version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +[[package]] +name = "libm" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bda4c6077b0b08da2c48b172195795498381a7c8988c9e6212a6c55c5b9bd70" + [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "matrixmultiply" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "memchr" version = "2.5.0" @@ -343,13 +365,71 @@ dependencies = [ "autocfg", ] +[[package]] +name = "nalgebra" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "rand", + "rand_distr", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -374,6 +454,12 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "plotters" version = "0.3.5" @@ -536,6 +622,22 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "rayon" version = "1.7.0" @@ -593,6 +695,15 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + [[package]] name = "same-file" version = "1.0.6" @@ -639,6 +750,31 @@ dependencies = [ "serde", ] +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "statrs" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f697a07e4606a0a25c044de247e583a330dbb1731d11bc7350b81f48ad567255" +dependencies = [ + "approx", + "nalgebra", + "num-traits", + "rand", +] + [[package]] name = "syn" version = "2.0.79" @@ -686,6 +822,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unblob-native" version = "0.1.4" @@ -697,6 +839,7 @@ dependencies = [ "pyo3", "pyo3-log", "rand", + "statrs", "thiserror", ] @@ -792,6 +935,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "wide" +version = "0.7.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index d21319559c..4fd15c0397 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ crate-type = [ log = "0.4.22" pyo3 = "0.22.4" pyo3-log = "0.11.0" +statrs = "0.17.1" thiserror = "1.0.64" [target.'cfg(target_os = "linux")'.dependencies] From 04deb661b8d6a90deea7b388be8d392c02dbeb4a Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Fri, 25 Oct 2024 13:04:54 +0200 Subject: [PATCH 114/154] chore(deps): run pdm lock --refresh --- pdm.lock | 259 +++++++++++++++++++++++++++---------------------------- 1 file changed, 129 insertions(+), 130 deletions(-) diff --git a/pdm.lock b/pdm.lock index e63728ff1c..503ba398e9 100644 --- a/pdm.lock +++ b/pdm.lock @@ -51,17 +51,17 @@ files = [ [[package]] name = "cfgv" -version = "3.3.1" -requires_python = ">=3.6.1" +version = "3.4.0" +requires_python = ">=3.8" summary = "Validate configuration and produce human readable error messages." files = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] [[package]] name = "click" -version = "8.1.3" +version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" dependencies = [ @@ -69,8 +69,8 @@ dependencies = [ "importlib-metadata; python_version < \"3.8\"", ] files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [[package]] @@ -85,11 +85,11 @@ files = [ [[package]] name = "distlib" -version = "0.3.6" +version = "0.3.9" summary = "Distribution utilities" files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] @@ -104,22 +104,22 @@ files = [ [[package]] name = "filelock" -version = "3.12.0" -requires_python = ">=3.7" +version = "3.16.1" +requires_python = ">=3.8" summary = "A platform independent file lock." files = [ - {file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, - {file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [[package]] name = "identify" -version = "2.5.24" -requires_python = ">=3.7" +version = "2.6.1" +requires_python = ">=3.8" summary = "File identification library for Python" files = [ - {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, - {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, ] [[package]] @@ -144,48 +144,42 @@ files = [ [[package]] name = "nodeenv" -version = "1.7.0" -requires_python = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +version = "1.9.1" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Node.js virtual environment builder" -dependencies = [ - "setuptools", -] files = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] name = "packaging" -version = "23.1" -requires_python = ">=3.7" +version = "24.1" +requires_python = ">=3.8" summary = "Core utilities for Python packages" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "pathspec" -version = "0.11.1" -requires_python = ">=3.7" +version = "0.12.1" +requires_python = ">=3.8" summary = "Utility library for gitignore style pattern matching of file paths." files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "platformdirs" -version = "3.5.0" -requires_python = ">=3.7" -summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -dependencies = [ - "typing-extensions>=4.5; python_version < \"3.8\"", -] +version = "4.3.6" +requires_python = ">=3.8" +summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." files = [ - {file = "platformdirs-3.5.0-py3-none-any.whl", hash = "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4"}, - {file = "platformdirs-3.5.0.tar.gz", hash = "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [[package]] @@ -217,7 +211,7 @@ files = [ [[package]] name = "pyright" -version = "1.1.384" +version = "1.1.386" requires_python = ">=3.7" summary = "Command line wrapper for pyright" dependencies = [ @@ -225,8 +219,8 @@ dependencies = [ "typing-extensions>=4.1", ] files = [ - {file = "pyright-1.1.384-py3-none-any.whl", hash = "sha256:f0b6f4db2da38f27aeb7035c26192f034587875f751b847e9ad42ed0c704ac9e"}, - {file = "pyright-1.1.384.tar.gz", hash = "sha256:25e54d61f55cbb45f1195ff89c488832d7a45d59f3e132f178fdf9ef6cafc706"}, + {file = "pyright-1.1.386-py3-none-any.whl", hash = "sha256:7071ac495593b2258ccdbbf495f1a5c0e5f27951f6b429bed4e8b296eb5cd21d"}, + {file = "pyright-1.1.386.tar.gz", hash = "sha256:8e9975e34948ba5f8e07792a9c9d2bdceb2c6c0b61742b068d2229ca2bc4a9d9"}, ] [[package]] @@ -249,118 +243,123 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" -requires_python = ">=3.6" +version = "6.0.2" +requires_python = ">=3.8" summary = "YAML parser and emitter for Python" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "ruff" -version = "0.6.9" +version = "0.7.1" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." files = [ - {file = "ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd"}, - {file = "ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec"}, - {file = "ruff-0.6.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53fd8ca5e82bdee8da7f506d7b03a261f24cd43d090ea9db9a1dc59d9313914c"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645d7d8761f915e48a00d4ecc3686969761df69fb561dd914a773c1a8266e14e"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eae02b700763e3847595b9d2891488989cac00214da7f845f4bcf2989007d577"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d5ccc9e58112441de8ad4b29dcb7a86dc25c5f770e3c06a9d57e0e5eba48829"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:417b81aa1c9b60b2f8edc463c58363075412866ae4e2b9ab0f690dc1e87ac1b5"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c866b631f5fbce896a74a6e4383407ba7507b815ccc52bcedabb6810fdb3ef7"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b118afbb3202f5911486ad52da86d1d52305b59e7ef2031cea3425142b97d6f"}, - {file = "ruff-0.6.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67267654edc23c97335586774790cde402fb6bbdb3c2314f1fc087dee320bfa"}, - {file = "ruff-0.6.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3ef0cc774b00fec123f635ce5c547dac263f6ee9fb9cc83437c5904183b55ceb"}, - {file = "ruff-0.6.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:12edd2af0c60fa61ff31cefb90aef4288ac4d372b4962c2864aeea3a1a2460c0"}, - {file = "ruff-0.6.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:55bb01caeaf3a60b2b2bba07308a02fca6ab56233302406ed5245180a05c5625"}, - {file = "ruff-0.6.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:925d26471fa24b0ce5a6cdfab1bb526fb4159952385f386bdcc643813d472039"}, - {file = "ruff-0.6.9-py3-none-win32.whl", hash = "sha256:eb61ec9bdb2506cffd492e05ac40e5bc6284873aceb605503d8494180d6fc84d"}, - {file = "ruff-0.6.9-py3-none-win_amd64.whl", hash = "sha256:785d31851c1ae91f45b3d8fe23b8ae4b5170089021fbb42402d811135f0b7117"}, - {file = "ruff-0.6.9-py3-none-win_arm64.whl", hash = "sha256:a9641e31476d601f83cd602608739a0840e348bda93fec9f1ee816f8b6798b93"}, - {file = "ruff-0.6.9.tar.gz", hash = "sha256:b076ef717a8e5bc819514ee1d602bbdca5b4420ae13a9cf61a0c0a4f53a2baa2"}, -] - -[[package]] -name = "setuptools" -version = "67.7.2" -requires_python = ">=3.7" -summary = "Easily download, build, install, upgrade, and uninstall Python packages" -files = [ - {file = "setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"}, - {file = "setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"}, + {file = "ruff-0.7.1-py3-none-linux_armv6l.whl", hash = "sha256:cb1bc5ed9403daa7da05475d615739cc0212e861b7306f314379d958592aaa89"}, + {file = "ruff-0.7.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27c1c52a8d199a257ff1e5582d078eab7145129aa02721815ca8fa4f9612dc35"}, + {file = "ruff-0.7.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:588a34e1ef2ea55b4ddfec26bbe76bc866e92523d8c6cdec5e8aceefeff02d99"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94fc32f9cdf72dc75c451e5f072758b118ab8100727168a3df58502b43a599ca"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:985818742b833bffa543a84d1cc11b5e6871de1b4e0ac3060a59a2bae3969250"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32f1e8a192e261366c702c5fb2ece9f68d26625f198a25c408861c16dc2dea9c"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:699085bf05819588551b11751eff33e9ca58b1b86a6843e1b082a7de40da1565"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:344cc2b0814047dc8c3a8ff2cd1f3d808bb23c6658db830d25147339d9bf9ea7"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4316bbf69d5a859cc937890c7ac7a6551252b6a01b1d2c97e8fc96e45a7c8b4a"}, + {file = "ruff-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79d3af9dca4c56043e738a4d6dd1e9444b6d6c10598ac52d146e331eb155a8ad"}, + {file = "ruff-0.7.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5c121b46abde94a505175524e51891f829414e093cd8326d6e741ecfc0a9112"}, + {file = "ruff-0.7.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8422104078324ea250886954e48f1373a8fe7de59283d747c3a7eca050b4e378"}, + {file = "ruff-0.7.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:56aad830af8a9db644e80098fe4984a948e2b6fc2e73891538f43bbe478461b8"}, + {file = "ruff-0.7.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:658304f02f68d3a83c998ad8bf91f9b4f53e93e5412b8f2388359d55869727fd"}, + {file = "ruff-0.7.1-py3-none-win32.whl", hash = "sha256:b517a2011333eb7ce2d402652ecaa0ac1a30c114fbbd55c6b8ee466a7f600ee9"}, + {file = "ruff-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f38c41fcde1728736b4eb2b18850f6d1e3eedd9678c914dede554a70d5241307"}, + {file = "ruff-0.7.1-py3-none-win_arm64.whl", hash = "sha256:19aa200ec824c0f36d0c9114c8ec0087082021732979a359d6f3c390a6ff2a37"}, + {file = "ruff-0.7.1.tar.gz", hash = "sha256:9d8a41d4aa2dad1575adb98a82870cf5db5f76b2938cf2206c22c940034a36f4"}, ] [[package]] name = "tomli" -version = "2.0.1" -requires_python = ">=3.7" +version = "2.0.2" +requires_python = ">=3.8" summary = "A lil' TOML parser" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] name = "typing-extensions" -version = "4.5.0" -requires_python = ">=3.7" -summary = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.12.2" +requires_python = ">=3.8" +summary = "Backported and Experimental Type Hints for Python 3.8+" files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "virtualenv" -version = "20.23.0" -requires_python = ">=3.7" +version = "20.27.0" +requires_python = ">=3.8" summary = "Virtual Python Environment builder" dependencies = [ - "distlib<1,>=0.3.6", - "filelock<4,>=3.11", - "importlib-metadata>=6.4.1; python_version < \"3.8\"", - "platformdirs<4,>=3.2", + "distlib<1,>=0.3.7", + "filelock<4,>=3.12.2", + "importlib-metadata>=6.6; python_version < \"3.8\"", + "platformdirs<5,>=3.9.1", ] files = [ - {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"}, - {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"}, + {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, + {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, ] From 625985f5a5f318e9fae01d48219053103c784602 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Fri, 25 Oct 2024 12:56:12 +0200 Subject: [PATCH 115/154] feat(math): add chi square calculation function. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add chi_square_probability function to math_tools module. This function returns the Chi Square distribution probability. Chi-square tests are effective for distinguishing compressed from encrypted data because they evaluate the uniformity of byte distributions more rigorously than Shannon entropy. In compressed files, bytes often cluster around certain values due to patterns that still exist (albeit less detectable), resulting in a non-uniform distribution. Encrypted data, by contrast, exhibits nearly perfect uniformity, as each byte value from 0–255 is expected to appear with almost equal frequency, making it harder to detect any discernible patterns. The chi-square distribution is calculated for the stream of bytes in the chunk and expressed as an absolute number and a percentage which indicates how frequently a truly random sequence would exceed the value calculated. The percentage is the only value that is of interest from unblob's perspective, so that's why we only return it. According to ent doc⁰: > We [can] interpret the percentage as the degree to which the > sequence tested is suspected of being non-random. If the percentage is > greater than 99% or less than 1%, the sequence is almost certainly not > random. If the percentage is between 99% and 95% or between 1% and 5%, > the sequence is suspect. Percentages between 90% and 95% and 5% and 10% > indicate the sequence is “almost suspect”. [0] - https://www.fourmilab.ch/random/ --- benches/benches_main.rs | 21 +++++- python/unblob_native/math_tools.pyi | 1 + src/math_tools.rs | 101 ++++++++++++++++++++++++++-- tests/test_math.py | 22 ++++++ 4 files changed, 140 insertions(+), 5 deletions(-) diff --git a/benches/benches_main.rs b/benches/benches_main.rs index 626b1d2cbe..d32eabe375 100755 --- a/benches/benches_main.rs +++ b/benches/benches_main.rs @@ -26,6 +26,25 @@ fn shannon_entropy(c: &mut Criterion) { group.finish(); } -criterion_group!(benches, shannon_entropy); +fn chi_square_probability(c: &mut Criterion) { + let mut sample = vec![0u8; 1 * MB]; + StdRng::seed_from_u64(5).fill(&mut sample[..]); + + let mut group = c.benchmark_group("Chi square probability"); + + for sample_size in [256, 1 * kB, 64 * kB, 256 * kB, 1 * MB] { + group.throughput(Throughput::Bytes(sample_size as u64)); + group.bench_with_input( + BenchmarkId::from_parameter(sample_size), + &sample_size, + |b, &size| { + b.iter(|| unblob_native::math_tools::chi_square_probability(&sample[0..size])); + }, + ); + } + group.finish(); +} + +criterion_group!(benches, shannon_entropy, chi_square_probability); criterion_main!(benches); diff --git a/python/unblob_native/math_tools.pyi b/python/unblob_native/math_tools.pyi index 06acd2832d..b7a3c7c8ee 100644 --- a/python/unblob_native/math_tools.pyi +++ b/python/unblob_native/math_tools.pyi @@ -1 +1,2 @@ def shannon_entropy(data: bytes) -> float: ... +def chi_square_probability(data: bytes) -> float: ... diff --git a/src/math_tools.rs b/src/math_tools.rs index e5eb1182e0..87f17497a9 100644 --- a/src/math_tools.rs +++ b/src/math_tools.rs @@ -1,4 +1,5 @@ use pyo3::prelude::*; +use statrs::distribution::{ChiSquared, ContinuousCDF}; pub fn shannon_entropy(data: &[u8]) -> f64 { let mut entropy = 0.0; @@ -25,9 +26,47 @@ pub fn py_shannon_entropy(py: Python, data: &[u8]) -> PyResult { py.allow_threads(|| Ok(shannon_entropy(data))) } +pub fn chi_square_probability(data: &[u8]) -> f64 { + if data.is_empty() { + return 0.0; + } + + // Total number of possible byte values (0–255) + let num_bins = 256; + let expected_count = data.len() as f64 / num_bins as f64; + + // Frequency count for each byte value + let mut frequencies = [0u32; 256]; + for &byte in data { + frequencies[byte as usize] += 1; + } + + // Calculate chi-square statistic + let chi_square: f64 = frequencies + .iter() + .map(|&obs| { + let observed = obs as f64; + (observed - expected_count).powi(2) / expected_count + }) + .sum(); + + // Degrees of freedom: 255 (256 bins - 1) + let degrees_of_freedom = (num_bins - 1) as f64; + let chi_squared = ChiSquared::new(degrees_of_freedom).unwrap(); + + // Compute p-value (chi-square probability) + 1.0 - chi_squared.cdf(chi_square) +} +/// Calculates Chi Square of data +#[pyfunction(name = "chi_square_probability")] +pub fn py_chi_square_probability(py: Python, data: &[u8]) -> PyResult { + py.allow_threads(|| Ok(chi_square_probability(data))) +} + pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { let module = PyModule::new_bound(root_module.py(), "math_tools")?; module.add_function(wrap_pyfunction!(py_shannon_entropy, &module)?)?; + module.add_function(wrap_pyfunction!(py_chi_square_probability, &module)?)?; root_module.add_submodule(&module)?; @@ -46,10 +85,64 @@ mod tests { use super::*; - #[test] - fn test_shannon_entropy() { - let input = b"000111"; // 50% entropy distribution ~ 1 bit information + mod shannon { + use super::*; + + #[test] + fn test_shannon_entropy() { + let input = b"000111"; // 50% entropy distribution ~ 1 bit information + + assert_relative_eq!(shannon_entropy(input), 1.0); + } + } + + mod chi_square { + use super::*; + use rand::prelude::*; - assert_relative_eq!(shannon_entropy(input), 1.0); + #[test] + fn test_non_uniform_distribution() { + let uniform_distribution = [0u8; 4096]; + let chi_square_value = chi_square_probability(&uniform_distribution); + + assert_eq!( + chi_square_value, 0.0, + "Chi-square probability for fully non uniform distributions should be 0.0" + ); + } + + #[test] + fn test_uniform_distribution() { + let uniform_distribution: Vec = (0..=255).collect(); + let chi_square_value = chi_square_probability(&uniform_distribution); + + assert_eq!( + chi_square_value, 1.0, + "Chi-square probability for fully uniform distributions should be 1.0" + ); + } + + #[test] + fn test_random_distribution() { + let mut random_data = [0u8; 4096]; + StdRng::from_entropy().fill_bytes(&mut random_data); + let chi_square_value = chi_square_probability(&random_data); + + assert!( + chi_square_value > 0.0 && chi_square_value < 1.0, + "Chi-square probability for PRNG distribution should be within bounds" + ); + } + + #[test] + fn test_empty_data() { + let empty_data: Vec = Vec::new(); + let chi_square_value = chi_square_probability(&empty_data); + + assert_eq!( + chi_square_value, 0.0, + "Chi-square probability for empty data should be 0.0" + ); + } } } diff --git a/tests/test_math.py b/tests/test_math.py index e14d3546d2..6e2da51619 100644 --- a/tests/test_math.py +++ b/tests/test_math.py @@ -2,6 +2,9 @@ from unblob_native import math_tools +UNIFORM_DISTRIBUTION = bytes(x for x in range(256)) +NON_UNIFORM_DISTRIBUTION = bytes([0] * 256) + @pytest.mark.parametrize( "data,entropy", @@ -15,3 +18,22 @@ ) def test_shannon_entropy(data: bytes, entropy: float): assert math_tools.shannon_entropy(data) == pytest.approx(entropy) + + +@pytest.mark.parametrize( + "data,chi_square_value", + [ + pytest.param(b"", 0, id="empty"), + pytest.param(UNIFORM_DISTRIBUTION, 1.0, id="uniform distribution"), + pytest.param(NON_UNIFORM_DISTRIBUTION, 0.0, id="non uniform distribution"), + pytest.param( + UNIFORM_DISTRIBUTION + NON_UNIFORM_DISTRIBUTION, + 0.0, + id="partially uniform distribution", + ), + ], +) +def test_chi_square_entropy(data: bytes, chi_square_value: float): + assert math_tools.chi_square_probability(data) == pytest.approx( + chi_square_value, abs=1e-4 + ) From c4a11cf1dbfd2b21555b94a7b7b235de94b144f3 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 6 Nov 2024 14:19:59 +0100 Subject: [PATCH 116/154] tests(math): drop assert_relative_eq in favor of assert_eq --- src/math_tools.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/math_tools.rs b/src/math_tools.rs index 87f17497a9..b009d35039 100644 --- a/src/math_tools.rs +++ b/src/math_tools.rs @@ -81,8 +81,6 @@ pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { #[cfg(test)] mod tests { - use approx::assert_relative_eq; - use super::*; mod shannon { @@ -92,7 +90,7 @@ mod tests { fn test_shannon_entropy() { let input = b"000111"; // 50% entropy distribution ~ 1 bit information - assert_relative_eq!(shannon_entropy(input), 1.0); + assert_eq!(shannon_entropy(input), 1.0); } } From ebf9737c607b63b5c9648deb77c32a189180189d Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 6 Nov 2024 19:28:54 +0100 Subject: [PATCH 117/154] chore: bumped version to 0.1.5 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e6f12c3124..cd8494f4c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -830,7 +830,7 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unblob-native" -version = "0.1.4" +version = "0.1.5" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index 4fd15c0397..fd48173327 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.4" +version = "0.1.5" edition = "2021" license = "MIT" From 0f8d6e223fd1024dee4ee0f2c4cfd8fd2898e32c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 10 Nov 2024 00:28:02 +0000 Subject: [PATCH 118/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/f3460e5ed91658ab94fa41908cfa44991f9f4f02' (2024-11-01) → 'github:rustsec/advisory-db/309f899c9c083ed2ebd7ce74c7733c8f45a618cd' (2024-11-09) • Updated input 'crane': 'github:ipetkov/crane/8658adcdad49b8f2c6cbf0cc3cb4b4db988f7638' (2024-11-01) → 'github:ipetkov/crane/ef80ead953c1b28316cc3f8613904edc2eb90c28' (2024-11-08) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53' (2024-10-30) → 'github:NixOS/nixpkgs/85f7e662eda4fa3a995556527c87b2524b691933' (2024-11-07) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 45a05e4640..0db7556a4f 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1730464311, - "narHash": "sha256-9xJoP1766XJSO1Qr0Lxg2P6dwPncTr3BJYlFMSXBd/E=", + "lastModified": 1731165174, + "narHash": "sha256-Vbtg9w3N5OeZ/lsOBC69B+3OA0S2kYcqjO4bIFiYRss=", "owner": "rustsec", "repo": "advisory-db", - "rev": "f3460e5ed91658ab94fa41908cfa44991f9f4f02", + "rev": "309f899c9c083ed2ebd7ce74c7733c8f45a618cd", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1730504891, - "narHash": "sha256-Fvieht4pai+Wey7terllZAKOj0YsaDP0e88NYs3K/Lo=", + "lastModified": 1731098351, + "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", "owner": "ipetkov", "repo": "crane", - "rev": "8658adcdad49b8f2c6cbf0cc3cb4b4db988f7638", + "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730272153, - "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", + "lastModified": 1730958623, + "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", + "rev": "85f7e662eda4fa3a995556527c87b2524b691933", "type": "github" }, "original": { From 4f08dab21baabad4cc42e558147a49faa65b1fb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 17 Nov 2024 00:29:53 +0000 Subject: [PATCH 119/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/309f899c9c083ed2ebd7ce74c7733c8f45a618cd' (2024-11-09) → 'github:rustsec/advisory-db/509528f6775ad69ab114f1e4b37b4359cae5cef4' (2024-11-10) • Updated input 'flake-utils': 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17) → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b' (2024-11-13) • Updated input 'nix-filter': 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4' (2024-10-29) → 'github:numtide/nix-filter/f7653272fd234696ae94229839a99b73c9ab7de0' (2024-11-13) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/85f7e662eda4fa3a995556527c87b2524b691933' (2024-11-07) → 'github:NixOS/nixpkgs/c69a9bffbecde46b4b939465422ddc59493d3e4d' (2024-11-16) --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 0db7556a4f..735493fd42 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1731165174, - "narHash": "sha256-Vbtg9w3N5OeZ/lsOBC69B+3OA0S2kYcqjO4bIFiYRss=", + "lastModified": 1731271136, + "narHash": "sha256-VsrCHM1gP8YqBTQWBQ0TmFNAFv3lBA0PvtWh8/sA9n4=", "owner": "rustsec", "repo": "advisory-db", - "rev": "309f899c9c083ed2ebd7ce74c7733c8f45a618cd", + "rev": "509528f6775ad69ab114f1e4b37b4359cae5cef4", "type": "github" }, "original": { @@ -36,11 +36,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -51,11 +51,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1730207686, - "narHash": "sha256-SCHiL+1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I=", + "lastModified": 1731533336, + "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", "owner": "numtide", "repo": "nix-filter", - "rev": "776e68c1d014c3adde193a18db9d738458cd2ba4", + "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730958623, - "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=", + "lastModified": 1731763621, + "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "85f7e662eda4fa3a995556527c87b2524b691933", + "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d", "type": "github" }, "original": { From 6b8baf99c037821a74c0120bfc253cbac33ae1d3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Nov 2024 00:29:52 +0000 Subject: [PATCH 120/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/509528f6775ad69ab114f1e4b37b4359cae5cef4' (2024-11-10) → 'github:rustsec/advisory-db/8e353a172f1baf11c0c917cfc9ae3c5eff8b9d06' (2024-11-17) • Updated input 'crane': 'github:ipetkov/crane/ef80ead953c1b28316cc3f8613904edc2eb90c28' (2024-11-08) → 'github:ipetkov/crane/f2b4b472983817021d9ffb60838b2b36b9376b20' (2024-11-24) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/c69a9bffbecde46b4b939465422ddc59493d3e4d' (2024-11-16) → 'github:NixOS/nixpkgs/5083ec887760adfe12af64830a66807423a859a7' (2024-11-18) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 735493fd42..93024cec04 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1731271136, - "narHash": "sha256-VsrCHM1gP8YqBTQWBQ0TmFNAFv3lBA0PvtWh8/sA9n4=", + "lastModified": 1731808107, + "narHash": "sha256-HSx5EDsO07KULW4bNPVeGVAfpQqzwwS005vqISdOzNg=", "owner": "rustsec", "repo": "advisory-db", - "rev": "509528f6775ad69ab114f1e4b37b4359cae5cef4", + "rev": "8e353a172f1baf11c0c917cfc9ae3c5eff8b9d06", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1731098351, - "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", + "lastModified": 1732407143, + "narHash": "sha256-qJOGDT6PACoX+GbNH2PPx2ievlmtT1NVeTB80EkRLys=", "owner": "ipetkov", "repo": "crane", - "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", + "rev": "f2b4b472983817021d9ffb60838b2b36b9376b20", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731763621, - "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", + "lastModified": 1731890469, + "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d", + "rev": "5083ec887760adfe12af64830a66807423a859a7", "type": "github" }, "original": { From 83f7ee97a9d9fa2283adecb9fe90041e4206d481 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 00:34:08 +0000 Subject: [PATCH 121/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/8e353a172f1baf11c0c917cfc9ae3c5eff8b9d06' (2024-11-17) → 'github:rustsec/advisory-db/9dc4a0bb102451e3c71e1b639068aec5a3e1f5f3' (2024-11-28) • Updated input 'crane': 'github:ipetkov/crane/f2b4b472983817021d9ffb60838b2b36b9376b20' (2024-11-24) → 'github:ipetkov/crane/da87d1af7e4e09fd0271432340a5cadf3eb96005' (2024-11-30) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5083ec887760adfe12af64830a66807423a859a7' (2024-11-18) → 'github:NixOS/nixpkgs/4703b8d2c708e13a8cab03d865f90973536dcdf5' (2024-11-30) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 93024cec04..b832303d2a 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1731808107, - "narHash": "sha256-HSx5EDsO07KULW4bNPVeGVAfpQqzwwS005vqISdOzNg=", + "lastModified": 1732819720, + "narHash": "sha256-6H7mKBKw3VErpGcCGEamBYJsopvqqdFmJhl8slfCtOQ=", "owner": "rustsec", "repo": "advisory-db", - "rev": "8e353a172f1baf11c0c917cfc9ae3c5eff8b9d06", + "rev": "9dc4a0bb102451e3c71e1b639068aec5a3e1f5f3", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1732407143, - "narHash": "sha256-qJOGDT6PACoX+GbNH2PPx2ievlmtT1NVeTB80EkRLys=", + "lastModified": 1732991615, + "narHash": "sha256-CgEHGXSzUdlRI1MzsZmWUwW8+6MKYqtCBIDrD/5H5/o=", "owner": "ipetkov", "repo": "crane", - "rev": "f2b4b472983817021d9ffb60838b2b36b9376b20", + "rev": "da87d1af7e4e09fd0271432340a5cadf3eb96005", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731890469, - "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", + "lastModified": 1732937961, + "narHash": "sha256-B5pYT+IVaqcrfOekkwKvx/iToDnuQWzc2oyDxzzBDc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5083ec887760adfe12af64830a66807423a859a7", + "rev": "4703b8d2c708e13a8cab03d865f90973536dcdf5", "type": "github" }, "original": { From d4c68fda825f0029d54e28b39c7e341b12e15efb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Dec 2024 00:31:25 +0000 Subject: [PATCH 122/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/9dc4a0bb102451e3c71e1b639068aec5a3e1f5f3' (2024-11-28) → 'github:rustsec/advisory-db/463107188fc02ccaddefc8f4a65746afa06bb7fa' (2024-12-05) • Updated input 'crane': 'github:ipetkov/crane/da87d1af7e4e09fd0271432340a5cadf3eb96005' (2024-11-30) → 'github:ipetkov/crane/62e50137688d953557f156f01e2ad2a25b22d66c' (2024-12-05) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4703b8d2c708e13a8cab03d865f90973536dcdf5' (2024-11-30) → 'github:NixOS/nixpkgs/929116e316068c7318c54eb4d827f7d9756d5e9c' (2024-12-05) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index b832303d2a..3eefccd408 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1732819720, - "narHash": "sha256-6H7mKBKw3VErpGcCGEamBYJsopvqqdFmJhl8slfCtOQ=", + "lastModified": 1733371256, + "narHash": "sha256-gWvibGRlB+SMgqTOblVPpkcIAcl0LppLz1dBukEyXoY=", "owner": "rustsec", "repo": "advisory-db", - "rev": "9dc4a0bb102451e3c71e1b639068aec5a3e1f5f3", + "rev": "463107188fc02ccaddefc8f4a65746afa06bb7fa", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1732991615, - "narHash": "sha256-CgEHGXSzUdlRI1MzsZmWUwW8+6MKYqtCBIDrD/5H5/o=", + "lastModified": 1733418579, + "narHash": "sha256-0fJaoI4B9Nn67E1P44usZhZHkSSyWdAI23HU+X+HJCQ=", "owner": "ipetkov", "repo": "crane", - "rev": "da87d1af7e4e09fd0271432340a5cadf3eb96005", + "rev": "62e50137688d953557f156f01e2ad2a25b22d66c", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732937961, - "narHash": "sha256-B5pYT+IVaqcrfOekkwKvx/iToDnuQWzc2oyDxzzBDc4=", + "lastModified": 1733376361, + "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4703b8d2c708e13a8cab03d865f90973536dcdf5", + "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c", "type": "github" }, "original": { From 57d87cdd48c92ae0a0ff0e52ceb3e886c220552e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Dec 2024 00:31:39 +0000 Subject: [PATCH 123/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/463107188fc02ccaddefc8f4a65746afa06bb7fa' (2024-12-05) → 'github:rustsec/advisory-db/ec9ce28714bb38d77a2223e7266df705500a7f11' (2024-12-09) • Updated input 'crane': 'github:ipetkov/crane/62e50137688d953557f156f01e2ad2a25b22d66c' (2024-12-05) → 'github:ipetkov/crane/604637106e420ad99907cae401e13ab6b452e7d9' (2024-12-08) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/929116e316068c7318c54eb4d827f7d9756d5e9c' (2024-12-05) → 'github:NixOS/nixpkgs/5a48e3c2e435e95103d56590188cfed7b70e108c' (2024-12-11) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 3eefccd408..685707fd60 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1733371256, - "narHash": "sha256-gWvibGRlB+SMgqTOblVPpkcIAcl0LppLz1dBukEyXoY=", + "lastModified": 1733749954, + "narHash": "sha256-2Ug80Uf/oUujxgh02Iy5vTG0V+Ab9+YUHuRLRY0ayiY=", "owner": "rustsec", "repo": "advisory-db", - "rev": "463107188fc02ccaddefc8f4a65746afa06bb7fa", + "rev": "ec9ce28714bb38d77a2223e7266df705500a7f11", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1733418579, - "narHash": "sha256-0fJaoI4B9Nn67E1P44usZhZHkSSyWdAI23HU+X+HJCQ=", + "lastModified": 1733688869, + "narHash": "sha256-KrhxxFj1CjESDrL5+u/zsVH0K+Ik9tvoac/oFPoxSB8=", "owner": "ipetkov", "repo": "crane", - "rev": "62e50137688d953557f156f01e2ad2a25b22d66c", + "rev": "604637106e420ad99907cae401e13ab6b452e7d9", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733376361, - "narHash": "sha256-aLJxoTDDSqB+/3orsulE6/qdlX6MzDLIITLZqdgMpqo=", + "lastModified": 1733935885, + "narHash": "sha256-xyiHLs6KJ1fxeGmcCxKjJE4yJknVJxbC8Y/ZRYyC8WE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "929116e316068c7318c54eb4d827f7d9756d5e9c", + "rev": "5a48e3c2e435e95103d56590188cfed7b70e108c", "type": "github" }, "original": { From 77a25b468f52d5f6e02e7b2f575eb1a7ecce733f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 22 Dec 2024 00:29:15 +0000 Subject: [PATCH 124/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'crane': 'github:ipetkov/crane/604637106e420ad99907cae401e13ab6b452e7d9' (2024-12-08) → 'github:ipetkov/crane/72e2d02dbac80c8c86bf6bf3e785536acf8ee926' (2024-12-21) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5a48e3c2e435e95103d56590188cfed7b70e108c' (2024-12-11) → 'github:NixOS/nixpkgs/4989a246d7a390a859852baddb1013f825435cee' (2024-12-17) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 685707fd60..8f58ed76b1 100644 --- a/flake.lock +++ b/flake.lock @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1733688869, - "narHash": "sha256-KrhxxFj1CjESDrL5+u/zsVH0K+Ik9tvoac/oFPoxSB8=", + "lastModified": 1734808813, + "narHash": "sha256-3aH/0Y6ajIlfy7j52FGZ+s4icVX0oHhqBzRdlOeztqg=", "owner": "ipetkov", "repo": "crane", - "rev": "604637106e420ad99907cae401e13ab6b452e7d9", + "rev": "72e2d02dbac80c8c86bf6bf3e785536acf8ee926", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733935885, - "narHash": "sha256-xyiHLs6KJ1fxeGmcCxKjJE4yJknVJxbC8Y/ZRYyC8WE=", + "lastModified": 1734435836, + "narHash": "sha256-kMBQ5PRiFLagltK0sH+08aiNt3zGERC2297iB6vrvlU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5a48e3c2e435e95103d56590188cfed7b70e108c", + "rev": "4989a246d7a390a859852baddb1013f825435cee", "type": "github" }, "original": { From 3dfc849dfeac6ed3af26a72afc676527b3c28a2d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 Jan 2025 00:29:28 +0000 Subject: [PATCH 125/154] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'advisory-db': 'github:rustsec/advisory-db/ec9ce28714bb38d77a2223e7266df705500a7f11' (2024-12-09) → 'github:rustsec/advisory-db/63a2f39924f66ca89cf5761f299a8a244fe02543' (2025-01-03) • Updated input 'crane': 'github:ipetkov/crane/72e2d02dbac80c8c86bf6bf3e785536acf8ee926' (2024-12-21) → 'github:ipetkov/crane/9fa361afe873c740d5ca10ff526463d5807eab88' (2025-01-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4989a246d7a390a859852baddb1013f825435cee' (2024-12-17) → 'github:NixOS/nixpkgs/a27871180d30ebee8aa6b11bf7fef8a52f024733' (2025-01-03) --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 8f58ed76b1..df824c557b 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "advisory-db": { "flake": false, "locked": { - "lastModified": 1733749954, - "narHash": "sha256-2Ug80Uf/oUujxgh02Iy5vTG0V+Ab9+YUHuRLRY0ayiY=", + "lastModified": 1735928634, + "narHash": "sha256-Qg1vJOuEohAbdRmTTOLrbbGsyK9KRB54r3+aBuOMctM=", "owner": "rustsec", "repo": "advisory-db", - "rev": "ec9ce28714bb38d77a2223e7266df705500a7f11", + "rev": "63a2f39924f66ca89cf5761f299a8a244fe02543", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1734808813, - "narHash": "sha256-3aH/0Y6ajIlfy7j52FGZ+s4icVX0oHhqBzRdlOeztqg=", + "lastModified": 1736032295, + "narHash": "sha256-QNRlMxQTT3rdgsQb3QxljO14kE8xxdDXNJ/4jIm4u3Q=", "owner": "ipetkov", "repo": "crane", - "rev": "72e2d02dbac80c8c86bf6bf3e785536acf8ee926", + "rev": "9fa361afe873c740d5ca10ff526463d5807eab88", "type": "github" }, "original": { @@ -66,11 +66,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734435836, - "narHash": "sha256-kMBQ5PRiFLagltK0sH+08aiNt3zGERC2297iB6vrvlU=", + "lastModified": 1735915915, + "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4989a246d7a390a859852baddb1013f825435cee", + "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733", "type": "github" }, "original": { From 5fdcd784f65f34222c42e6ccf672801367a0c85e Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 22 Jan 2025 11:21:56 +0100 Subject: [PATCH 126/154] ci: fix setting up arm emulation on Ubuntu Noble The `qemu-efi` package is absent after upgrade. Rollout is in progress: actions/runner-images#10636 --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d4be63b26a..1816ed691b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -53,7 +53,7 @@ jobs: if: ${{ matrix.arch == 'aarch64-linux' }} run: | sudo apt update - sudo apt install -q -y qemu-system-aarch64 qemu-efi binfmt-support qemu-user-static + sudo apt install -q -y qemu-system-aarch64 qemu-efi-aarch64 binfmt-support qemu-user-static mkdir -p ~/.config/nix echo "system-features = aarch64-linux arm-linux" | sudo tee -a /etc/nix/nix.conf - name: Nix Flake checks @@ -148,7 +148,7 @@ jobs: if: ${{ matrix.cross }} run: | sudo apt update - sudo apt install -q -y qemu-system-${{ matrix.target }} qemu-efi binfmt-support qemu-user-static + sudo apt install -q -y qemu-system-${{ matrix.target }} qemu-efi-aarch64 binfmt-support qemu-user-static - name: Build wheels uses: PyO3/maturin-action@v1 with: From 95298e5069dc291b792b2fad1a636fb2acdd4dcd Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Thu, 23 Jan 2025 17:08:27 +0100 Subject: [PATCH 127/154] chore(deps): drop support for Python 3.8 --- pdm.lock | 187 +++++++++++++++++++++++++++---------------------- pyproject.toml | 8 +-- 2 files changed, 109 insertions(+), 86 deletions(-) diff --git a/pdm.lock b/pdm.lock index 503ba398e9..dca9e76f54 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,15 +5,15 @@ groups = ["default", "dev", "test"] strategy = ["cross_platform"] lock_version = "4.5.0" -content_hash = "sha256:fa4a6e5ed6074d8e68af326103d3232afbfd3c73c2c48484740a5a28794c3f09" +content_hash = "sha256:7d422bbdf47c1f19d68498aebf7082e12f636298720d3db948d3daebb1a811ea" [[metadata.targets]] -requires_python = ">=3.8" +requires_python = ">=3.9" [[package]] name = "black" -version = "24.8.0" -requires_python = ">=3.8" +version = "24.10.0" +requires_python = ">=3.9" summary = "The uncompromising code formatter." dependencies = [ "click>=8.0.0", @@ -25,28 +25,28 @@ dependencies = [ "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, - {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, - {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, - {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, - {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, - {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, - {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, - {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, - {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, - {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, - {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, - {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, - {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, - {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, - {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, - {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, - {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, - {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, - {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, - {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, - {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, - {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] [[package]] @@ -61,7 +61,7 @@ files = [ [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" requires_python = ">=3.7" summary = "Composable command line interface toolkit" dependencies = [ @@ -69,8 +69,8 @@ dependencies = [ "importlib-metadata; python_version < \"3.8\"", ] files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [[package]] @@ -104,22 +104,22 @@ files = [ [[package]] name = "filelock" -version = "3.16.1" -requires_python = ">=3.8" +version = "3.17.0" +requires_python = ">=3.9" summary = "A platform independent file lock." files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, + {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, + {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, ] [[package]] name = "identify" -version = "2.6.1" -requires_python = ">=3.8" +version = "2.6.6" +requires_python = ">=3.9" summary = "File identification library for Python" files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, + {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, + {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, ] [[package]] @@ -154,12 +154,12 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" requires_python = ">=3.8" summary = "Core utilities for Python packages" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -194,8 +194,8 @@ files = [ [[package]] name = "pre-commit" -version = "3.5.0" -requires_python = ">=3.8" +version = "4.1.0" +requires_python = ">=3.9" summary = "A framework for managing and maintaining multi-language pre-commit hooks." dependencies = [ "cfgv>=2.0.0", @@ -205,13 +205,13 @@ dependencies = [ "virtualenv>=20.10.0", ] files = [ - {file = "pre_commit-3.5.0-py2.py3-none-any.whl", hash = "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660"}, - {file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"}, + {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, + {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, ] [[package]] name = "pyright" -version = "1.1.386" +version = "1.1.392.post0" requires_python = ">=3.7" summary = "Command line wrapper for pyright" dependencies = [ @@ -219,13 +219,13 @@ dependencies = [ "typing-extensions>=4.1", ] files = [ - {file = "pyright-1.1.386-py3-none-any.whl", hash = "sha256:7071ac495593b2258ccdbbf495f1a5c0e5f27951f6b429bed4e8b296eb5cd21d"}, - {file = "pyright-1.1.386.tar.gz", hash = "sha256:8e9975e34948ba5f8e07792a9c9d2bdceb2c6c0b61742b068d2229ca2bc4a9d9"}, + {file = "pyright-1.1.392.post0-py3-none-any.whl", hash = "sha256:252f84458a46fa2f0fd4e2f91fc74f50b9ca52c757062e93f6c250c0d8329eb2"}, + {file = "pyright-1.1.392.post0.tar.gz", hash = "sha256:3b7f88de74a28dcfa90c7d90c782b6569a48c2be5f9d4add38472bdaac247ebd"}, ] [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" dependencies = [ @@ -237,8 +237,8 @@ dependencies = [ "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [[package]] @@ -283,13 +283,6 @@ files = [ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, @@ -304,38 +297,68 @@ files = [ [[package]] name = "ruff" -version = "0.7.1" +version = "0.9.2" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." files = [ - {file = "ruff-0.7.1-py3-none-linux_armv6l.whl", hash = "sha256:cb1bc5ed9403daa7da05475d615739cc0212e861b7306f314379d958592aaa89"}, - {file = "ruff-0.7.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:27c1c52a8d199a257ff1e5582d078eab7145129aa02721815ca8fa4f9612dc35"}, - {file = "ruff-0.7.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:588a34e1ef2ea55b4ddfec26bbe76bc866e92523d8c6cdec5e8aceefeff02d99"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94fc32f9cdf72dc75c451e5f072758b118ab8100727168a3df58502b43a599ca"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:985818742b833bffa543a84d1cc11b5e6871de1b4e0ac3060a59a2bae3969250"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32f1e8a192e261366c702c5fb2ece9f68d26625f198a25c408861c16dc2dea9c"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:699085bf05819588551b11751eff33e9ca58b1b86a6843e1b082a7de40da1565"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:344cc2b0814047dc8c3a8ff2cd1f3d808bb23c6658db830d25147339d9bf9ea7"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4316bbf69d5a859cc937890c7ac7a6551252b6a01b1d2c97e8fc96e45a7c8b4a"}, - {file = "ruff-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79d3af9dca4c56043e738a4d6dd1e9444b6d6c10598ac52d146e331eb155a8ad"}, - {file = "ruff-0.7.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5c121b46abde94a505175524e51891f829414e093cd8326d6e741ecfc0a9112"}, - {file = "ruff-0.7.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8422104078324ea250886954e48f1373a8fe7de59283d747c3a7eca050b4e378"}, - {file = "ruff-0.7.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:56aad830af8a9db644e80098fe4984a948e2b6fc2e73891538f43bbe478461b8"}, - {file = "ruff-0.7.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:658304f02f68d3a83c998ad8bf91f9b4f53e93e5412b8f2388359d55869727fd"}, - {file = "ruff-0.7.1-py3-none-win32.whl", hash = "sha256:b517a2011333eb7ce2d402652ecaa0ac1a30c114fbbd55c6b8ee466a7f600ee9"}, - {file = "ruff-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f38c41fcde1728736b4eb2b18850f6d1e3eedd9678c914dede554a70d5241307"}, - {file = "ruff-0.7.1-py3-none-win_arm64.whl", hash = "sha256:19aa200ec824c0f36d0c9114c8ec0087082021732979a359d6f3c390a6ff2a37"}, - {file = "ruff-0.7.1.tar.gz", hash = "sha256:9d8a41d4aa2dad1575adb98a82870cf5db5f76b2938cf2206c22c940034a36f4"}, + {file = "ruff-0.9.2-py3-none-linux_armv6l.whl", hash = "sha256:80605a039ba1454d002b32139e4970becf84b5fee3a3c3bf1c2af6f61a784347"}, + {file = "ruff-0.9.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b9aab82bb20afd5f596527045c01e6ae25a718ff1784cb92947bff1f83068b00"}, + {file = "ruff-0.9.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbd337bac1cfa96be615f6efcd4bc4d077edbc127ef30e2b8ba2a27e18c054d4"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b35259b0cbf8daa22a498018e300b9bb0174c2bbb7bcba593935158a78054d"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b6a9701d1e371bf41dca22015c3f89769da7576884d2add7317ec1ec8cb9c3c"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc53e68b3c5ae41e8faf83a3b89f4a5d7b2cb666dff4b366bb86ed2a85b481f"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8efd9da7a1ee314b910da155ca7e8953094a7c10d0c0a39bfde3fcfd2a015684"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3292c5a22ea9a5f9a185e2d131dc7f98f8534a32fb6d2ee7b9944569239c648d"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a605fdcf6e8b2d39f9436d343d1f0ff70c365a1e681546de0104bef81ce88df"}, + {file = "ruff-0.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c547f7f256aa366834829a08375c297fa63386cbe5f1459efaf174086b564247"}, + {file = "ruff-0.9.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d18bba3d3353ed916e882521bc3e0af403949dbada344c20c16ea78f47af965e"}, + {file = "ruff-0.9.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b338edc4610142355ccf6b87bd356729b62bf1bc152a2fad5b0c7dc04af77bfe"}, + {file = "ruff-0.9.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:492a5e44ad9b22a0ea98cf72e40305cbdaf27fac0d927f8bc9e1df316dcc96eb"}, + {file = "ruff-0.9.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:af1e9e9fe7b1f767264d26b1075ac4ad831c7db976911fa362d09b2d0356426a"}, + {file = "ruff-0.9.2-py3-none-win32.whl", hash = "sha256:71cbe22e178c5da20e1514e1e01029c73dc09288a8028a5d3446e6bba87a5145"}, + {file = "ruff-0.9.2-py3-none-win_amd64.whl", hash = "sha256:c5e1d6abc798419cf46eed03f54f2e0c3adb1ad4b801119dedf23fcaf69b55b5"}, + {file = "ruff-0.9.2-py3-none-win_arm64.whl", hash = "sha256:a1b63fa24149918f8b37cef2ee6fff81f24f0d74b6f0bdc37bc3e1f2143e41c6"}, + {file = "ruff-0.9.2.tar.gz", hash = "sha256:b5eceb334d55fae5f316f783437392642ae18e16dcf4f1858d55d3c2a0f8f5d0"}, ] [[package]] name = "tomli" -version = "2.0.2" +version = "2.2.1" requires_python = ">=3.8" summary = "A lil' TOML parser" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -350,7 +373,7 @@ files = [ [[package]] name = "virtualenv" -version = "20.27.0" +version = "20.29.1" requires_python = ">=3.8" summary = "Virtual Python Environment builder" dependencies = [ @@ -360,6 +383,6 @@ dependencies = [ "platformdirs<5,>=3.9.1", ] files = [ - {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, - {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, + {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, + {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, ] diff --git a/pyproject.toml b/pyproject.toml index 688aa41785..9cc3c4c0ba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ description = "Performance-critical functionality for Unblob" license = {file = "LICENSE"} readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" dynamic = ["version"] # Calculated from the rust module version dependencies = [] @@ -25,11 +25,11 @@ python-source = "python" features = [ "pyo3/extension-module", # This is an extension module - "pyo3/abi3-py38" # https://docs.python.org/3/c-api/stable.html + "pyo3/abi3-py39" # https://docs.python.org/3/c-api/stable.html ] [tool.ruff] -target-version = "py38" +target-version = "py39" [tool.ruff.lint] select = [ @@ -97,7 +97,7 @@ parametrize-names-type = "csv" [tool.pyright] include = ["unblob_native", "tests"] stubPath = "." -pythonVersion = "3.8" +pythonVersion = "3.9" # Strict mode enables additional checks: # https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-rule-defaults typeCheckingMode = "strict" From 598ba0e18390031e198a22258bcc68c8389f9c28 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Wed, 22 Jan 2025 10:59:49 +0100 Subject: [PATCH 128/154] feat(sandbox): add remove_dir / remove_file permissions to sandbox API When an extraction directory is empty, unblob will try to delete it. This can lead to PermissionError due to insufficient permissions within the sandbox. We therefore expose the RemoveDir and RemoveFile permissions through the sandbox API so it can be used by unblob. --- python/unblob_native/sandbox.pyi | 4 ++++ src/sandbox/linux.rs | 28 ++++++++++++++++++++++++++++ src/sandbox/mod.rs | 12 ++++++++++++ 3 files changed, 44 insertions(+) diff --git a/python/unblob_native/sandbox.pyi b/python/unblob_native/sandbox.pyi index 2db117542c..e147be0a20 100644 --- a/python/unblob_native/sandbox.pyi +++ b/python/unblob_native/sandbox.pyi @@ -14,6 +14,10 @@ class AccessFS: def make_reg(access_dir: _Path) -> AccessFS: ... @staticmethod def make_dir(access_dir: _Path) -> AccessFS: ... + @staticmethod + def remove_dir(access_dir: _Path) -> AccessFS: ... + @staticmethod + def remove_file(access_dir: _Path) -> AccessFS: ... def restrict_access(*args: AccessFS) -> None: ... diff --git a/src/sandbox/linux.rs b/src/sandbox/linux.rs index 9620f9bb30..50a66b2477 100644 --- a/src/sandbox/linux.rs +++ b/src/sandbox/linux.rs @@ -40,6 +40,22 @@ impl AccessFS { None } } + + fn remove_dir(&self) -> Option<&Path> { + if let Self::RemoveDir(path) = self { + Some(path) + } else { + None + } + } + + fn remove_file(&self) -> Option<&Path> { + if let Self::RemoveFile(path) = self { + Some(path) + } else { + None + } + } } pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), SandboxError> { @@ -56,6 +72,16 @@ pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), SandboxError> { let create_directory: Vec<&Path> = access_rules.iter().filter_map(AccessFS::make_dir).collect(); + let remove_directory: Vec<&Path> = access_rules + .iter() + .filter_map(AccessFS::remove_dir) + .collect(); + + let remove_file: Vec<&Path> = access_rules + .iter() + .filter_map(AccessFS::remove_file) + .collect(); + let status = Ruleset::default() .handle_access(AccessFs::from_all(abi))? .create()? @@ -63,6 +89,8 @@ pub fn restrict_access(access_rules: &[AccessFS]) -> Result<(), SandboxError> { .add_rules(path_beneath_rules(create_file, AccessFs::MakeReg))? .add_rules(path_beneath_rules(create_directory, AccessFs::MakeDir))? .add_rules(path_beneath_rules(read_only, AccessFs::from_read(abi)))? + .add_rules(path_beneath_rules(remove_directory, AccessFs::RemoveDir))? + .add_rules(path_beneath_rules(remove_file, AccessFs::RemoveFile))? .restrict_self()?; if status.ruleset == RulesetStatus::NotEnforced { diff --git a/src/sandbox/mod.rs b/src/sandbox/mod.rs index ac9b48df47..13fffd2e44 100644 --- a/src/sandbox/mod.rs +++ b/src/sandbox/mod.rs @@ -12,6 +12,8 @@ pub enum AccessFS { ReadWrite(PathBuf), MakeReg(PathBuf), MakeDir(PathBuf), + RemoveDir(PathBuf), + RemoveFile(PathBuf), } #[derive(Debug, Error)] @@ -92,6 +94,16 @@ impl PyAccessFS { fn make_dir(dir: PathBuf) -> Self { Self::new(AccessFS::MakeDir(dir)) } + + #[staticmethod] + fn remove_dir(dir: PathBuf) -> Self { + Self::new(AccessFS::RemoveDir(dir)) + } + + #[staticmethod] + fn remove_file(dir: PathBuf) -> Self { + Self::new(AccessFS::RemoveFile(dir)) + } } pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { From 6fa2dfd7156df476b759e6330abf7cf1927fe539 Mon Sep 17 00:00:00 2001 From: Quentin Kaiser Date: Fri, 24 Jan 2025 16:00:46 +0100 Subject: [PATCH 129/154] chore: bumped version to 0.1.6 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cd8494f4c7..a0473daa05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -830,7 +830,7 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unblob-native" -version = "0.1.5" +version = "0.1.6" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml index fd48173327..8c9abbb95e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unblob-native" -version = "0.1.5" +version = "0.1.6" edition = "2021" license = "MIT" From 4af07567d2228d84b987015a3feca514e795c6af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:33:55 +0100 Subject: [PATCH 130/154] chore(deps): removing unblob-native dependency --- pyproject.toml | 1 - uv.lock | 16 ---------------- 2 files changed, 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 74ff7d7c2e..87f4dcbd4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,6 @@ dependencies = [ "structlog>=24.1.0", "treelib>=1.7.0", "ubi-reader>=0.8.9", - "unblob-native>=0.1.5", ] description = "Extract files from any kind of container formats" license = { text = "MIT" } diff --git a/uv.lock b/uv.lock index fd248e521a..fce05f38cc 100644 --- a/uv.lock +++ b/uv.lock @@ -1513,7 +1513,6 @@ dependencies = [ { name = "structlog" }, { name = "treelib" }, { name = "ubi-reader" }, - { name = "unblob-native" }, ] [package.dev-dependencies] @@ -1556,7 +1555,6 @@ requires-dist = [ { name = "structlog", specifier = ">=24.1.0" }, { name = "treelib", specifier = ">=1.7.0" }, { name = "ubi-reader", specifier = ">=0.8.9" }, - { name = "unblob-native", specifier = ">=0.1.5" }, ] [package.metadata.requires-dev] @@ -1578,20 +1576,6 @@ docs = [ { name = "pillow", specifier = ">=10.2.0,<12.0" }, ] -[[package]] -name = "unblob-native" -version = "0.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/93/b1/29b5b72365e0831cf29d06de619067d48f2468a2f36d27afadb2b7d6cf5f/unblob_native-0.1.5.tar.gz", hash = "sha256:1d092f2836e5ae6a4e8cf1ff88d6a9623b610aaeb33691f36c8efc169121c67e", size = 35186 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/57/eb1c87045ca95d71bd6eaacd551d25f403826e4ba17c662cd21ba4821a4c/unblob_native-0.1.5-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ce1b88c4115848cea243b3787b9d94d0db6c940a846b9fba70d81a3795a5d99c", size = 276023 }, - { url = "https://files.pythonhosted.org/packages/8a/3f/9cb99a7373ac1b46c4cf0826e6108a79a8e602ffaf6395454c26ff6e590c/unblob_native-0.1.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d8313ac34dc5a918855883133b31abe371775f7a591be3eb8a30c2b49b557413", size = 270894 }, - { url = "https://files.pythonhosted.org/packages/5e/12/638830aed0b5406dc0a6fe7c6dcbd94862cd848facf013892819ab0565a8/unblob_native-0.1.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:494ce29ef2739b2a809d26ca7f7d304842aac882aa49d1bd473c26906bac4a61", size = 316909 }, - { url = "https://files.pythonhosted.org/packages/46/9a/397011566a8c1224d5e0c3ba6866016a8a19697baf6bb9e0eee5ac6e9449/unblob_native-0.1.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed91269171aecb39f423054c1b68d28b034f1be1e5aeab9c5f7c4bb1a9c1630c", size = 319330 }, - { url = "https://files.pythonhosted.org/packages/d8/3c/a1cb249d4f011fa78052dde47566a9214691815a1ab022f77586bd62c331/unblob_native-0.1.5-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8a3f5d11a3e8c28e03d046d22095386352e6252bc9f941bac6a9145ea9c4e4de", size = 351780 }, - { url = "https://files.pythonhosted.org/packages/0e/55/33d8a8925441e36935063ab6d80a0c23984ba9a11169a0bd32ba9e1184d8/unblob_native-0.1.5-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:20f94274822ea7b26ece88fd886fcd6ec98508f492aed12d046e4f84ef3855cb", size = 351350 }, -] - [[package]] name = "urllib3" version = "2.3.0" From f5120f138ba30a621a7893d9a1c876a6e834ca47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:10 +0100 Subject: [PATCH 131/154] chore(deps): switch to maturin build backend to build rust extension as well --- pyproject.toml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 87f4dcbd4c..755a768e25 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -180,6 +180,19 @@ exclude = [ ] typeCheckingMode = "standard" + +[tool.maturin] +locked = true +manifest-path = "rust/Cargo.toml" +module-name = "unblob._rust" +python-packages = ["unblob"] +python-source = "." + +features = [ + "pyo3/abi3-py39", # https://docs.python.org/3/c-api/stable.html + "pyo3/extension-module", # This is an extension module +] + [build-system] -build-backend = "hatchling.build" -requires = ["hatchling"] +build-backend = "maturin" +requires = ["maturin>=1.0,<2.0"] From 51836a3c3a6d669a30cee588fd656c1eb2decda1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:23 +0100 Subject: [PATCH 132/154] chore: removing no longer needed boilerplate --- rust/.github/workflows/CI.yml | 245 ------------- rust/.github/workflows/Update.yml | 26 -- rust/.github/workflows/check-mergeable.yml | 33 -- rust/.gitignore | 5 - rust/.pre-commit-config.yaml | 46 --- rust/CODE_OF_CONDUCT.md | 52 --- rust/LICENSE | 37 -- rust/README.md | 26 -- rust/SECURITY.md | 60 ---- rust/default.nix | 115 ------ rust/flake.lock | 110 ------ rust/flake.nix | 127 ------- rust/pdm.lock | 388 --------------------- rust/pdm.toml | 2 - rust/pyproject.toml | 137 -------- rust/rust-toolchain.toml | 3 - 16 files changed, 1412 deletions(-) delete mode 100644 rust/.github/workflows/CI.yml delete mode 100644 rust/.github/workflows/Update.yml delete mode 100644 rust/.github/workflows/check-mergeable.yml delete mode 100644 rust/.gitignore delete mode 100644 rust/.pre-commit-config.yaml delete mode 100644 rust/CODE_OF_CONDUCT.md delete mode 100644 rust/LICENSE delete mode 100644 rust/README.md delete mode 100644 rust/SECURITY.md delete mode 100644 rust/default.nix delete mode 100644 rust/flake.lock delete mode 100644 rust/flake.nix delete mode 100644 rust/pdm.lock delete mode 100644 rust/pdm.toml delete mode 100644 rust/pyproject.toml delete mode 100644 rust/rust-toolchain.toml diff --git a/rust/.github/workflows/CI.yml b/rust/.github/workflows/CI.yml deleted file mode 100644 index 1816ed691b..0000000000 --- a/rust/.github/workflows/CI.yml +++ /dev/null @@ -1,245 +0,0 @@ -name: CI - -on: - push: - branches: - - main - - master - tags: - - "*" - pull_request: - workflow_dispatch: - -permissions: - contents: read - -jobs: - checks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v22 - - uses: cachix/cachix-action@v12 - with: - name: unblob - authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - - name: Check Nix formatting - run: nix fmt -- --check . - - name: Check Python formatting - run: nix develop -c -- black --check --diff --color . - - name: Ruff - run: nix develop -c -- ruff check . - - build-nix: - strategy: - matrix: - include: - - os: ubuntu-latest - arch: x86_64-linux - - os: ubuntu-latest - arch: aarch64-linux - - os: macos-13 - arch: x86_64-darwin - name: Build Nix - ${{ matrix.arch }}.${{ matrix.os }} - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v22 - - uses: cachix/cachix-action@v12 - with: - name: unblob - authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - - name: Setup emulation - if: ${{ matrix.arch == 'aarch64-linux' }} - run: | - sudo apt update - sudo apt install -q -y qemu-system-aarch64 qemu-efi-aarch64 binfmt-support qemu-user-static - mkdir -p ~/.config/nix - echo "system-features = aarch64-linux arm-linux" | sudo tee -a /etc/nix/nix.conf - - name: Nix Flake checks - run: | - nix flake check --keep-going --print-build-logs --option system ${{ matrix.arch }} --extra-platforms ${{ matrix.arch }} - - pytest: - runs-on: ${{ matrix.os }} - strategy: - matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] - os: [ubuntu-latest, macOS-latest] - steps: - - uses: actions/checkout@v3 - - name: Set up PDM - uses: pdm-project/setup-pdm@v3 - with: - python-version: ${{ matrix.python-version }} - enable-pep582: false - cache: true - cache-dependency-path: | - ./pdm.lock - ./Cargo.lock - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - cache: false - - name: Cache rust - uses: Swatinem/rust-cache@v2 - with: - key: pytest-${{ matrix.os }} - - name: Install dependencies - run: | - pdm sync -v -d - - name: Run Tests - run: | - pdm pytest - - pyright: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up PDM - uses: pdm-project/setup-pdm@v3 - with: - python-version: "3.8" - enable-pep582: false - cache: true - cache-dependency-path: | - ./pdm.lock - ./Cargo.lock - - uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: Install dependencies - run: | - pdm sync -v -d - - name: Type-Check - run: | - pdm pyright - - # Build jobs are auto-generated by maturin v0.14.17 - # To update, run - # - # maturin generate-ci --platform linux macos -- github - # - wheel-linux: - runs-on: ubuntu-latest - needs: [checks, pytest, pyright] - strategy: - matrix: - include: - - target: x86_64 - platform: manylinux2014 - - target: aarch64 - platform: manylinux2014 - cross: true - - target: x86_64 - platform: musllinux_1_1 - - target: aarch64 - platform: musllinux_1_1 - cross: true - env: - CONTAINER: quay.io/pypa/${{ matrix.platform }}_${{ matrix.target }}:latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - name: Cache rust - uses: Swatinem/rust-cache@v2 - with: - key: wheel-linux-${{ matrix.target }}-${{ matrix.platform }} - - name: setup emulation - if: ${{ matrix.cross }} - run: | - sudo apt update - sudo apt install -q -y qemu-system-${{ matrix.target }} qemu-efi-aarch64 binfmt-support qemu-user-static - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - container: ${{ env.CONTAINER }} - args: --verbose --release --out dist - sccache: ${{ matrix.target == 'musllinux_1_1' }} - manylinux: auto - docker-options: -e CARGO_NET_GIT_FETCH_WITH_CLI=true - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-linux-${{ matrix.target }}-${{ matrix.platform }} - path: dist - - name: Test wheels - run: | - cat << EOF | docker run -v $PWD:/usr/src -i $CONTAINER sh -ex - - cd /usr/src - curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3.10 - - export PATH=/root/.local/bin:$PATH - pdm sync -v -d --no-self -G test - pdm run python -m ensurepip - pdm run python -m pip install dist/*.whl - pdm pytest - EOF - - wheel-macos: - runs-on: macos-13 - needs: [checks, pytest, pyright] - strategy: - matrix: - target: [x86_64, aarch64] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - name: Cache rust - uses: Swatinem/rust-cache@v2 - with: - key: wheel-macos-${{ matrix.target }} - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - args: --verbose --release --out dist - sccache: "true" - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-macos-${{ matrix.target }} - path: dist - - uses: pdm-project/setup-pdm@v3 - name: Setup PDM - - name: Test wheels - if: ${{ matrix.target == 'x86_64' }} - run: | - pdm sync -v -d --no-self -G test - pdm run python -m ensurepip - pdm run python -m pip install dist/*.whl - pdm pytest - - sdist: - runs-on: ubuntu-latest - needs: [checks, pytest, pyright] - steps: - - uses: actions/checkout@v3 - - name: Build sdist - uses: PyO3/maturin-action@v1 - with: - command: sdist - args: --out dist - - name: Upload sdist - uses: actions/upload-artifact@v4 - with: - name: sdist - path: dist - - release: - name: Release - runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" - needs: [build-nix, wheel-linux, wheel-macos, sdist] - steps: - - uses: actions/download-artifact@v4 - with: - merge-multiple: true - - name: Publish to PyPI - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.POETRY_PYPI_TOKEN_PYPI }} - with: - command: upload - args: --skip-existing * diff --git a/rust/.github/workflows/Update.yml b/rust/.github/workflows/Update.yml deleted file mode 100644 index f3746eaeee..0000000000 --- a/rust/.github/workflows/Update.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: "Update dependencies" -on: - workflow_dispatch: # allows manual triggering - schedule: - - cron: "0 0 * * 0" # runs weekly on Sunday at 00:00 - -jobs: - update-flake: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v22 - with: - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v12 - with: - name: unblob - authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - - name: Update flake.lock - uses: DeterminateSystems/update-flake-lock@v19 - with: - pr-title: "Update flake.lock" # Title of PR to be created - pr-labels: | # Labels to be set on the PR - dependencies - automated diff --git a/rust/.github/workflows/check-mergeable.yml b/rust/.github/workflows/check-mergeable.yml deleted file mode 100644 index 089cd84a7f..0000000000 --- a/rust/.github/workflows/check-mergeable.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Check branch status - -on: - pull_request: - branches: - - "**" - -jobs: - check_branch_history: - name: Check - Linear history - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.sha }} # otherwise, it'd create a merge commit - fetch-depth: "0" - - name: Check HEAD is rebased on ${{ github.event.pull_request.base.ref }} - run: | - git config --global user.name "$GITHUB_ACTOR" - git config --global user.email "github-actions@github.com" - git fetch origin $GITHUB_BASE_REF - PR_HEAD_SHA=$(git rev-parse HEAD) - git rebase FETCH_HEAD - REBASED_SHA=$(git rev-parse HEAD) - echo "PR HEAD: $PR_HEAD_SHA" - echo "Rebased HEAD: $REBASED_SHA" - git range-diff FETCH_HEAD..$PR_HEAD_SHA FETCH_HEAD..$REBASED_SHA - if [[ "$REBASED_SHA" != "$PR_HEAD_SHA" ]]; then - echo "Not fast forward, aborting!" - echo "Ensure that the PR branch is rebased on $GITHUB_BASE_REF and does not contain merge commits." - exit 1 - fi diff --git a/rust/.gitignore b/rust/.gitignore deleted file mode 100644 index 5753c1e44d..0000000000 --- a/rust/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.so -.pdm-python -/target -__pycache__ -result* diff --git a/rust/.pre-commit-config.yaml b/rust/.pre-commit-config.yaml deleted file mode 100644 index 46be51aa36..0000000000 --- a/rust/.pre-commit-config.yaml +++ /dev/null @@ -1,46 +0,0 @@ -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 - hooks: - - id: trailing-whitespace - exclude: ".*\\.md" - - id: end-of-file-fixer - - id: check-toml - - id: check-yaml - - id: check-added-large-files - - - repo: local - hooks: - - id: ruff - name: Check python (ruff) - language: system - types_or: [python, pyi] - require_serial: true - entry: pdm run ruff check --force-exclude - args: - [--output-format=full, --fix, --show-fixes, --exit-non-zero-on-fix] - - id: ruff-format - name: Format python (ruff) - language: system - types_or: [python, pyi] - require_serial: true - entry: pdm run ruff format --force-exclude - - id: nixfmt - name: Format Nix (nixfmt) - types: [nix] - language: system - require_serial: true - entry: bash -c 'command -v nix && nix "$@" || echo "skipping nixfmt"' nix - args: - - --experimental-features - - nix-command flakes - - --accept-flake-config - - fmt - - - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.21.0 - hooks: - - id: check-github-actions - name: Check Github actions - - id: check-github-workflows - name: Check Github workflows diff --git a/rust/CODE_OF_CONDUCT.md b/rust/CODE_OF_CONDUCT.md deleted file mode 100644 index b60d6e4fcc..0000000000 --- a/rust/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,52 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, and in the interest of -fostering an open and welcoming community, we pledge to respect all people who -contribute through reporting issues, posting feature requests, updating -documentation, submitting pull requests or patches, and other activities. - -We are committed to making participation in this project a harassment-free -experience for everyone, regardless of level of experience, gender, gender -identity and expression, sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, such as physical or electronic - addresses, without explicit permission -* Other unethical or unprofessional conduct - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -By adopting this Code of Conduct, project maintainers commit themselves to -fairly and consistently applying these principles to every aspect of managing -this project. Project maintainers who do not follow or enforce the Code of -Conduct may be permanently removed from the project team. - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project maintainers at research@onekey.com. If -the incident involves a committer, you may report directly to -florian.lukavsky@onekey.com. - -All complaints will be reviewed and investigated and will result in a -response that is deemed necessary and appropriate to the circumstances. -Maintainers are obligated to maintain confidentiality with regard to the -reporter of an incident. - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 1.3.0, available at -[http://contributor-covenant.org/version/1/3/0/][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/rust/LICENSE b/rust/LICENSE deleted file mode 100644 index 21826147de..0000000000 --- a/rust/LICENSE +++ /dev/null @@ -1,37 +0,0 @@ -MIT License - -Copyright (c) 2022 ONEKEY GmbH - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --- - -Logic for Unix Compress (unblob/handlers/compression/compress.py) is -ported from the unlzw project -(https://github.com/umeat/unlzw/). - -Original license: - -> Written by Brandon Owen, May 2016, brandon.owen@hotmail.com Adapted from original work by Mark Adler - orginal copyright notice below -> -> Copyright (C) 2014, 2015 Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: -> -> The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -> Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -> This notice may not be removed or altered from any source distribution. Mark Adler madler@alumni.caltech.edu diff --git a/rust/README.md b/rust/README.md deleted file mode 100644 index 81368b1ade..0000000000 --- a/rust/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# unblob-native - -Looking for Unblob? Check out at https://unblob.org. - -This package holds performance-critical components of Unblob, -an _accurate, fast, and easy-to-use_ **extraction suite**. It parses -unknown binary blobs for more than 30 different _archive, compression, and -file-system formats_, **extracts** their **content recursively**, and **carves** -out **unknown chunks** that have not been accounted for. - -Unblob is _free to use_, licensed with the _MIT license_. It has a -Command Line Interface and can be used as a Python library. -This turns unblob into the perfect companion for extracting, **analyzing**, -and **reverse engineering firmware images**. - -## Development - -This package is easiest to develop using [Nix](https://nixos.org). Refer to the -relevant section of [The Unblob Documentation](https://unblob.org/installation/#nix-package) -on how to install Nix. - -Once ready, issue `nix develop`, and the required tools will be set-up for you. - -The package is managed via [PDM](https://pdm.fming.dev/latest/). Just call `pdm -all`, and it will execute the required check and test steps for you. Use `pdm -run --list` to see what commands are being executed. diff --git a/rust/SECURITY.md b/rust/SECURITY.md deleted file mode 100644 index 89b7c11905..0000000000 --- a/rust/SECURITY.md +++ /dev/null @@ -1,60 +0,0 @@ -# Security Policy - -## Reporting -As a security company, ONEKEY commits to all of its open source products having sound and secure implementations. - -All security bugs in ONEKEY products should be reported by email to security@onekey.com. We strongly suggest that you encrypt your email content using our PGP public key (see below). Security bugs must not be reported through public Github issues. - -In accordance with the [Responsible Full Disclosure Policy (RFPolicy) v2.0](https://dl.packetstormsecurity.net/papers/general/rfpolicy-2.0.txt), your email will be acknowledged within five days. The security team will then keep you informed of the progress being made towards a fix and full announcement at least every five days. - -## Disclosure policy -ONEKEY has a 5 step disclosure process. - -1. The security report is received and is assigned a primary handler. This person will coordinate the fix and release process. - -1. The problem is confirmed and a list of all affected versions is determined. - -1. Code is audited to find any potential similar problems. - -1. Fixes are prepared and applied to the latest version. These fixes are not committed to the public repository but rather held locally pending the announcement. - -1. On the embargo date, the advisory is pushed to the affected repository’s wiki, the changes are pushed to the public repository and new builds are deployed to package repositories. A copy of the advisory is then published in the release notes. - -This process can take some time, especially when coordination is required with maintainers of other projects. Every effort will be made to handle the bug in an as timely a manner as possible, however it’s important that we follow the release process above to ensure that the disclosure is handled in a consistent manner. - -We will never push silent fixes of reported security issues to our code bases. Our security fixes commit will always contain explicit commit messages describing the issue and fix in details and reference a CVE if applicable. Our security advisories will always credit the reporter either by name, handle, or email address. If the reporter wishes to stay anonymous, we will credit them as “anonymous researcher”. - -## PGP Key - -``` ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBGJWa+gBCADwVEuade39t7qC2L997zAbHg5MvmqgL/mgAz0wc+SnB60lKP1S -ALAedVVs68ODrNIy5Ob542oXvKVaiAGPDjpD76TTHUaONKCtAWQMjd1FG/zi7U7F -wtzON22xc9pOlbf7Vind1bV6eF8rSRt8xIvhYIs6wl6cqHOAqMfOzQp/FqA9LVkd -KZwHTwcIeXm2simpNk6GkjVVjy6QRc3tO0KpLyfUGNLrUBhA9tNtzjbZ5nUESIuE -FNgCai0pX89h8PuXiRABDQq4SVxq9+Wl3xkdX0gck444fQLLRxpYVpl4mBodY79/ -Hl1MuYFzm4xgBHD5LEeZ9wgqFSRlklXGI+URABEBAAG0GnJlc2VhcmNoQGlvdC1p -bnNwZWN0b3IuY29tiQFOBBMBCAA4FiEE7X8jOwd94T3HaMCoSogMvqTieacFAmJW -a+gCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQSogMvqTieaePPAf/XRO3 -SZppFI+d9FLwzL4in8dMFAsGWOS+HzifCisNJ4ERHyyD1UK1ZlS0FyXfoylUIINl -62MjzGVrUj6p6i3qTuOjymOJYhR3I3CKLGUh5JA+DPQxJ9+kHTQbUpxvXJQ8P2BS -x3Cz11zu9EDMzEC2hbchANhJ8pUnQhAeuSbAwAxzGEvXqwm789IvuXFkGZkAR60J -eQnbvgT1Ij2Awq7oOBmOEQ79MzvB7m+Bd8uQQCOxqNCX+2TTH+PKC/2x0RwlyYG9 -yjnUyyPttyCc8dkjUiirchhE9g5kYCUNmprWw7Pr5pO+5Wuwk+1DwYGXie81aJkZ -jWqTE90EvmMbatGf4LkBDQRiVmvoAQgA0d546TrhcBPh3nbiE++kFz+Pne9fdorv -3ln2zMmFxtn6f4eNdwPlnu1vyTqTr0F/Sb39FU1t7c1UHfxbqvYHfExEKjI9Vzzy -74/rRK2RCO1PoUM4X+ngy13V4FH0EZNy0srXHZsD2TqWLCtsA34k87wBUizFaFUa -tI1Dg8ambo9i/7flovC1y3oX/hK+Ct6ey5r/SZ0gZ4esZSRb8ogddumZRFcakR6o -Vz91rHjAvvE4bxC1ioCiX0YXhst/GawwshZeq26Ju96QZQ/kSb4vwGQ1ThtSEsD4 -rypZopdv4U+JqwBlLpsL71iF+/wiEXIgja1zQc06cI9YMPKcAZSA+QARAQABiQE2 -BBgBCAAgFiEE7X8jOwd94T3HaMCoSogMvqTieacFAmJWa+gCGwwACgkQSogMvqTi -eaf7qwgAwN20J6wCUZmBD/sh27fmmpmsKGi86S8dN8Dt6QP9et5L9yMwGuxUuiLU -SByuBVCs6MvJGtyg5r1ZUbzevb3Ge7I4PPWGqnSiydxgCo8psmM7T2vpruKayfCb -FkYlwaoTAR9vD4rmftJO+X0fxwOvNtS6Xv4JNugUfeSEk4hIm5GPabSBWFd4imfy -QnTDT/JvV/HOf6LC1Nonz9aiwr6+F6MXQihZKGiK/tDoWrB5404p6JToLpeFcVaT -vylQcgCz/sFGLc4uV7XEobCDZpfP5UC+hjXpIorrTmKMSLotq8s5vx84W3qeZzgt -Gh7fzoVy9KKksJH0j1eFpBa+FgJM8g== -=obzE ------END PGP PUBLIC KEY BLOCK----- -``` diff --git a/rust/default.nix b/rust/default.nix deleted file mode 100644 index 27128374c4..0000000000 --- a/rust/default.nix +++ /dev/null @@ -1,115 +0,0 @@ -{ - lib, - stdenv, - craneLib, - nixFilter, - maturin, - rustPlatform, - libiconv, - python3, -}: - -let - src = craneLib.cleanCargoSource (craneLib.path ./.); - - # Common arguments can be set here to avoid repeating them later - commonArgs = { - inherit src; - - # python package build will recompile PyO3 when built with maturin - # as there are different build features are used for the extension module - # and the standalone dylib which is used for tests and benchmarks - doNotLinkInheritedArtifacts = true; - - buildInputs = - [ - python3 - ] - ++ lib.optionals stdenv.isDarwin [ - # Additional darwin specific inputs can be set here - libiconv - ]; - }; - - # Build *just* the cargo dependencies, so we can reuse - # all of that work (e.g. via cachix) when running in CI - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - - # Build the actual crate itself, reusing the dependency - # artifacts from above. - libunblob-native = craneLib.buildPackage ( - commonArgs - // { - inherit cargoArtifacts; - } - ); - self = python3.pkgs.buildPythonPackage { - - inherit (libunblob-native) pname version; - format = "pyproject"; - - src = nixFilter { - root = ./.; - include = [ - "Cargo.toml" - "Cargo.lock" - "pyproject.toml" - "python" - "benches" - "src" - "README.md" - "LICENSE" - ]; - }; - - buildInputs = commonArgs.buildInputs ++ [ maturin ]; - - strictDeps = true; - doCheck = false; - cargoDeps = rustPlatform.importCargoLock { - lockFile = ./Cargo.lock; - }; - - nativeBuildInputs = ( - with rustPlatform; - [ - cargoSetupHook - maturinBuildHook - ] - ); - - passthru = { - inherit - cargoArtifacts - craneLib - commonArgs - libunblob-native - ; - tests = { - pytest = - with python3.pkgs; - buildPythonPackage { - inherit (libunblob-native) pname version; - format = "other"; - - src = nixFilter { - root = ./.; - include = [ - "pyproject.toml" - "tests" - ]; - }; - - dontBuild = true; - dontInstall = true; - - nativeCheckInputs = [ - self - pytestCheckHook - ]; - }; - }; - }; - }; -in -self diff --git a/rust/flake.lock b/rust/flake.lock deleted file mode 100644 index df824c557b..0000000000 --- a/rust/flake.lock +++ /dev/null @@ -1,110 +0,0 @@ -{ - "nodes": { - "advisory-db": { - "flake": false, - "locked": { - "lastModified": 1735928634, - "narHash": "sha256-Qg1vJOuEohAbdRmTTOLrbbGsyK9KRB54r3+aBuOMctM=", - "owner": "rustsec", - "repo": "advisory-db", - "rev": "63a2f39924f66ca89cf5761f299a8a244fe02543", - "type": "github" - }, - "original": { - "owner": "rustsec", - "repo": "advisory-db", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1736032295, - "narHash": "sha256-QNRlMxQTT3rdgsQb3QxljO14kE8xxdDXNJ/4jIm4u3Q=", - "owner": "ipetkov", - "repo": "crane", - "rev": "9fa361afe873c740d5ca10ff526463d5807eab88", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nix-filter": { - "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1735915915, - "narHash": "sha256-Q4HuFAvoKAIiTRZTUxJ0ZXeTC7lLfC9/dggGHNXNlCw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a27871180d30ebee8aa6b11bf7fef8a52f024733", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "advisory-db": "advisory-db", - "crane": "crane", - "flake-utils": "flake-utils", - "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/rust/flake.nix b/rust/flake.nix deleted file mode 100644 index a0b5b5f36e..0000000000 --- a/rust/flake.nix +++ /dev/null @@ -1,127 +0,0 @@ -{ - description = "Performance sensitive parts of Unblob"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - - nix-filter.url = "github:numtide/nix-filter"; - - crane.url = "github:ipetkov/crane"; - - flake-utils.url = "github:numtide/flake-utils"; - - advisory-db = { - url = "github:rustsec/advisory-db"; - flake = false; - }; - }; - - outputs = - { - self, - nixpkgs, - nix-filter, - crane, - flake-utils, - advisory-db, - ... - }: - { - overlays.default = - final: prev: - let - craneLib = crane.mkLib final; - nixFilter = nix-filter.lib; - in - { - pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ - (python-final: python-prev: { - unblob-native = python-final.callPackage ./. { inherit craneLib nixFilter; }; - }) - ]; - }; - } - // flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = import nixpkgs { - inherit system; - overlays = [ self.overlays.default ]; - }; - - inherit (pkgs.python3Packages) unblob-native; - in - { - - checks = - unblob-native.tests - // ( - let - inherit (unblob-native) - cargoArtifacts - commonArgs - craneLib - libunblob-native - src - ; - in - { - # Build the crate as part of `nix flake check` for convenience - inherit libunblob-native; - - # Run clippy (and deny all warnings) on the crate source, - # again, reusing the dependency artifacts from above. - # - # Note that this is done as a separate derivation so that - # we can block the CI if there are issues here, but not - # prevent downstream consumers from building our crate by itself. - libunblob-native-clippy = craneLib.cargoClippy ( - commonArgs - // { - inherit cargoArtifacts; - cargoClippyExtraArgs = "--all-targets -- --deny warnings"; - } - ); - - libunblob-native-doc = craneLib.cargoDoc ( - commonArgs - // { - inherit cargoArtifacts; - } - ); - - # Check formatting - libunblob-native-fmt = craneLib.cargoFmt { - inherit src; - }; - - # Audit dependencies - libunblob-native-audit = craneLib.cargoAudit { - inherit src advisory-db; - }; - - } - ); - - packages = { - default = unblob-native; - inherit unblob-native; - }; - - devShells.default = pkgs.mkShell { - inputsFrom = builtins.attrValues self.checks.${system}; - - nativeBuildInputs = with pkgs; [ - black - maturin - pdm - ruff - rustc - cargo - ]; - }; - - formatter = pkgs.nixfmt-rfc-style; - } - ); -} diff --git a/rust/pdm.lock b/rust/pdm.lock deleted file mode 100644 index dca9e76f54..0000000000 --- a/rust/pdm.lock +++ /dev/null @@ -1,388 +0,0 @@ -# This file is @generated by PDM. -# It is not intended for manual editing. - -[metadata] -groups = ["default", "dev", "test"] -strategy = ["cross_platform"] -lock_version = "4.5.0" -content_hash = "sha256:7d422bbdf47c1f19d68498aebf7082e12f636298720d3db948d3daebb1a811ea" - -[[metadata.targets]] -requires_python = ">=3.9" - -[[package]] -name = "black" -version = "24.10.0" -requires_python = ">=3.9" -summary = "The uncompromising code formatter." -dependencies = [ - "click>=8.0.0", - "mypy-extensions>=0.4.3", - "packaging>=22.0", - "pathspec>=0.9.0", - "platformdirs>=2", - "tomli>=1.1.0; python_version < \"3.11\"", - "typing-extensions>=4.0.1; python_version < \"3.11\"", -] -files = [ - {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, - {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, - {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, - {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, - {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, - {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, - {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, - {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, - {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, - {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, - {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, - {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, - {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, - {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, - {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, - {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, - {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, - {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, - {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, - {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, - {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, - {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, -] - -[[package]] -name = "cfgv" -version = "3.4.0" -requires_python = ">=3.8" -summary = "Validate configuration and produce human readable error messages." -files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, -] - -[[package]] -name = "click" -version = "8.1.8" -requires_python = ">=3.7" -summary = "Composable command line interface toolkit" -dependencies = [ - "colorama; platform_system == \"Windows\"", - "importlib-metadata; python_version < \"3.8\"", -] -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -summary = "Cross-platform colored terminal text." -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "distlib" -version = "0.3.9" -summary = "Distribution utilities" -files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -requires_python = ">=3.7" -summary = "Backport of PEP 654 (exception groups)" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[[package]] -name = "filelock" -version = "3.17.0" -requires_python = ">=3.9" -summary = "A platform independent file lock." -files = [ - {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, - {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, -] - -[[package]] -name = "identify" -version = "2.6.6" -requires_python = ">=3.9" -summary = "File identification library for Python" -files = [ - {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, - {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -requires_python = ">=3.7" -summary = "brain-dead simple config-ini parsing" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -requires_python = ">=3.5" -summary = "Type system extensions for programs checked with the mypy type checker." -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "nodeenv" -version = "1.9.1" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -summary = "Node.js virtual environment builder" -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "packaging" -version = "24.2" -requires_python = ">=3.8" -summary = "Core utilities for Python packages" -files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -requires_python = ">=3.8" -summary = "Utility library for gitignore style pattern matching of file paths." -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -requires_python = ">=3.8" -summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -requires_python = ">=3.8" -summary = "plugin and hook calling mechanisms for python" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[[package]] -name = "pre-commit" -version = "4.1.0" -requires_python = ">=3.9" -summary = "A framework for managing and maintaining multi-language pre-commit hooks." -dependencies = [ - "cfgv>=2.0.0", - "identify>=1.0.0", - "nodeenv>=0.11.1", - "pyyaml>=5.1", - "virtualenv>=20.10.0", -] -files = [ - {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, - {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, -] - -[[package]] -name = "pyright" -version = "1.1.392.post0" -requires_python = ">=3.7" -summary = "Command line wrapper for pyright" -dependencies = [ - "nodeenv>=1.6.0", - "typing-extensions>=4.1", -] -files = [ - {file = "pyright-1.1.392.post0-py3-none-any.whl", hash = "sha256:252f84458a46fa2f0fd4e2f91fc74f50b9ca52c757062e93f6c250c0d8329eb2"}, - {file = "pyright-1.1.392.post0.tar.gz", hash = "sha256:3b7f88de74a28dcfa90c7d90c782b6569a48c2be5f9d4add38472bdaac247ebd"}, -] - -[[package]] -name = "pytest" -version = "8.3.4" -requires_python = ">=3.8" -summary = "pytest: simple powerful testing with Python" -dependencies = [ - "colorama; sys_platform == \"win32\"", - "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", - "iniconfig", - "packaging", - "pluggy<2,>=1.5", - "tomli>=1; python_version < \"3.11\"", -] -files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -requires_python = ">=3.8" -summary = "YAML parser and emitter for Python" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "ruff" -version = "0.9.2" -requires_python = ">=3.7" -summary = "An extremely fast Python linter and code formatter, written in Rust." -files = [ - {file = "ruff-0.9.2-py3-none-linux_armv6l.whl", hash = "sha256:80605a039ba1454d002b32139e4970becf84b5fee3a3c3bf1c2af6f61a784347"}, - {file = "ruff-0.9.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b9aab82bb20afd5f596527045c01e6ae25a718ff1784cb92947bff1f83068b00"}, - {file = "ruff-0.9.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbd337bac1cfa96be615f6efcd4bc4d077edbc127ef30e2b8ba2a27e18c054d4"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b35259b0cbf8daa22a498018e300b9bb0174c2bbb7bcba593935158a78054d"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b6a9701d1e371bf41dca22015c3f89769da7576884d2add7317ec1ec8cb9c3c"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc53e68b3c5ae41e8faf83a3b89f4a5d7b2cb666dff4b366bb86ed2a85b481f"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8efd9da7a1ee314b910da155ca7e8953094a7c10d0c0a39bfde3fcfd2a015684"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3292c5a22ea9a5f9a185e2d131dc7f98f8534a32fb6d2ee7b9944569239c648d"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a605fdcf6e8b2d39f9436d343d1f0ff70c365a1e681546de0104bef81ce88df"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c547f7f256aa366834829a08375c297fa63386cbe5f1459efaf174086b564247"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d18bba3d3353ed916e882521bc3e0af403949dbada344c20c16ea78f47af965e"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b338edc4610142355ccf6b87bd356729b62bf1bc152a2fad5b0c7dc04af77bfe"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:492a5e44ad9b22a0ea98cf72e40305cbdaf27fac0d927f8bc9e1df316dcc96eb"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:af1e9e9fe7b1f767264d26b1075ac4ad831c7db976911fa362d09b2d0356426a"}, - {file = "ruff-0.9.2-py3-none-win32.whl", hash = "sha256:71cbe22e178c5da20e1514e1e01029c73dc09288a8028a5d3446e6bba87a5145"}, - {file = "ruff-0.9.2-py3-none-win_amd64.whl", hash = "sha256:c5e1d6abc798419cf46eed03f54f2e0c3adb1ad4b801119dedf23fcaf69b55b5"}, - {file = "ruff-0.9.2-py3-none-win_arm64.whl", hash = "sha256:a1b63fa24149918f8b37cef2ee6fff81f24f0d74b6f0bdc37bc3e1f2143e41c6"}, - {file = "ruff-0.9.2.tar.gz", hash = "sha256:b5eceb334d55fae5f316f783437392642ae18e16dcf4f1858d55d3c2a0f8f5d0"}, -] - -[[package]] -name = "tomli" -version = "2.2.1" -requires_python = ">=3.8" -summary = "A lil' TOML parser" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -requires_python = ">=3.8" -summary = "Backported and Experimental Type Hints for Python 3.8+" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "virtualenv" -version = "20.29.1" -requires_python = ">=3.8" -summary = "Virtual Python Environment builder" -dependencies = [ - "distlib<1,>=0.3.7", - "filelock<4,>=3.12.2", - "importlib-metadata>=6.6; python_version < \"3.8\"", - "platformdirs<5,>=3.9.1", -] -files = [ - {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, - {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, -] diff --git a/rust/pdm.toml b/rust/pdm.toml deleted file mode 100644 index c140ec1e0c..0000000000 --- a/rust/pdm.toml +++ /dev/null @@ -1,2 +0,0 @@ -[venv] -with_pip = true diff --git a/rust/pyproject.toml b/rust/pyproject.toml deleted file mode 100644 index 9cc3c4c0ba..0000000000 --- a/rust/pyproject.toml +++ /dev/null @@ -1,137 +0,0 @@ -[project] -name = "unblob-native" -authors = [ - {name = "ONEKEY", email = "support@onekey.com"}, -] -description = "Performance-critical functionality for Unblob" -license = {file = "LICENSE"} -readme = "README.md" - -requires-python = ">=3.9" -dynamic = ["version"] # Calculated from the rust module version -dependencies = [] - -[project.urls] -homepage = "https://unblob.org" -repository = "https://github.com/onekey-sec/unblob-native" - -[build-system] -requires = ["maturin>=1.0,<2.0"] -build-backend = "maturin" - -[tool.maturin] -module-name = "unblob_native._native" -python-source = "python" - -features = [ - "pyo3/extension-module", # This is an extension module - "pyo3/abi3-py39" # https://docs.python.org/3/c-api/stable.html -] - -[tool.ruff] -target-version = "py39" - -[tool.ruff.lint] -select = [ - "A", # flake8-builtins - "ARG", # flake8-unused-arguments - "B", # flake8-bugbear - "C90", # mccabe - "C4", # flake8-comprehensions - "COM818", # flake8-commas; trailing-comma-on-bare-tuple - "D", # pydocstyle - "E", # pycodestyle (errors) - "F", # pyflakes - "FBT", # flake8-boolean-trap - "G", # flake8-logging-format - "I", # isort - "N", # pep8-naming - "PIE", # flake8-pie - "PYI", # flake8-pyi - "PL", # pylint - "PT", # flake8-pytest-style - "PTH", # flake8-use-pathlib - "RET", # flake8-return - "RUF", # ruff's own lints - "RSE", # flake8-raise - "S", # flake8-bandit - "SIM", # flake8-simplify - "SLF", # flake8-self - "T10", # flake8-debugger - "T20", # flake8-print - "TCH", # flake8-type-checking - "TRY", # tryceratops - "UP", # pyupgrade - "W", # pycodestyle (warnings) -] - -ignore = [ - "D1", # undocumented-*: Native extension docstrings are not picked up - "D203", # one-blank-line-before-class: D211 (no-blank-line-before-class) is used instead - "D213", # multi-line-summary-second-line: D212 (multi-line-summary-first-line) is used instead - "E501", # line-too-long: Let black handle line length violations - "TRY003", # raise-vanilla-args: We are adding contextual information in exception messages - "UP007", # non-pep604-annotation: Python 3.8 support needs legacy annotations -] - -[tool.ruff.lint.per-file-ignores] -"python/unblob_native/__init__.py" = [ - "F403", - "A001", - "F405", - "PLE0605", -] - -"tests/*" = [ - "S101", # assert: Enable usage of asserts -] - -[tool.ruff.lint.isort] -known-first-party = ["unblob_native"] - -[tool.ruff.lint.flake8-pytest-style] -fixture-parentheses = false -mark-parentheses = false -parametrize-names-type = "csv" - -[tool.pyright] -include = ["unblob_native", "tests"] -stubPath = "." -pythonVersion = "3.9" -# Strict mode enables additional checks: -# https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-rule-defaults -typeCheckingMode = "strict" - -# The following are not enabled even in strict mode -reportImportCycles = "warning" -reportMissingSuperCall = "warning" -reportPropertyTypeMismatch = "warning" -reportShadowedImports = "warning" -reportUninitializedInstanceVariable = "warning" -reportUnnecessaryTypeIgnoreComment = "warning" -reportUnusedCallResult = "warning" - -reportUnknownArgumentType = "none" -reportUnknownVariableType = "none" -reportUnknownMemberType = "none" - -[tool.pdm.scripts] -venv = "pdm sync -d" -pre-commit = "pre-commit run --all" -pyright = "pyright" -pytest = "python -m pytest tests" -clippy = "cargo clippy --all-targets -- --deny warnings" -test = "cargo test" -all = { composite = ["clippy", "test", "venv", "pre-commit", "pyright", "pytest"] } - -[tool.pdm.dev-dependencies] -dev = [ - "black>=24.8.0", - "pre-commit>=3.5.0", - "pyright>=1.1.384", - "ruff>=0.6.9", -] - -test = [ - "pytest>=8.3.3", -] diff --git a/rust/rust-toolchain.toml b/rust/rust-toolchain.toml deleted file mode 100644 index 5f3ff17765..0000000000 --- a/rust/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.82.0" -profile = "default" From 5d3cc41502f6e29443b960460c847300c341c46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:26 +0100 Subject: [PATCH 133/154] chore(rust): create a cargo workspace This way Cargo.lock is in the project root --- rust/Cargo.lock => Cargo.lock | 6 +++--- Cargo.toml | 13 +++++++++++++ rust/Cargo.toml | 18 ++++++++++-------- 3 files changed, 26 insertions(+), 11 deletions(-) rename rust/Cargo.lock => Cargo.lock (99%) create mode 100644 Cargo.toml diff --git a/rust/Cargo.lock b/Cargo.lock similarity index 99% rename from rust/Cargo.lock rename to Cargo.lock index a0473daa05..4c4e0e4a39 100644 --- a/rust/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -829,8 +829,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] -name = "unblob-native" -version = "0.1.6" +name = "unblob-rust" +version = "0.0.0" dependencies = [ "approx", "criterion", diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..5890389758 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,13 @@ +[workspace] +members = [ + "rust", +] +resolver = "2" + +[workspace.package] +authors = ["ONEKEY "] +edition = "2021" +license = "MIT" +publish = false +rust-version = "1.82.0" +version = "0.0.0" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 8c9abbb95e..7c054657d7 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,15 +1,17 @@ [package] -name = "unblob-native" -version = "0.1.6" -edition = "2021" -license = "MIT" +authors.workspace = true +edition.workspace = true +license.workspace = true +name = "unblob-rust" +rust-version.workspace = true +version.workspace = true [lib] -name = "unblob_native" crate-type = [ - "cdylib", # for Python extension - "rlib", # for benchmarking + "cdylib", # for Python extension + "rlib", # for benchmarking ] +name = "unblob_rust" [dependencies] log = "0.4.22" @@ -27,5 +29,5 @@ criterion = "0.5.1" rand = "0.8.4" [[bench]] -name = "benches_main" harness = false +name = "benches_main" From 089b45135d5ab0765a915bbec3be2f43e572a1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:27 +0100 Subject: [PATCH 134/154] chore(rust): renaming extension module to _rust This is a more descriptive name --- rust/src/lib.rs | 2 +- rust/src/math_tools.rs | 2 +- rust/src/sandbox/mod.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 076096c8e5..da974a537a 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -5,7 +5,7 @@ use pyo3::prelude::*; /// Performance-critical functionality #[pymodule] -fn _native(m: &Bound<'_, PyModule>) -> PyResult<()> { +fn _rust(m: &Bound<'_, PyModule>) -> PyResult<()> { math_tools::init_module(m)?; sandbox::init_module(m)?; diff --git a/rust/src/math_tools.rs b/rust/src/math_tools.rs index b009d35039..c3e5ae4c89 100644 --- a/rust/src/math_tools.rs +++ b/rust/src/math_tools.rs @@ -74,7 +74,7 @@ pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { .py() .import_bound("sys")? .getattr("modules")? - .set_item("unblob_native.math", module)?; + .set_item("unblob._rust.math", module)?; Ok(()) } diff --git a/rust/src/sandbox/mod.rs b/rust/src/sandbox/mod.rs index 13fffd2e44..439d6752c6 100644 --- a/rust/src/sandbox/mod.rs +++ b/rust/src/sandbox/mod.rs @@ -120,7 +120,7 @@ pub fn init_module(root_module: &Bound<'_, PyModule>) -> PyResult<()> { .py() .import_bound("sys")? .getattr("modules")? - .set_item("unblob_native.sandbox", module)?; + .set_item("unblob._rust.sandbox", module)?; Ok(()) } From 757ff22f90eb338f37873b89a7d38b67a9d1409a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:28 +0100 Subject: [PATCH 135/154] chore: merge unblob-native python tests --- tests/rust/__init__.py | 7 +++++++ {rust/tests => tests/rust}/test_math.py | 2 +- {rust/tests => tests/rust}/test_sandbox.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 tests/rust/__init__.py rename {rust/tests => tests/rust}/test_math.py (97%) rename {rust/tests => tests/rust}/test_sandbox.py (97%) diff --git a/tests/rust/__init__.py b/tests/rust/__init__.py new file mode 100644 index 0000000000..9ca4c9c686 --- /dev/null +++ b/tests/rust/__init__.py @@ -0,0 +1,7 @@ +# placeholder, so test files won't share the global module with files in parent director: +# +# > import file mismatch: +# > imported module 'test_sandbox' has this __file__ attribute: +# > /build/source/tests/rust/test_sandbox.py +# > which is not the same as the test file we want to collect: +# > /build/source/tests/test_sandbox.py diff --git a/rust/tests/test_math.py b/tests/rust/test_math.py similarity index 97% rename from rust/tests/test_math.py rename to tests/rust/test_math.py index 6e2da51619..2c9e586ce5 100644 --- a/rust/tests/test_math.py +++ b/tests/rust/test_math.py @@ -1,6 +1,6 @@ import pytest -from unblob_native import math_tools +from unblob._rust import math_tools UNIFORM_DISTRIBUTION = bytes(x for x in range(256)) NON_UNIFORM_DISTRIBUTION = bytes([0] * 256) diff --git a/rust/tests/test_sandbox.py b/tests/rust/test_sandbox.py similarity index 97% rename from rust/tests/test_sandbox.py rename to tests/rust/test_sandbox.py index 4685109a52..c266fd4002 100644 --- a/rust/tests/test_sandbox.py +++ b/tests/rust/test_sandbox.py @@ -7,7 +7,7 @@ import pytest -from unblob_native.sandbox import AccessFS, SandboxError, restrict_access +from unblob._rust.sandbox import AccessFS, SandboxError, restrict_access FILE_CONTENT = b"HELLO" From d79903b528d8cbcce8e7d64362d6b65f537aa656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:29 +0100 Subject: [PATCH 136/154] chore: retarget imports to point inside unblob module --- fuzzing/search_chunks_fuzzer.py | 2 +- unblob/processing.py | 2 +- unblob/sandbox.py | 3 ++- unblob/testing.py | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/fuzzing/search_chunks_fuzzer.py b/fuzzing/search_chunks_fuzzer.py index 4e0d83a95c..5e2efe7997 100755 --- a/fuzzing/search_chunks_fuzzer.py +++ b/fuzzing/search_chunks_fuzzer.py @@ -23,7 +23,7 @@ def extract(inpath: Path, outpath: Path): # noqa: ARG001 with atheris.import_hook.instrument_imports( - include=["unblob"], exclude=["unblob_native"] + include=["unblob"], exclude=["unblob._rust"] ): from unblob.extractors.command import Command from unblob.file_utils import File diff --git a/unblob/processing.py b/unblob/processing.py index 7f271743b8..84a149edb4 100644 --- a/unblob/processing.py +++ b/unblob/processing.py @@ -9,8 +9,8 @@ import magic import plotext as plt from structlog import get_logger -from unblob_native import math_tools as mt +from unblob._rust import math_tools as mt from unblob.handlers import BUILTIN_DIR_HANDLERS, BUILTIN_HANDLERS, Handlers from .extractor import carve_unknown_chunk, carve_valid_chunk, fix_extracted_directory diff --git a/unblob/sandbox.py b/unblob/sandbox.py index d12b27f0ea..fb7df47df9 100644 --- a/unblob/sandbox.py +++ b/unblob/sandbox.py @@ -6,7 +6,8 @@ from typing import Callable, Optional, TypeVar from structlog import get_logger -from unblob_native.sandbox import ( + +from unblob._rust.sandbox import ( AccessFS, SandboxError, restrict_access, diff --git a/unblob/testing.py b/unblob/testing.py index 196261d76a..e024e146dc 100644 --- a/unblob/testing.py +++ b/unblob/testing.py @@ -11,8 +11,8 @@ from lark.lark import Lark from lark.visitors import Discard, Transformer from pytest_cov.embed import cleanup_on_sigterm -from unblob_native.sandbox import AccessFS, SandboxError, restrict_access +from unblob._rust.sandbox import AccessFS, SandboxError, restrict_access from unblob.finder import build_hyperscan_database from unblob.logging import configure_logger from unblob.models import ProcessResult From b3726ce35e701175c255b099b4416a298439affb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:36 +0100 Subject: [PATCH 137/154] chore(devenv): add rust tooling --- devenv.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/devenv.nix b/devenv.nix index dd68703545..aecd0d2bf4 100644 --- a/devenv.nix +++ b/devenv.nix @@ -24,6 +24,7 @@ ]; }; }; + languages.rust.enable = true; env.UV_LINK_MODE = "copy"; From 7d289c4703b1b70953894fdc5fb6b52ea16f1e24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:40 +0100 Subject: [PATCH 138/154] chore(nix): adjust package building --- flake.lock | 106 +--------------------------------------------------- flake.nix | 6 --- overlay.nix | 14 ++++++- 3 files changed, 13 insertions(+), 113 deletions(-) diff --git a/flake.lock b/flake.lock index 84f69f91b7..73c49b917b 100644 --- a/flake.lock +++ b/flake.lock @@ -1,21 +1,5 @@ { "nodes": { - "advisory-db": { - "flake": false, - "locked": { - "lastModified": 1735928634, - "narHash": "sha256-Qg1vJOuEohAbdRmTTOLrbbGsyK9KRB54r3+aBuOMctM=", - "owner": "rustsec", - "repo": "advisory-db", - "rev": "63a2f39924f66ca89cf5761f299a8a244fe02543", - "type": "github" - }, - "original": { - "owner": "rustsec", - "repo": "advisory-db", - "type": "github" - } - }, "cachix": { "inputs": { "devenv": "devenv_2", @@ -82,21 +66,6 @@ "type": "github" } }, - "crane": { - "locked": { - "lastModified": 1736032295, - "narHash": "sha256-QNRlMxQTT3rdgsQb3QxljO14kE8xxdDXNJ/4jIm4u3Q=", - "owner": "ipetkov", - "repo": "crane", - "rev": "9fa361afe873c740d5ca10ff526463d5807eab88", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "devenv": { "inputs": { "cachix": "cachix", @@ -309,24 +278,6 @@ "type": "github" } }, - "flake-utils_3": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -393,21 +344,6 @@ "type": "github" } }, - "nix-filter": { - "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -716,8 +652,7 @@ "devenv": "devenv", "filter": "filter", "flake-compat": "flake-compat_3", - "nixpkgs": "nixpkgs_3", - "unblob-native": "unblob-native" + "nixpkgs": "nixpkgs_3" } }, "systems": { @@ -734,45 +669,6 @@ "repo": "default", "type": "github" } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "unblob-native": { - "inputs": { - "advisory-db": "advisory-db", - "crane": "crane", - "flake-utils": "flake-utils_3", - "nix-filter": "nix-filter", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1736087889, - "narHash": "sha256-BblrBZ8iB9UQjYYn7digOVmJsAqLcNNZTSNZE0tDSB8=", - "owner": "onekey-sec", - "repo": "unblob-native", - "rev": "cb61f36fe73ee6e1729a33818d0650e0b5ea902d", - "type": "github" - }, - "original": { - "owner": "onekey-sec", - "repo": "unblob-native", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index a1bc0fbea6..ab89e0d1d3 100644 --- a/flake.nix +++ b/flake.nix @@ -3,10 +3,6 @@ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; inputs.filter.url = "github:numtide/nix-filter"; - inputs.unblob-native = { - url = "github:onekey-sec/unblob-native"; - inputs.nixpkgs.follows = "nixpkgs"; - }; inputs.flake-compat = { url = "github:edolstra/flake-compat"; flake = false; @@ -29,7 +25,6 @@ nixpkgs, devenv, filter, - unblob-native, ... }@inputs: let @@ -58,7 +53,6 @@ { overlays.default = nixpkgs.lib.composeManyExtensions [ filter.overlays.default - unblob-native.overlays.default (import ./overlay.nix) ]; packages = forAllSystems ( diff --git a/overlay.nix b/overlay.nix index 390e14d2e8..e6d0749b85 100644 --- a/overlay.nix +++ b/overlay.nix @@ -13,21 +13,31 @@ final: prev: pyproject_toml = (builtins.fromTOML (builtins.readFile ./pyproject.toml)); version = pyproject_toml.project.version; in - (prev.unblob.override { e2fsprogs = final.e2fsprogs-nofortify; }).overridePythonAttrs (super: { + (prev.unblob.override { e2fsprogs = final.e2fsprogs-nofortify; }).overridePythonAttrs (super: rec { inherit version; src = final.nix-filter { root = ./.; include = [ + "Cargo.lock" + "Cargo.toml" "pyproject.toml" "unblob" + "rust" "tests" "README.md" ]; }; # remove this when packaging changes are upstreamed - build-system = with final.python3.pkgs; [ hatchling ]; + cargoDeps = final.rustPlatform.importCargoLock { + lockFile = ./Cargo.lock; + }; + + nativeBuildInputs = with final.rustPlatform; [ + cargoSetupHook + maturinBuildHook + ]; # override disabling of 'test_all_handlers[filesystem.extfs]' from upstream pytestFlagsArray = [ From 530eacf091d6e57984d28714e6bbcadbab265de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:41 +0100 Subject: [PATCH 139/154] chore: mv unblob python/unblob This is done to circumvent an import resolution ambiguity[^1]: When executing Python scripts such as `pytest` or `unblob` itself, the current directory will be placed into `sys.path`, so imports from `unblob` packages short-circuit and will be resolved from the source root, and won't go through the virtualenv at all. This makes it impossible for imports to be resolved from the virtualenv, even if a non-editable unblob package is installed to it. This is less of an issue in most cases, as the package mostly a 1-to-1 copy of the source root. However, with extension modules, the following test setup just won't work: - build wheel - create virtualenv - install wheel - run pytest inside the repo root We are using this flow for the docker image and Nix builds as well. [^1]: https://www.maturin.rs/project_layout.html#mixed-rustpython-project --- .github/codeql/codeql-config.yml | 2 +- overlay.nix | 2 +- pyproject.toml | 9 ++++++--- {unblob => python/unblob}/__init__.py | 0 {unblob => python/unblob}/cli.py | 0 {unblob => python/unblob}/cli_options.py | 0 {unblob => python/unblob}/dependencies.py | 0 {unblob => python/unblob}/extractor.py | 0 {unblob => python/unblob}/extractors/README.md | 0 {unblob => python/unblob}/extractors/__init__.py | 0 {unblob => python/unblob}/extractors/command.py | 0 {unblob => python/unblob}/file_utils.py | 0 {unblob => python/unblob}/finder.py | 0 {unblob => python/unblob}/handlers/__init__.py | 0 {unblob => python/unblob}/handlers/archive/__init__.py | 0 .../unblob}/handlers/archive/_safe_tarfile.py | 0 {unblob => python/unblob}/handlers/archive/ar.py | 0 {unblob => python/unblob}/handlers/archive/arc.py | 0 {unblob => python/unblob}/handlers/archive/arj.py | 0 {unblob => python/unblob}/handlers/archive/autel/ecc.py | 0 {unblob => python/unblob}/handlers/archive/cab.py | 0 {unblob => python/unblob}/handlers/archive/cpio.py | 0 .../unblob}/handlers/archive/dlink/encrpted_img.py | 0 {unblob => python/unblob}/handlers/archive/dlink/shrs.py | 0 {unblob => python/unblob}/handlers/archive/dmg.py | 0 .../unblob}/handlers/archive/engeniustech/engenius.py | 0 {unblob => python/unblob}/handlers/archive/hp/bdl.py | 0 {unblob => python/unblob}/handlers/archive/hp/ipkg.py | 0 .../unblob}/handlers/archive/instar/bneg.py | 0 .../unblob}/handlers/archive/instar/instar_hd.py | 0 .../unblob}/handlers/archive/netgear/chk.py | 0 .../unblob}/handlers/archive/netgear/trx.py | 0 .../unblob}/handlers/archive/qnap/qnap_nas.py | 0 {unblob => python/unblob}/handlers/archive/rar.py | 0 {unblob => python/unblob}/handlers/archive/sevenzip.py | 0 {unblob => python/unblob}/handlers/archive/stuffit.py | 0 {unblob => python/unblob}/handlers/archive/tar.py | 0 {unblob => python/unblob}/handlers/archive/xiaomi/hdr.py | 0 {unblob => python/unblob}/handlers/archive/zip.py | 0 .../unblob}/handlers/compression/__init__.py | 0 .../unblob}/handlers/compression/_gzip_reader.py | 0 {unblob => python/unblob}/handlers/compression/bzip2.py | 0 .../unblob}/handlers/compression/compress.py | 0 {unblob => python/unblob}/handlers/compression/gzip.py | 0 {unblob => python/unblob}/handlers/compression/lz4.py | 0 {unblob => python/unblob}/handlers/compression/lzh.py | 0 {unblob => python/unblob}/handlers/compression/lzip.py | 0 {unblob => python/unblob}/handlers/compression/lzma.py | 0 {unblob => python/unblob}/handlers/compression/lzo.py | 0 {unblob => python/unblob}/handlers/compression/xz.py | 0 {unblob => python/unblob}/handlers/compression/zlib.py | 0 {unblob => python/unblob}/handlers/compression/zstd.py | 0 .../unblob}/handlers/executable/__init__.py | 0 {unblob => python/unblob}/handlers/executable/elf.py | 0 .../unblob}/handlers/filesystem/__init__.py | 0 .../unblob}/handlers/filesystem/android/__init__.py | 0 .../unblob}/handlers/filesystem/android/sparse.py | 0 {unblob => python/unblob}/handlers/filesystem/cramfs.py | 0 {unblob => python/unblob}/handlers/filesystem/extfs.py | 0 {unblob => python/unblob}/handlers/filesystem/fat.py | 0 {unblob => python/unblob}/handlers/filesystem/iso9660.py | 0 {unblob => python/unblob}/handlers/filesystem/jffs2.py | 0 {unblob => python/unblob}/handlers/filesystem/ntfs.py | 0 {unblob => python/unblob}/handlers/filesystem/romfs.py | 0 .../unblob}/handlers/filesystem/squashfs.py | 0 {unblob => python/unblob}/handlers/filesystem/ubi.py | 0 {unblob => python/unblob}/handlers/filesystem/yaffs.py | 0 {unblob => python/unblob}/hookspecs.py | 0 {unblob => python/unblob}/identifiers.py | 0 {unblob => python/unblob}/install-deps.sh | 0 {unblob => python/unblob}/iter_utils.py | 0 {unblob => python/unblob}/logging.py | 0 {unblob => python/unblob}/models.py | 0 {unblob => python/unblob}/parser.py | 0 {unblob => python/unblob}/plugins.py | 0 {unblob => python/unblob}/pool.py | 0 {unblob => python/unblob}/processing.py | 0 {unblob => python/unblob}/py.typed | 0 {unblob => python/unblob}/report.py | 0 {unblob => python/unblob}/sandbox.py | 0 {unblob => python/unblob}/testing.py | 0 {unblob => python/unblob}/ui.py | 0 82 files changed, 8 insertions(+), 5 deletions(-) rename {unblob => python/unblob}/__init__.py (100%) rename {unblob => python/unblob}/cli.py (100%) rename {unblob => python/unblob}/cli_options.py (100%) rename {unblob => python/unblob}/dependencies.py (100%) rename {unblob => python/unblob}/extractor.py (100%) rename {unblob => python/unblob}/extractors/README.md (100%) rename {unblob => python/unblob}/extractors/__init__.py (100%) rename {unblob => python/unblob}/extractors/command.py (100%) rename {unblob => python/unblob}/file_utils.py (100%) rename {unblob => python/unblob}/finder.py (100%) rename {unblob => python/unblob}/handlers/__init__.py (100%) rename {unblob => python/unblob}/handlers/archive/__init__.py (100%) rename {unblob => python/unblob}/handlers/archive/_safe_tarfile.py (100%) rename {unblob => python/unblob}/handlers/archive/ar.py (100%) rename {unblob => python/unblob}/handlers/archive/arc.py (100%) rename {unblob => python/unblob}/handlers/archive/arj.py (100%) rename {unblob => python/unblob}/handlers/archive/autel/ecc.py (100%) rename {unblob => python/unblob}/handlers/archive/cab.py (100%) rename {unblob => python/unblob}/handlers/archive/cpio.py (100%) rename {unblob => python/unblob}/handlers/archive/dlink/encrpted_img.py (100%) rename {unblob => python/unblob}/handlers/archive/dlink/shrs.py (100%) rename {unblob => python/unblob}/handlers/archive/dmg.py (100%) rename {unblob => python/unblob}/handlers/archive/engeniustech/engenius.py (100%) rename {unblob => python/unblob}/handlers/archive/hp/bdl.py (100%) rename {unblob => python/unblob}/handlers/archive/hp/ipkg.py (100%) rename {unblob => python/unblob}/handlers/archive/instar/bneg.py (100%) rename {unblob => python/unblob}/handlers/archive/instar/instar_hd.py (100%) rename {unblob => python/unblob}/handlers/archive/netgear/chk.py (100%) rename {unblob => python/unblob}/handlers/archive/netgear/trx.py (100%) rename {unblob => python/unblob}/handlers/archive/qnap/qnap_nas.py (100%) rename {unblob => python/unblob}/handlers/archive/rar.py (100%) rename {unblob => python/unblob}/handlers/archive/sevenzip.py (100%) rename {unblob => python/unblob}/handlers/archive/stuffit.py (100%) rename {unblob => python/unblob}/handlers/archive/tar.py (100%) rename {unblob => python/unblob}/handlers/archive/xiaomi/hdr.py (100%) rename {unblob => python/unblob}/handlers/archive/zip.py (100%) rename {unblob => python/unblob}/handlers/compression/__init__.py (100%) rename {unblob => python/unblob}/handlers/compression/_gzip_reader.py (100%) rename {unblob => python/unblob}/handlers/compression/bzip2.py (100%) rename {unblob => python/unblob}/handlers/compression/compress.py (100%) rename {unblob => python/unblob}/handlers/compression/gzip.py (100%) rename {unblob => python/unblob}/handlers/compression/lz4.py (100%) rename {unblob => python/unblob}/handlers/compression/lzh.py (100%) rename {unblob => python/unblob}/handlers/compression/lzip.py (100%) rename {unblob => python/unblob}/handlers/compression/lzma.py (100%) rename {unblob => python/unblob}/handlers/compression/lzo.py (100%) rename {unblob => python/unblob}/handlers/compression/xz.py (100%) rename {unblob => python/unblob}/handlers/compression/zlib.py (100%) rename {unblob => python/unblob}/handlers/compression/zstd.py (100%) rename {unblob => python/unblob}/handlers/executable/__init__.py (100%) rename {unblob => python/unblob}/handlers/executable/elf.py (100%) rename {unblob => python/unblob}/handlers/filesystem/__init__.py (100%) rename {unblob => python/unblob}/handlers/filesystem/android/__init__.py (100%) rename {unblob => python/unblob}/handlers/filesystem/android/sparse.py (100%) rename {unblob => python/unblob}/handlers/filesystem/cramfs.py (100%) rename {unblob => python/unblob}/handlers/filesystem/extfs.py (100%) rename {unblob => python/unblob}/handlers/filesystem/fat.py (100%) rename {unblob => python/unblob}/handlers/filesystem/iso9660.py (100%) rename {unblob => python/unblob}/handlers/filesystem/jffs2.py (100%) rename {unblob => python/unblob}/handlers/filesystem/ntfs.py (100%) rename {unblob => python/unblob}/handlers/filesystem/romfs.py (100%) rename {unblob => python/unblob}/handlers/filesystem/squashfs.py (100%) rename {unblob => python/unblob}/handlers/filesystem/ubi.py (100%) rename {unblob => python/unblob}/handlers/filesystem/yaffs.py (100%) rename {unblob => python/unblob}/hookspecs.py (100%) rename {unblob => python/unblob}/identifiers.py (100%) rename {unblob => python/unblob}/install-deps.sh (100%) rename {unblob => python/unblob}/iter_utils.py (100%) rename {unblob => python/unblob}/logging.py (100%) rename {unblob => python/unblob}/models.py (100%) rename {unblob => python/unblob}/parser.py (100%) rename {unblob => python/unblob}/plugins.py (100%) rename {unblob => python/unblob}/pool.py (100%) rename {unblob => python/unblob}/processing.py (100%) rename {unblob => python/unblob}/py.typed (100%) rename {unblob => python/unblob}/report.py (100%) rename {unblob => python/unblob}/sandbox.py (100%) rename {unblob => python/unblob}/testing.py (100%) rename {unblob => python/unblob}/ui.py (100%) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 6e7a187837..27cbd5d15a 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -4,7 +4,7 @@ queries: - uses: security-and-quality paths: - - 'unblob' + - 'python' - 'tests' paths-ignore: diff --git a/overlay.nix b/overlay.nix index e6d0749b85..9c5051e03e 100644 --- a/overlay.nix +++ b/overlay.nix @@ -22,7 +22,7 @@ final: prev: "Cargo.lock" "Cargo.toml" "pyproject.toml" - "unblob" + "python" "rust" "tests" "README.md" diff --git a/pyproject.toml b/pyproject.toml index 755a768e25..2fc544d2f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -125,6 +125,9 @@ ignore-init-module-imports = true [tool.ruff.lint.flake8-comprehensions] allow-dict-calls-with-keyword-arguments = true # code like `dict(a=1, b=2)` is allowed +[tool.ruff.lint.isort] +known-first-party = ["unblob"] + [tool.ruff.lint.mccabe] max-complexity = 8 @@ -170,8 +173,8 @@ fail_under = 90 skip_covered = true [tool.vulture] -exclude = ["unblob/testing.py"] -paths = ["unblob/", "vulture_whitelist.py"] +exclude = ["python/unblob/testing.py"] +paths = ["python/", "vulture_whitelist.py"] [tool.pyright] exclude = [ @@ -186,7 +189,7 @@ locked = true manifest-path = "rust/Cargo.toml" module-name = "unblob._rust" python-packages = ["unblob"] -python-source = "." +python-source = "python" features = [ "pyo3/abi3-py39", # https://docs.python.org/3/c-api/stable.html diff --git a/unblob/__init__.py b/python/unblob/__init__.py similarity index 100% rename from unblob/__init__.py rename to python/unblob/__init__.py diff --git a/unblob/cli.py b/python/unblob/cli.py similarity index 100% rename from unblob/cli.py rename to python/unblob/cli.py diff --git a/unblob/cli_options.py b/python/unblob/cli_options.py similarity index 100% rename from unblob/cli_options.py rename to python/unblob/cli_options.py diff --git a/unblob/dependencies.py b/python/unblob/dependencies.py similarity index 100% rename from unblob/dependencies.py rename to python/unblob/dependencies.py diff --git a/unblob/extractor.py b/python/unblob/extractor.py similarity index 100% rename from unblob/extractor.py rename to python/unblob/extractor.py diff --git a/unblob/extractors/README.md b/python/unblob/extractors/README.md similarity index 100% rename from unblob/extractors/README.md rename to python/unblob/extractors/README.md diff --git a/unblob/extractors/__init__.py b/python/unblob/extractors/__init__.py similarity index 100% rename from unblob/extractors/__init__.py rename to python/unblob/extractors/__init__.py diff --git a/unblob/extractors/command.py b/python/unblob/extractors/command.py similarity index 100% rename from unblob/extractors/command.py rename to python/unblob/extractors/command.py diff --git a/unblob/file_utils.py b/python/unblob/file_utils.py similarity index 100% rename from unblob/file_utils.py rename to python/unblob/file_utils.py diff --git a/unblob/finder.py b/python/unblob/finder.py similarity index 100% rename from unblob/finder.py rename to python/unblob/finder.py diff --git a/unblob/handlers/__init__.py b/python/unblob/handlers/__init__.py similarity index 100% rename from unblob/handlers/__init__.py rename to python/unblob/handlers/__init__.py diff --git a/unblob/handlers/archive/__init__.py b/python/unblob/handlers/archive/__init__.py similarity index 100% rename from unblob/handlers/archive/__init__.py rename to python/unblob/handlers/archive/__init__.py diff --git a/unblob/handlers/archive/_safe_tarfile.py b/python/unblob/handlers/archive/_safe_tarfile.py similarity index 100% rename from unblob/handlers/archive/_safe_tarfile.py rename to python/unblob/handlers/archive/_safe_tarfile.py diff --git a/unblob/handlers/archive/ar.py b/python/unblob/handlers/archive/ar.py similarity index 100% rename from unblob/handlers/archive/ar.py rename to python/unblob/handlers/archive/ar.py diff --git a/unblob/handlers/archive/arc.py b/python/unblob/handlers/archive/arc.py similarity index 100% rename from unblob/handlers/archive/arc.py rename to python/unblob/handlers/archive/arc.py diff --git a/unblob/handlers/archive/arj.py b/python/unblob/handlers/archive/arj.py similarity index 100% rename from unblob/handlers/archive/arj.py rename to python/unblob/handlers/archive/arj.py diff --git a/unblob/handlers/archive/autel/ecc.py b/python/unblob/handlers/archive/autel/ecc.py similarity index 100% rename from unblob/handlers/archive/autel/ecc.py rename to python/unblob/handlers/archive/autel/ecc.py diff --git a/unblob/handlers/archive/cab.py b/python/unblob/handlers/archive/cab.py similarity index 100% rename from unblob/handlers/archive/cab.py rename to python/unblob/handlers/archive/cab.py diff --git a/unblob/handlers/archive/cpio.py b/python/unblob/handlers/archive/cpio.py similarity index 100% rename from unblob/handlers/archive/cpio.py rename to python/unblob/handlers/archive/cpio.py diff --git a/unblob/handlers/archive/dlink/encrpted_img.py b/python/unblob/handlers/archive/dlink/encrpted_img.py similarity index 100% rename from unblob/handlers/archive/dlink/encrpted_img.py rename to python/unblob/handlers/archive/dlink/encrpted_img.py diff --git a/unblob/handlers/archive/dlink/shrs.py b/python/unblob/handlers/archive/dlink/shrs.py similarity index 100% rename from unblob/handlers/archive/dlink/shrs.py rename to python/unblob/handlers/archive/dlink/shrs.py diff --git a/unblob/handlers/archive/dmg.py b/python/unblob/handlers/archive/dmg.py similarity index 100% rename from unblob/handlers/archive/dmg.py rename to python/unblob/handlers/archive/dmg.py diff --git a/unblob/handlers/archive/engeniustech/engenius.py b/python/unblob/handlers/archive/engeniustech/engenius.py similarity index 100% rename from unblob/handlers/archive/engeniustech/engenius.py rename to python/unblob/handlers/archive/engeniustech/engenius.py diff --git a/unblob/handlers/archive/hp/bdl.py b/python/unblob/handlers/archive/hp/bdl.py similarity index 100% rename from unblob/handlers/archive/hp/bdl.py rename to python/unblob/handlers/archive/hp/bdl.py diff --git a/unblob/handlers/archive/hp/ipkg.py b/python/unblob/handlers/archive/hp/ipkg.py similarity index 100% rename from unblob/handlers/archive/hp/ipkg.py rename to python/unblob/handlers/archive/hp/ipkg.py diff --git a/unblob/handlers/archive/instar/bneg.py b/python/unblob/handlers/archive/instar/bneg.py similarity index 100% rename from unblob/handlers/archive/instar/bneg.py rename to python/unblob/handlers/archive/instar/bneg.py diff --git a/unblob/handlers/archive/instar/instar_hd.py b/python/unblob/handlers/archive/instar/instar_hd.py similarity index 100% rename from unblob/handlers/archive/instar/instar_hd.py rename to python/unblob/handlers/archive/instar/instar_hd.py diff --git a/unblob/handlers/archive/netgear/chk.py b/python/unblob/handlers/archive/netgear/chk.py similarity index 100% rename from unblob/handlers/archive/netgear/chk.py rename to python/unblob/handlers/archive/netgear/chk.py diff --git a/unblob/handlers/archive/netgear/trx.py b/python/unblob/handlers/archive/netgear/trx.py similarity index 100% rename from unblob/handlers/archive/netgear/trx.py rename to python/unblob/handlers/archive/netgear/trx.py diff --git a/unblob/handlers/archive/qnap/qnap_nas.py b/python/unblob/handlers/archive/qnap/qnap_nas.py similarity index 100% rename from unblob/handlers/archive/qnap/qnap_nas.py rename to python/unblob/handlers/archive/qnap/qnap_nas.py diff --git a/unblob/handlers/archive/rar.py b/python/unblob/handlers/archive/rar.py similarity index 100% rename from unblob/handlers/archive/rar.py rename to python/unblob/handlers/archive/rar.py diff --git a/unblob/handlers/archive/sevenzip.py b/python/unblob/handlers/archive/sevenzip.py similarity index 100% rename from unblob/handlers/archive/sevenzip.py rename to python/unblob/handlers/archive/sevenzip.py diff --git a/unblob/handlers/archive/stuffit.py b/python/unblob/handlers/archive/stuffit.py similarity index 100% rename from unblob/handlers/archive/stuffit.py rename to python/unblob/handlers/archive/stuffit.py diff --git a/unblob/handlers/archive/tar.py b/python/unblob/handlers/archive/tar.py similarity index 100% rename from unblob/handlers/archive/tar.py rename to python/unblob/handlers/archive/tar.py diff --git a/unblob/handlers/archive/xiaomi/hdr.py b/python/unblob/handlers/archive/xiaomi/hdr.py similarity index 100% rename from unblob/handlers/archive/xiaomi/hdr.py rename to python/unblob/handlers/archive/xiaomi/hdr.py diff --git a/unblob/handlers/archive/zip.py b/python/unblob/handlers/archive/zip.py similarity index 100% rename from unblob/handlers/archive/zip.py rename to python/unblob/handlers/archive/zip.py diff --git a/unblob/handlers/compression/__init__.py b/python/unblob/handlers/compression/__init__.py similarity index 100% rename from unblob/handlers/compression/__init__.py rename to python/unblob/handlers/compression/__init__.py diff --git a/unblob/handlers/compression/_gzip_reader.py b/python/unblob/handlers/compression/_gzip_reader.py similarity index 100% rename from unblob/handlers/compression/_gzip_reader.py rename to python/unblob/handlers/compression/_gzip_reader.py diff --git a/unblob/handlers/compression/bzip2.py b/python/unblob/handlers/compression/bzip2.py similarity index 100% rename from unblob/handlers/compression/bzip2.py rename to python/unblob/handlers/compression/bzip2.py diff --git a/unblob/handlers/compression/compress.py b/python/unblob/handlers/compression/compress.py similarity index 100% rename from unblob/handlers/compression/compress.py rename to python/unblob/handlers/compression/compress.py diff --git a/unblob/handlers/compression/gzip.py b/python/unblob/handlers/compression/gzip.py similarity index 100% rename from unblob/handlers/compression/gzip.py rename to python/unblob/handlers/compression/gzip.py diff --git a/unblob/handlers/compression/lz4.py b/python/unblob/handlers/compression/lz4.py similarity index 100% rename from unblob/handlers/compression/lz4.py rename to python/unblob/handlers/compression/lz4.py diff --git a/unblob/handlers/compression/lzh.py b/python/unblob/handlers/compression/lzh.py similarity index 100% rename from unblob/handlers/compression/lzh.py rename to python/unblob/handlers/compression/lzh.py diff --git a/unblob/handlers/compression/lzip.py b/python/unblob/handlers/compression/lzip.py similarity index 100% rename from unblob/handlers/compression/lzip.py rename to python/unblob/handlers/compression/lzip.py diff --git a/unblob/handlers/compression/lzma.py b/python/unblob/handlers/compression/lzma.py similarity index 100% rename from unblob/handlers/compression/lzma.py rename to python/unblob/handlers/compression/lzma.py diff --git a/unblob/handlers/compression/lzo.py b/python/unblob/handlers/compression/lzo.py similarity index 100% rename from unblob/handlers/compression/lzo.py rename to python/unblob/handlers/compression/lzo.py diff --git a/unblob/handlers/compression/xz.py b/python/unblob/handlers/compression/xz.py similarity index 100% rename from unblob/handlers/compression/xz.py rename to python/unblob/handlers/compression/xz.py diff --git a/unblob/handlers/compression/zlib.py b/python/unblob/handlers/compression/zlib.py similarity index 100% rename from unblob/handlers/compression/zlib.py rename to python/unblob/handlers/compression/zlib.py diff --git a/unblob/handlers/compression/zstd.py b/python/unblob/handlers/compression/zstd.py similarity index 100% rename from unblob/handlers/compression/zstd.py rename to python/unblob/handlers/compression/zstd.py diff --git a/unblob/handlers/executable/__init__.py b/python/unblob/handlers/executable/__init__.py similarity index 100% rename from unblob/handlers/executable/__init__.py rename to python/unblob/handlers/executable/__init__.py diff --git a/unblob/handlers/executable/elf.py b/python/unblob/handlers/executable/elf.py similarity index 100% rename from unblob/handlers/executable/elf.py rename to python/unblob/handlers/executable/elf.py diff --git a/unblob/handlers/filesystem/__init__.py b/python/unblob/handlers/filesystem/__init__.py similarity index 100% rename from unblob/handlers/filesystem/__init__.py rename to python/unblob/handlers/filesystem/__init__.py diff --git a/unblob/handlers/filesystem/android/__init__.py b/python/unblob/handlers/filesystem/android/__init__.py similarity index 100% rename from unblob/handlers/filesystem/android/__init__.py rename to python/unblob/handlers/filesystem/android/__init__.py diff --git a/unblob/handlers/filesystem/android/sparse.py b/python/unblob/handlers/filesystem/android/sparse.py similarity index 100% rename from unblob/handlers/filesystem/android/sparse.py rename to python/unblob/handlers/filesystem/android/sparse.py diff --git a/unblob/handlers/filesystem/cramfs.py b/python/unblob/handlers/filesystem/cramfs.py similarity index 100% rename from unblob/handlers/filesystem/cramfs.py rename to python/unblob/handlers/filesystem/cramfs.py diff --git a/unblob/handlers/filesystem/extfs.py b/python/unblob/handlers/filesystem/extfs.py similarity index 100% rename from unblob/handlers/filesystem/extfs.py rename to python/unblob/handlers/filesystem/extfs.py diff --git a/unblob/handlers/filesystem/fat.py b/python/unblob/handlers/filesystem/fat.py similarity index 100% rename from unblob/handlers/filesystem/fat.py rename to python/unblob/handlers/filesystem/fat.py diff --git a/unblob/handlers/filesystem/iso9660.py b/python/unblob/handlers/filesystem/iso9660.py similarity index 100% rename from unblob/handlers/filesystem/iso9660.py rename to python/unblob/handlers/filesystem/iso9660.py diff --git a/unblob/handlers/filesystem/jffs2.py b/python/unblob/handlers/filesystem/jffs2.py similarity index 100% rename from unblob/handlers/filesystem/jffs2.py rename to python/unblob/handlers/filesystem/jffs2.py diff --git a/unblob/handlers/filesystem/ntfs.py b/python/unblob/handlers/filesystem/ntfs.py similarity index 100% rename from unblob/handlers/filesystem/ntfs.py rename to python/unblob/handlers/filesystem/ntfs.py diff --git a/unblob/handlers/filesystem/romfs.py b/python/unblob/handlers/filesystem/romfs.py similarity index 100% rename from unblob/handlers/filesystem/romfs.py rename to python/unblob/handlers/filesystem/romfs.py diff --git a/unblob/handlers/filesystem/squashfs.py b/python/unblob/handlers/filesystem/squashfs.py similarity index 100% rename from unblob/handlers/filesystem/squashfs.py rename to python/unblob/handlers/filesystem/squashfs.py diff --git a/unblob/handlers/filesystem/ubi.py b/python/unblob/handlers/filesystem/ubi.py similarity index 100% rename from unblob/handlers/filesystem/ubi.py rename to python/unblob/handlers/filesystem/ubi.py diff --git a/unblob/handlers/filesystem/yaffs.py b/python/unblob/handlers/filesystem/yaffs.py similarity index 100% rename from unblob/handlers/filesystem/yaffs.py rename to python/unblob/handlers/filesystem/yaffs.py diff --git a/unblob/hookspecs.py b/python/unblob/hookspecs.py similarity index 100% rename from unblob/hookspecs.py rename to python/unblob/hookspecs.py diff --git a/unblob/identifiers.py b/python/unblob/identifiers.py similarity index 100% rename from unblob/identifiers.py rename to python/unblob/identifiers.py diff --git a/unblob/install-deps.sh b/python/unblob/install-deps.sh similarity index 100% rename from unblob/install-deps.sh rename to python/unblob/install-deps.sh diff --git a/unblob/iter_utils.py b/python/unblob/iter_utils.py similarity index 100% rename from unblob/iter_utils.py rename to python/unblob/iter_utils.py diff --git a/unblob/logging.py b/python/unblob/logging.py similarity index 100% rename from unblob/logging.py rename to python/unblob/logging.py diff --git a/unblob/models.py b/python/unblob/models.py similarity index 100% rename from unblob/models.py rename to python/unblob/models.py diff --git a/unblob/parser.py b/python/unblob/parser.py similarity index 100% rename from unblob/parser.py rename to python/unblob/parser.py diff --git a/unblob/plugins.py b/python/unblob/plugins.py similarity index 100% rename from unblob/plugins.py rename to python/unblob/plugins.py diff --git a/unblob/pool.py b/python/unblob/pool.py similarity index 100% rename from unblob/pool.py rename to python/unblob/pool.py diff --git a/unblob/processing.py b/python/unblob/processing.py similarity index 100% rename from unblob/processing.py rename to python/unblob/processing.py diff --git a/unblob/py.typed b/python/unblob/py.typed similarity index 100% rename from unblob/py.typed rename to python/unblob/py.typed diff --git a/unblob/report.py b/python/unblob/report.py similarity index 100% rename from unblob/report.py rename to python/unblob/report.py diff --git a/unblob/sandbox.py b/python/unblob/sandbox.py similarity index 100% rename from unblob/sandbox.py rename to python/unblob/sandbox.py diff --git a/unblob/testing.py b/python/unblob/testing.py similarity index 100% rename from unblob/testing.py rename to python/unblob/testing.py diff --git a/unblob/ui.py b/python/unblob/ui.py similarity index 100% rename from unblob/ui.py rename to python/unblob/ui.py From 9c6dd07f5184e02f217df657914e5180a48531b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:46 +0100 Subject: [PATCH 140/154] chore(deps): move install-deps.sh script to repo root --- .github/actions/setup-dependencies/action.yml | 2 +- Dockerfile | 2 +- python/unblob/install-deps.sh => install-deps.sh | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename python/unblob/install-deps.sh => install-deps.sh (100%) diff --git a/.github/actions/setup-dependencies/action.yml b/.github/actions/setup-dependencies/action.yml index 8bf31e5bc0..d1b13fb473 100644 --- a/.github/actions/setup-dependencies/action.yml +++ b/.github/actions/setup-dependencies/action.yml @@ -10,7 +10,7 @@ runs: using: "composite" steps: - name: Install 3rd party dependencies - run: sudo unblob/install-deps.sh + run: sudo ./install-deps.sh shell: bash - name: Install uv & Python diff --git a/Dockerfile b/Dockerfile index 88ae3da5de..f583d644b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN chown -R unblob /data WORKDIR /data/output -COPY unblob/install-deps.sh / +COPY install-deps.sh / RUN sh -xeu /install-deps.sh # You MUST do an uv build before to have the wheel to copy & install here (CI action will do this when building) diff --git a/python/unblob/install-deps.sh b/install-deps.sh similarity index 100% rename from python/unblob/install-deps.sh rename to install-deps.sh From 1b6c2aa68aa55e4da743bfc8b9e57f1d308eee79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:42 +0100 Subject: [PATCH 141/154] chore: merge type stubs --- .../py.typed => python/unblob/_rust/__init__.pyi | 0 .../unblob_native => python/unblob/_rust}/math_tools.pyi | 0 .../python/unblob_native => python/unblob/_rust}/sandbox.pyi | 0 rust/python/unblob_native/__init__.py | 5 ----- 4 files changed, 5 deletions(-) rename rust/python/unblob_native/py.typed => python/unblob/_rust/__init__.pyi (100%) rename {rust/python/unblob_native => python/unblob/_rust}/math_tools.pyi (100%) rename {rust/python/unblob_native => python/unblob/_rust}/sandbox.pyi (100%) delete mode 100644 rust/python/unblob_native/__init__.py diff --git a/rust/python/unblob_native/py.typed b/python/unblob/_rust/__init__.pyi similarity index 100% rename from rust/python/unblob_native/py.typed rename to python/unblob/_rust/__init__.pyi diff --git a/rust/python/unblob_native/math_tools.pyi b/python/unblob/_rust/math_tools.pyi similarity index 100% rename from rust/python/unblob_native/math_tools.pyi rename to python/unblob/_rust/math_tools.pyi diff --git a/rust/python/unblob_native/sandbox.pyi b/python/unblob/_rust/sandbox.pyi similarity index 100% rename from rust/python/unblob_native/sandbox.pyi rename to python/unblob/_rust/sandbox.pyi diff --git a/rust/python/unblob_native/__init__.py b/rust/python/unblob_native/__init__.py deleted file mode 100644 index 317848502a..0000000000 --- a/rust/python/unblob_native/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from ._native import * - -if hasattr(_native, "__all__"): - __all__ = _native.__all__ # pyright: ignore [reportUnsupportedDunderAll] -__doc__ = _native.__doc__ From d32d91e94e498ffb7cfbf85fc059168bb594fa5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:43 +0100 Subject: [PATCH 142/154] chore(ruff): fix UP007 --- python/unblob/_rust/sandbox.pyi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/python/unblob/_rust/sandbox.pyi b/python/unblob/_rust/sandbox.pyi index e147be0a20..43375a3e1b 100644 --- a/python/unblob/_rust/sandbox.pyi +++ b/python/unblob/_rust/sandbox.pyi @@ -1,9 +1,8 @@ import os -import typing import typing_extensions -_Path: typing_extensions.TypeAlias = typing.Union[os.PathLike, str] +_Path: typing_extensions.TypeAlias = os.PathLike | str class AccessFS: @staticmethod From 077ce289aefad8c13ab723d38aa3489e1445fa66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:44 +0100 Subject: [PATCH 143/154] chore(pre-commit): add rust lints --- .pre-commit-config.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 365a71bcfa..a8ce50146a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -52,6 +52,18 @@ repos: entry: uv run taplo lint args: - --default-schema-catalogs + - id: cargo-fmt # rustup component add rustfmt + name: Check rust (cargo fmt) + entry: cargo fmt --all -- + language: system + types: [rust] + pass_filenames: false + - id: cargo-clippy # rustup component add clippy + name: Check rust (cargo clippy) + entry: cargo clippy --tests --all-features -- -D warnings + language: system + pass_filenames: false + types: [rust] - repo: https://github.com/jendrikseipp/vulture rev: v2.14 From e1ef98d53de89e7ed11e56fe412606df0ebfd8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 17:17:25 +0100 Subject: [PATCH 144/154] fix(pre-commit): work-around false-positive lint error on Rust 1.84+ It shows error: unexpected `cfg` condition value: `gil-refs` during clippy execution The error is due to a new lint turned on on Rust 1.84 which trips older PyO3 code. It'll go away when upgrading to 0.23[^1], but it needs API changes, so for the time being the lint is disabled instead. [^1]: https://github.com/PyO3/pyo3/issues/4743 --- rust/Cargo.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 7c054657d7..135e9cbadd 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -31,3 +31,7 @@ rand = "0.8.4" [[bench]] harness = false name = "benches_main" + +[lints.rust] +# Required for Rust >= 1.84 && pyo3 < 0.23 +unexpected_cfgs = { level = "allow", check-cfg = ['cfg(addr_of)'] } From a4fc98a5b2736e2948f97aa4357430d4c2c68ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:47 +0100 Subject: [PATCH 145/154] ci(codeql): add rust code --- .github/codeql/codeql-config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 27cbd5d15a..90e3dcbded 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -5,6 +5,7 @@ queries: paths: - 'python' + - 'rust' - 'tests' paths-ignore: From 43d1baefb7314fb87df37ace8a06d39880a3c2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:34:48 +0100 Subject: [PATCH 146/154] refact(tests/sandbox): make low level sandbox test work without corrupting the main thread's landlock state --- tests/rust/test_sandbox.py | 89 +++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/tests/rust/test_sandbox.py b/tests/rust/test_sandbox.py index c266fd4002..f97770f09c 100644 --- a/tests/rust/test_sandbox.py +++ b/tests/rust/test_sandbox.py @@ -2,7 +2,7 @@ import errno import os import platform -from ctypes import c_uint32 +import threading from pathlib import Path import pytest @@ -54,7 +54,7 @@ def landlock_supported() -> int: __NR_landlock_create_ruleset, None, ctypes.c_size_t(0), - c_uint32(LANDLOCK_CREATE_RULESET_VERSION), + ctypes.c_uint32(LANDLOCK_CREATE_RULESET_VERSION), ) if max_abi_version > 0: return max_abi_version @@ -72,31 +72,60 @@ def landlock_supported() -> int: @pytest.mark.skipif( not landlock_supported(), reason="Landlock support is not available on this system" ) -def test_read_sandboxing(request: pytest.FixtureRequest, sandbox_path: Path): - restrict_access( - AccessFS.read("/"), - AccessFS.read(sandbox_path), - # allow pytest caching, coverage, etc... - AccessFS.read_write(request.config.rootpath), - ) - - with pytest.raises(PermissionError): - (sandbox_path / "some-dir").mkdir() - - with pytest.raises(PermissionError): - (sandbox_path / "some-file").touch() - - with pytest.raises(PermissionError): - (sandbox_path / "some-link").symlink_to("file.txt") - - for path in sandbox_path.rglob("**/*"): - if path.is_file() or path.is_symlink(): - with path.open("rb") as f: - assert f.read() == FILE_CONTENT - with pytest.raises(PermissionError): - assert path.open("r+") - with pytest.raises(PermissionError): - assert path.unlink() - elif path.is_dir(): - with pytest.raises(PermissionError): - path.rmdir() +def test_read_sandboxing(request: pytest.FixtureRequest, sandbox_path: Path): # noqa: C901 + exception = None + + def _run_catching_exceptions(fn): + def wrapper(): + __tracebackhide__ = True + nonlocal exception + try: + fn() + except BaseException as exc: + exception = exc + + return wrapper + + # Sandbox applies to the current thread and future threads spawned + # from it. + # + # Running the test on a new thread keeps the main-thread + # clean, so sandboxing won't interfere with other tests executed + # after this one. + + @_run_catching_exceptions + def _run_in_thread(): + restrict_access( + AccessFS.read("/"), + AccessFS.read(sandbox_path), + # allow pytest caching, coverage, etc... + AccessFS.read_write(request.config.rootpath), + ) + + with pytest.raises(PermissionError): + (sandbox_path / "some-dir").mkdir() + + with pytest.raises(PermissionError): + (sandbox_path / "some-file").touch() + + with pytest.raises(PermissionError): + (sandbox_path / "some-link").symlink_to("file.txt") + + for path in sandbox_path.rglob("**/*"): + if path.is_file() or path.is_symlink(): + with path.open("rb") as f: + assert f.read() == FILE_CONTENT + with pytest.raises(PermissionError): + assert path.open("r+") + with pytest.raises(PermissionError): + assert path.unlink() + elif path.is_dir(): + with pytest.raises(PermissionError): + path.rmdir() + + t = threading.Thread(target=_run_in_thread) + t.start() + t.join() + __tracebackhide__ = True + if exception: + raise exception From 19c7f8d17d1c70d6eb97a43929c5d72940e2fa7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:50:21 +0100 Subject: [PATCH 147/154] fix(docs): update part on unblob-native --- docs/development.md | 6 +++--- docs/index.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/development.md b/docs/development.md index adaa135af0..08b5b11b4d 100644 --- a/docs/development.md +++ b/docs/development.md @@ -41,9 +41,9 @@ where the exciting stuff is. - **Git LFS**: We have big integration test files, and we are using Git LFS to track them. [Install `git-lfs`](https://git-lfs.github.com/) from the website. -- **Rust** (_for unblob-native_): unblob has a [Rust extension](https://github.com/onekey-sec/unblob-native) for - performance intensive processing. Building it is entirely optional and requires [`rustup`](https://rustup.rs/) to be - installed on the host system. Follow the instructions on the [rustup website](https://rustup.rs/) to install it. +- **Rust** some functionality of unblob is implemented in Rust. Building it requires a Rust toolchain + (e.g. via [`rustup`](https://rustup.rs/)) to be installed on the host system. Follow the + instructions on the [rustup website](https://rustup.rs/) to install it. - **pyenv** (_Recommended_): When you are working with multiple versions of Python, pyenv makes it very easy to install and use different versions and make virtualenvs. diff --git a/docs/index.md b/docs/index.md index b92c0157b8..0e65b0ee1d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -74,10 +74,10 @@ unblob has been developed with the following objectives in mind: - **Speed** - we want unblob to be blazing fast, that's why we use multi-processing by default, make sure to write efficient code, use - memory-mapped files, and use [Hyperscan](https://github.com/intel/hyperscan) - as a high-performance matching library. Computation-intensive functions are - written in [Rust](https://github.com/onekey-sec/unblob-native) and - called from Python using specific bindings. + memory-mapped files, and use + [Hyperscan](https://github.com/intel/hyperscan) as a + high-performance matching library. Computation-intensive functions + are written in Rust and called from Python using specific bindings. ## How does it work? From f683a4a1b1f9bc438a6ce6212f04470cf5af9ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:16:40 +0100 Subject: [PATCH 148/154] ci: fix python version selection regression introduced by the uv-transition --- .github/actions/setup-dependencies/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-dependencies/action.yml b/.github/actions/setup-dependencies/action.yml index d1b13fb473..1ca6db399e 100644 --- a/.github/actions/setup-dependencies/action.yml +++ b/.github/actions/setup-dependencies/action.yml @@ -18,7 +18,7 @@ runs: with: enable-cache: true cache-dependency-glob: "uv.lock" - python-version: ${{ matrix.python-version }} + python-version: ${{ inputs.python-version }} - name: Install the project run: uv sync From 55fd97bcaea15eae43471c845325d22f6e4a3588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 17:44:41 +0100 Subject: [PATCH 149/154] ci: rewritten packgage build and publishing process As unblob now contains an extension module, we need to build multiple wheels for multiple platforms. Even for Docker images we need a different wheel per architecture. In order to keep unnecessary rebuilds to a minimum, wheels are built only by the `build_linux` and `build_macos` jobs, and both PyPi publishing and Docker image building reuses them. This change needs dependency relationships between the affected jobs, so the `run-tests`, `release` and `build-publish-image` workflows are merged to a single `CI` workflow. Technically the `run-tests` job could have been left out, but it makes sense to have a dependency relationship between that an the release publishing job. The existing already parts, like pre-commit, pyright, pytest and docker build steps are lifted from the now deleted workflow files. The template of the wheel build and publishing parts of this job was generated using: maturin generate-ci --platform manylinux musllinux macos --pytest -- github The generated code is cleaned up, instead of running pytest for created wheels, an `unblob --version` test command is added (it is a PITA having 3rd party extractors available in all these platforms) --- .github/workflows/CI.yml | 425 ++++++++++++++++++++++ .github/workflows/build-publish-image.yml | 155 -------- .github/workflows/release.yml | 21 -- .github/workflows/run-tests.yml | 65 ---- pyproject.toml | 2 +- uv.lock | 4 +- 6 files changed, 428 insertions(+), 244 deletions(-) create mode 100644 .github/workflows/CI.yml delete mode 100644 .github/workflows/build-publish-image.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/run-tests.yml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000000..e5c977bd0f --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,425 @@ +name: CI + +on: + push: + branches: + - main + tags: + - "*" + pull_request: + merge_group: + workflow_dispatch: + inputs: + test_release: + description: If true, publish to test.pypi.org + required: true + default: true + type: boolean + +permissions: + contents: read + +env: + DOCKER_IMAGE: ghcr.io/onekey-sec/unblob + +jobs: + check_pre_commit: + name: Check - pre-commit + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies + + - name: Setup Nix + uses: cachix/install-nix-action@v30 + with: + install_url: https://releases.nixos.org/nix/nix-2.18.8/install + + - name: Check pre-commit hook + uses: pre-commit/action@v3.0.1 + + check_pyright: + name: Check - pyright + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies + + - name: Check - pyright + run: uv run pyright . + + run_python_tests: + name: Run tests (Python) + needs: [check_pre_commit, check_pyright] + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies + with: + python-version: ${{ matrix.python-version }} + + - name: Setup git lfs + uses: ./.github/actions/setup-git-lfs + + - name: Run pytest + run: uv run pytest -vvv + + build_linux_wheels: + name: Build wheels (linux) + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.*.labels.*.name, 'dependencies') + needs: [check_pre_commit] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - manylinux: manylinux2014 + target: x86_64 + - manylinux: manylinux2014 + target: aarch64 + - manylinux: musllinux_1_1 + target: x86_64 + # lief is not available for this platform (and no sdist is provided) + # - manylinux: musllinux_1_1 + # target: aarch64 + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: 3.x + + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist + sccache: "true" + manylinux: ${{ matrix.platform.manylinux }} + + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.platform.manylinux }}-${{ matrix.platform.target }} + path: dist + + - name: Check wheel (x86-manylinux) + if: matrix.platform.target == 'x86_64' && startsWith(matrix.platform.manylinux, 'manylinux') + shell: bash + run: | + set -e + python3 -m venv wheel.venv + source wheel.venv/bin/activate + pip install dist/*.whl + unblob --help + + - name: Check wheel (cross-manylinux) + if: matrix.platform.target != 'x86_64' && startsWith(matrix.platform.manylinux, 'manylinux') + uses: uraimo/run-on-arch-action@v2 + with: + arch: ${{ matrix.platform.target }} + distro: ubuntu22.04 + githubToken: ${{ github.token }} + install: | + apt-get update + apt-get install -y --no-install-recommends python3-venv libmagic1 + run: | + set -e + python3 -m venv wheel.venv + source wheel.venv/bin/activate + pip install dist/*.whl + unblob --version + + - name: Check wheel (x86-musllinux) + if: matrix.platform.target == 'x86_64' && startsWith(matrix.platform.manylinux, 'musllinux') + uses: addnab/docker-run-action@v3 + with: + image: alpine:latest + options: -v ${{ github.workspace }}:/io -w /io + run: | + set -e + apk add py3-pip libmagic gcc lz4 musl-dev python3-dev + python3 -m venv wheel.venv + source wheel.venv/bin/activate + pip install dist/*.whl + unblob --version + + - name: Check wheel (cross-musllinux) + if: matrix.platform.target != 'x86_64' && startsWith(matrix.platform.manylinux, 'musllinux') + uses: uraimo/run-on-arch-action@v2 + with: + arch: ${{ matrix.platform.target }} + distro: alpine_latest + githubToken: ${{ github.token }} + install: | + apk add py3-pip libmagic gcc lz4 musl-dev python3-dev + run: | + set -e + python3 -m venv wheel.venv + source wheel.venv/bin/activate + pip install dist/*.whl + unblob --version + + build_macos_wheels: + name: Build wheels (macos) + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.*.labels.*.name, 'dependencies') + needs: [check_pre_commit] + runs-on: ${{ matrix.platform.runner }} + strategy: + fail-fast: false + matrix: + platform: + - runner: macos-13 + target: x86_64 + - runner: macos-14 + target: aarch64 + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: 3.x + + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist + sccache: "true" + + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-macos-${{ matrix.platform.target }} + path: dist + + - name: Check wheel + run: | + set -e + brew install libmagic + python3 -m venv .venv + source .venv/bin/activate + pip install --find-links dist unblob + unblob --version + + build_sdist: + name: Build sdist + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.*.labels.*.name, 'dependencies') + needs: [check_pre_commit] + runs-on: ubuntu-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies + + - name: Build sdist + uses: PyO3/maturin-action@v1 + with: + command: sdist + args: --out dist + + - name: Upload sdist + uses: actions/upload-artifact@v4 + with: + name: wheels-sdist + path: dist + + build-image: + name: Build Docker image + if: github.event_name == 'push' || contains(github.event.*.labels.*.name, 'dependencies') + needs: [build_linux_wheels] + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - docker: linux/amd64 + wheel: wheels-manylinux2014-x86_64 + - docker: linux/arm64 + wheel: wheels-manylinux2014-aarch64 + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Download wheel + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.platform.wheel }} + path: dist + + - name: Prepare + run: | + platform=${{ matrix.platform.docker }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.DOCKER_IMAGE }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch + type=semver,pattern={{version}} + type=sha + + - name: Set up QEMU + if: matrix.platform.docker != 'linux/amd64' + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push by digest + id: build + uses: docker/build-push-action@v6 + with: + context: . + platforms: ${{ matrix.platform.docker }} + labels: ${{ steps.meta.outputs.labels }} + tags: ${{ steps.meta.output.tags }} + outputs: type=image,name=${{ env.DOCKER_IMAGE }},push-by-digest=true,name-canonical=true,push=${{ github.repository_owner == 'onekey-sec' && github.event_name == 'push' }} + + - name: Docker container vulnerability scan + id: scan + uses: anchore/scan-action@v6 + with: + image: ${{ env.DOCKER_IMAGE }} + fail-build: false + severity-cutoff: critical + only-fixed: true + + - name: Upload SARIF report + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: ${{ steps.scan.outputs.sarif }} + + - name: Check unblob - help + run: docker run --rm ${{ env.DOCKER_IMAGE }}:latest --help + + - name: Check unblob - show-external-dependencies + run: docker run --rm ${{ env.DOCKER_IMAGE }}:latest --show-external-dependencies + + - name: Check unblob - run for a file with --verbose + run: docker run --rm -v "$(pwd)"/tests/integration/archive/zip/regular:/test ${{ env.DOCKER_IMAGE }}:latest -v -e /tmp /test/__input__/apple.zip + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digest-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge-and-push-image: + if: github.repository_owner == 'onekey-sec' && github.event_name == 'push' + runs-on: ubuntu-latest + needs: + - build-image + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digest-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.DOCKER_IMAGE }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch + type=semver,pattern={{version}} + type=sha + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.DOCKER_IMAGE }}@sha256:%s ' *) + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}:${{ steps.meta.outputs.version }} + + release: + name: Release + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + needs: + - run_python_tests + - build_linux_wheels + - build_macos_wheels + - build_sdist + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write + steps: + - uses: actions/download-artifact@v4 + with: + pattern: wheel-* + path: dist + merge-multiple: true + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: dist/* + + - name: Publish to PyPI + if: ${{ startsWith(github.ref, 'refs/tags/') }} + uses: PyO3/maturin-action@v1 + env: + MATURIN_PYPI_TOKEN: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.test_release && secrets.TEST_PYPI_API_TOKEN || secrets.POETRY_PYPI_TOKEN_PYPI }} + MATURIN_REPOSITORY: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.test_release && 'testpypi' || 'pypi' }} + with: + command: upload + args: --non-interactive --skip-existing dist/* diff --git a/.github/workflows/build-publish-image.yml b/.github/workflows/build-publish-image.yml deleted file mode 100644 index fde30e41b5..0000000000 --- a/.github/workflows/build-publish-image.yml +++ /dev/null @@ -1,155 +0,0 @@ -name: Build Docker image - -on: - pull_request: - push: - branches: - - main - tags: - - '*' - -env: - DOCKER_IMAGE: ghcr.io/onekey-sec/unblob - -jobs: - build-image: - if: github.event_name == 'push' || contains(github.event.*.labels.*.name, 'dependencies') - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - platform: - - linux/amd64 - - linux/arm64 - steps: - - name: Prepare - run: | - platform=${{ matrix.platform }} - echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV - - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Setup git lfs - uses: ./.github/actions/setup-git-lfs - - - name: Setup 3rd party dependencies - uses: ./.github/actions/setup-dependencies - - - name: uv build - run: uv build --wheel - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.DOCKER_IMAGE }} - tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=ref,event=branch - type=semver,pattern={{version}} - type=sha - - - name: Set up QEMU - if: matrix.platform != 'linux/amd64' - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push by digest - id: build - uses: docker/build-push-action@v6 - with: - context: . - platforms: ${{ matrix.platform }} - labels: ${{ steps.meta.outputs.labels }} - tags: ${{ steps.meta.output.tags }} - outputs: type=image,name=${{ env.DOCKER_IMAGE }},push-by-digest=true,name-canonical=true,push=${{ github.repository_owner == 'onekey-sec' && 'true' || 'false' }} - - - name: Docker container vulnerability scan - id: scan - uses: anchore/scan-action@v6 - with: - image: ${{ env.DOCKER_IMAGE }} - fail-build: false - severity-cutoff: critical - only-fixed: true - - - name: Upload SARIF report - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: ${{ steps.scan.outputs.sarif }} - - - name: Check unblob - help - run: docker run --rm ${{ env.DOCKER_IMAGE }}:latest --help - - - name: Check unblob - show-external-dependencies - run: docker run --rm ${{ env.DOCKER_IMAGE }}:latest --show-external-dependencies - - - name: Check unblob - run for a file with --verbose - run: docker run --rm -v "$(pwd)"/tests/integration/archive/zip/regular:/test ${{ env.DOCKER_IMAGE }}:latest -v -e /tmp /test/__input__/apple.zip - - - name: Export digest - run: | - mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" - - - name: Upload digest - uses: actions/upload-artifact@v4 - with: - name: digest-${{ env.PLATFORM_PAIR }} - path: /tmp/digests/* - if-no-files-found: error - retention-days: 1 - - merge-and-push-image: - if: github.repository_owner == 'onekey-sec' && github.event_name == 'push' - runs-on: ubuntu-latest - needs: - - build-image - steps: - - name: Download digests - uses: actions/download-artifact@v4 - with: - path: /tmp/digests - pattern: digest-* - merge-multiple: true - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.DOCKER_IMAGE }} - tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=ref,event=branch - type=semver,pattern={{version}} - type=sha - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Create manifest list and push - working-directory: /tmp/digests - run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf '${{ env.DOCKER_IMAGE }}@sha256:%s ' *) - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}:${{ steps.meta.outputs.version }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index c4b5e52b13..0000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: PyPI Release - -on: - release: - types: [created] - -jobs: - release: - runs-on: ubuntu-24.04 - - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Setup dependencies - uses: ./.github/actions/setup-dependencies - - - run: uv build - - run: uv publish - env: - UV_PUBLISH_TOKEN: ${{secrets.POETRY_PYPI_TOKEN_PYPI}} diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml deleted file mode 100644 index fe06ad6919..0000000000 --- a/.github/workflows/run-tests.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Run checks and tests - -on: - push: - branches: - - main - pull_request: - merge_group: - - -jobs: - check_pre_commit: - name: Check - pre-commit - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - - - name: Setup 3rd party dependencies - uses: ./.github/actions/setup-dependencies - - - name: Setup Nix - uses: cachix/install-nix-action@v30 - with: - install_url: https://releases.nixos.org/nix/nix-2.18.8/install - - - name: Check pre-commit hook - uses: pre-commit/action@v3.0.1 - - check_pyright: - name: Check - pyright - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Setup 3rd party dependencies - uses: ./.github/actions/setup-dependencies - - - name: Check - pyright - run: uv run pyright . - - run_tests: - name: Run tests - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - - name: Setup 3rd party dependencies - uses: ./.github/actions/setup-dependencies - with: - python-version: ${{ matrix.python-version }} - - - name: Setup git lfs - uses: ./.github/actions/setup-git-lfs - - - name: Run pytest - run: uv run pytest -vvv diff --git a/pyproject.toml b/pyproject.toml index 2fc544d2f1..5619cb07b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ unblob = "unblob.cli:main" [dependency-groups] dev = [ - "atheris>=2.3,<3.0; python_version < '3.12'", + "atheris>=2.3,<3.0; sys_platform == 'linux' and python_version < '3.12'", "pre-commit>=3.5,<5.0", "pyright>=1.1.349", "pytest-cov>=3,<7", diff --git a/uv.lock b/uv.lock index fce05f38cc..af11566931 100644 --- a/uv.lock +++ b/uv.lock @@ -1517,7 +1517,7 @@ dependencies = [ [package.dev-dependencies] dev = [ - { name = "atheris", marker = "python_full_version < '3.12'" }, + { name = "atheris", marker = "python_full_version < '3.12' and sys_platform == 'linux'" }, { name = "pre-commit" }, { name = "pyright" }, { name = "pytest" }, @@ -1559,7 +1559,7 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ - { name = "atheris", marker = "python_full_version < '3.12'", specifier = ">=2.3,<3.0" }, + { name = "atheris", marker = "python_full_version < '3.12' and sys_platform == 'linux'", specifier = ">=2.3,<3.0" }, { name = "pre-commit", specifier = ">=3.5,<5.0" }, { name = "pyright", specifier = ">=1.1.349" }, { name = "pytest", specifier = ">=8.0.0" }, From 5bcdf74a6e6b11055e1630f7567f979b2334fbc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:38:13 +0100 Subject: [PATCH 150/154] ci(rust): add rust test execution --- .github/workflows/CI.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e5c977bd0f..8d47f0c84d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -79,6 +79,22 @@ jobs: - name: Run pytest run: uv run pytest -vvv + run_rust_tests: + name: Run tests (Rust) + needs: [check_pre_commit] + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + - macos-latest + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - name: Run cargo test + run: cargo test + build_linux_wheels: name: Build wheels (linux) if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.*.labels.*.name, 'dependencies') @@ -392,6 +408,7 @@ jobs: if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: - run_python_tests + - run_rust_tests - build_linux_wheels - build_macos_wheels - build_sdist From c1cb947853d2ba6f124ac548e9f95b44cbe0f9d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:30:50 +0100 Subject: [PATCH 151/154] ci: speed-up compilation using sccache --- .github/actions/setup-dependencies/action.yml | 11 +++++++++++ .github/workflows/CI.yml | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/.github/actions/setup-dependencies/action.yml b/.github/actions/setup-dependencies/action.yml index 1ca6db399e..e3b22d5dd9 100644 --- a/.github/actions/setup-dependencies/action.yml +++ b/.github/actions/setup-dependencies/action.yml @@ -13,6 +13,17 @@ runs: run: sudo ./install-deps.sh shell: bash + - name: Setup sccache # for speeding up Rust builds + uses: mozilla-actions/sccache-action@v0.0.7 + with: + disable_annotations: true # it is very spammy, but useful for diagnostics + + - name: Enable sccache + run: | + echo SCCACHE_GHA_ENABLED=true >> $GITHUB_ENV + echo RUSTC_WRAPPER=sccache >> $GITHUB_ENV + shell: bash + - name: Install uv & Python uses: astral-sh/setup-uv@v5 with: diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8d47f0c84d..0901e35dd0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -92,7 +92,13 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 + - name: Setup sccache + uses: mozilla-actions/sccache-action@v0.0.7 + - name: Run cargo test + env: + SCCACHE_GHA_ENABLED: "true" + RUSTC_WRAPPER: "sccache" run: cargo test build_linux_wheels: From 03b33d44592fe52ca0858752807c9f86d6738a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:31:09 +0100 Subject: [PATCH 152/154] ci: cancel redundant pipelines --- .github/workflows/CI.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0901e35dd0..ac7bc2a463 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -22,6 +22,10 @@ permissions: env: DOCKER_IMAGE: ghcr.io/onekey-sec/unblob +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: check_pre_commit: name: Check - pre-commit From 6e0743941867bd47241b80c0ff573fc7e89d2797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:33:31 +0100 Subject: [PATCH 153/154] ci: don't install test-only dependencies when we don't need them --- .github/actions/setup-dependencies/action.yml | 7 ++++++- .github/workflows/CI.yml | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-dependencies/action.yml b/.github/actions/setup-dependencies/action.yml index e3b22d5dd9..588a4b7dc3 100644 --- a/.github/actions/setup-dependencies/action.yml +++ b/.github/actions/setup-dependencies/action.yml @@ -3,13 +3,18 @@ inputs: description: "Python version to setup" required: false default: "3.9" + install-test-deps: + description: "Wether to install 3rd Party dependencies (for tests)" + required: false + default: "true" # unfortunately boolean variables are not supported name: "Setup dependencies" description: "Install all required dependencies for worflows to run." runs: using: "composite" steps: - - name: Install 3rd party dependencies + - if: inputs.install-test-deps == 'true' + name: Install 3rd party dependencies run: sudo ./install-deps.sh shell: bash diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ac7bc2a463..dc0293ef71 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -39,6 +39,8 @@ jobs: - name: Setup 3rd party dependencies uses: ./.github/actions/setup-dependencies + with: + install-test-deps: "false" - name: Setup Nix uses: cachix/install-nix-action@v30 @@ -256,6 +258,8 @@ jobs: - name: Setup 3rd party dependencies uses: ./.github/actions/setup-dependencies + with: + install-test-deps: "false" - name: Build sdist uses: PyO3/maturin-action@v1 From f3c03d003e1ba88063a0bce556e75adbfca533fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= <1771332+vlaci@users.noreply.github.com> Date: Sat, 1 Feb 2025 23:41:16 +0100 Subject: [PATCH 154/154] ci: install Python the same way everywhere For wheel builds, we shouldn't create a virtualenv, as it conflicts with the check phase --- .github/actions/setup-dependencies/action.yml | 4 ++++ .github/workflows/CI.yml | 13 ++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/actions/setup-dependencies/action.yml b/.github/actions/setup-dependencies/action.yml index 588a4b7dc3..0f2e15b90a 100644 --- a/.github/actions/setup-dependencies/action.yml +++ b/.github/actions/setup-dependencies/action.yml @@ -39,3 +39,7 @@ runs: - name: Install the project run: uv sync shell: bash + + - name: Setup pip # some tools need it, and uv virtualenvs doesn't contain it + run: uv pip install pip + shell: bash diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index dc0293ef71..3f27dac5d6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -34,9 +34,6 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 - - name: Setup 3rd party dependencies uses: ./.github/actions/setup-dependencies with: @@ -129,9 +126,10 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies with: - python-version: 3.x + install-test-deps: "false" - name: Build wheels uses: PyO3/maturin-action@v1 @@ -221,9 +219,10 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - name: Setup 3rd party dependencies + uses: ./.github/actions/setup-dependencies with: - python-version: 3.x + install-test-deps: "false" - name: Build wheels uses: PyO3/maturin-action@v1