From 899b168087feb0df4febccc579ec92832209daae Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 07:35:41 -0500 Subject: [PATCH 01/12] initial implementation of hosting the stdlib in the github releases assets location --- kybra/build_wasm_binary_or_exit.py | 101 ++++++++++++++---- kybra/compiler/LICENSE-RustPython | 21 ++++ kybra/compiler/install_rust_dependencies.sh | 26 +---- .../compiler/kybra_generate/src/header/mod.rs | 2 +- kybra/compiler/python_3_10_13_licenses.pdf | Bin 0 -> 438859 bytes publish-github-action.sh | 13 +++ 6 files changed, 123 insertions(+), 40 deletions(-) create mode 100644 kybra/compiler/LICENSE-RustPython create mode 100644 kybra/compiler/python_3_10_13_licenses.pdf diff --git a/kybra/build_wasm_binary_or_exit.py b/kybra/build_wasm_binary_or_exit.py index b61566810..67a54acad 100644 --- a/kybra/build_wasm_binary_or_exit.py +++ b/kybra/build_wasm_binary_or_exit.py @@ -1,7 +1,9 @@ +import os import shutil import subprocess import sys +import kybra from kybra.colors import red from kybra.timed import timed_inline from kybra.types import Paths @@ -18,23 +20,82 @@ def build_wasm_binary_or_exit( generate_and_create_candid_file(paths, canister_name, cargo_env, verbose) +# TODO should we also gzip? def compile_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool): - shutil.copytree( - f"{paths['global_kybra_version_dir']}/RustPython/Lib", - f"{paths['canister']}/Lib", - ) - - run_subprocess( - [ - f"{paths['global_kybra_rust_bin_dir']}/cargo", - "run", - f"--manifest-path={paths['canister']}/kybra_compile_python_stdlib/Cargo.toml", - f"--package=kybra_compile_python_stdlib", - f"{paths['canister']}/python_stdlib", - ], - cargo_env, - verbose, - ) + if os.environ.get("KYBRA_COMPILE_RUST_PYTHON_STDLIB") == "true": + rust_python_path = f"{paths['global_kybra_version_dir']}/RustPython" + + if not os.path.exists(rust_python_path): + run_subprocess( + ["git", "clone", "https://github.com/RustPython/RustPython.git"], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) + + run_subprocess( + ["git", "checkout", "f12875027ce425297c07cbccb9be77514ed46157"], + cargo_env, + verbose, + cwd=f"{paths['global_kybra_version_dir']}/RustPython", + ) + + shutil.copytree( + f"{rust_python_path}/Lib", + f"{paths['canister']}/Lib", + ) + + os.makedirs(f"{paths['canister']}/rust_python_stdlib") + shutil.copy( + os.path.dirname(kybra.__file__) + "/compiler/LICENSE-RustPython", + f"{paths['canister']}/rust_python_stdlib/LICENSE-RustPython", + ) + shutil.copy( + os.path.dirname(kybra.__file__) + "/compiler/python_3_10_13_licenses.pdf", + f"{paths['canister']}/rust_python_stdlib/python_3_10_13_licenses.pdf", + ) + + run_subprocess( + [ + f"{paths['global_kybra_rust_bin_dir']}/cargo", + "run", + f"--manifest-path={paths['canister']}/kybra_compile_python_stdlib/Cargo.toml", + f"--package=kybra_compile_python_stdlib", + f"{paths['canister']}/rust_python_stdlib/stdlib", + ], + cargo_env, + verbose, + ) + else: + rust_python_stdlib_path = ( + f"{paths['global_kybra_version_dir']}/rust_python_stdlib" + ) + + if not os.path.exists(rust_python_stdlib_path): + run_subprocess( + [ + "curl", + "-Lf", + f"https://github.com/demergent-labs/kybra/releases/download/{kybra.__version__}/rust_python_stdlib.tar", + "-o", + "rust_python_stdlib.tar", + ], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) + + run_subprocess( + ["tar", "-xvf", "rust_python_stdlib.tar"], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) + + shutil.copytree( + rust_python_stdlib_path, + f"{paths['canister']}/rust_python_stdlib", + ) def compile_generated_rust_code( @@ -96,9 +157,13 @@ def generate_and_create_candid_file( def run_subprocess( - args: list[str], env: dict[str, str], verbose: bool, throw: bool = True + args: list[str], + env: dict[str, str], + verbose: bool, + throw: bool = True, + cwd: str | None = None, ) -> bytes: - result = subprocess.run(args, env=env, capture_output=not verbose) + result = subprocess.run(args, env=env, capture_output=not verbose, cwd=cwd) if result.returncode != 0: if throw == True: diff --git a/kybra/compiler/LICENSE-RustPython b/kybra/compiler/LICENSE-RustPython new file mode 100644 index 000000000..7213274e0 --- /dev/null +++ b/kybra/compiler/LICENSE-RustPython @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 RustPython Team + +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. diff --git a/kybra/compiler/install_rust_dependencies.sh b/kybra/compiler/install_rust_dependencies.sh index 7a00be377..4a9b41fa4 100755 --- a/kybra/compiler/install_rust_dependencies.sh +++ b/kybra/compiler/install_rust_dependencies.sh @@ -22,7 +22,7 @@ export CARGO_HOME="$global_kybra_rust_dir" export RUSTUP_HOME="$global_kybra_rust_dir" function run() { - if ! rustup_exists || ! cargo_exists || ! rustc_exists || ! wasm32_wasi_target_installed || ! wasi2ic_exists || ! rust_python_exists || ! candid_extractor_exists || ! cargo_binstall_exists; then + if ! rustup_exists || ! cargo_exists || ! rustc_exists || ! wasm32_wasi_target_installed || ! wasi2ic_exists || ! candid_extractor_exists || ! cargo_binstall_exists; then echo -e "\nKybra "$kybra_version" prerequisite installation (this may take a few minutes)\n" mkdir -p "$global_kybra_rust_dir" @@ -31,7 +31,6 @@ function run() { install_rustup install_wasm32_wasi install_wasi2ic - install_rust_python install_candid_extractor else update_rustup @@ -39,7 +38,7 @@ function run() { } function install_rustup() { - echo -e "1/5) Installing Rust" + echo -e "1/4) Installing Rust" curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path -y --default-toolchain="$rust_version" &> "$global_kybra_logs_dir"/install_rustup } @@ -49,30 +48,19 @@ function update_rustup() { } function install_wasm32_wasi() { - echo -e "2/5) Installing wasm32-wasi" + echo -e "2/4) Installing wasm32-wasi" "$global_kybra_rustup_bin" target add wasm32-wasi &> "$global_kybra_logs_dir"/install_wasm32_wasi } function install_wasi2ic() { - echo -e "3/5) Installing wasi2ic" + echo -e "3/4) Installing wasi2ic" "$global_kybra_cargo_bin" install --git https://github.com/wasm-forge/wasi2ic --rev 7418e0bd1a7810c8e9c55cc0155c921503a793b8 &> "$global_kybra_logs_dir"/install_wasi2ic } -function install_rust_python() { - echo -e "4/5) Installing RustPython" - - cd "$global_kybra_version_dir" &> "$global_kybra_logs_dir"/install_rust_python - git clone https://github.com/RustPython/RustPython.git >> "$global_kybra_logs_dir"/install_rust_python 2>&1 - cd RustPython >> "$global_kybra_logs_dir"/install_rust_python 2>&1 - git checkout f12875027ce425297c07cbccb9be77514ed46157 >> "$global_kybra_logs_dir"/install_rust_python 2>&1 - cd - >> "$global_kybra_logs_dir"/install_rust_python 2>&1 - cd - >> "$global_kybra_logs_dir"/install_rust_python 2>&1 -} - function install_candid_extractor() { - echo -e "5/5) Installing candid-extractor" + echo -e "4/4) Installing candid-extractor" # cargo binstall makes the installation process for candid-extractor much faster curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash &> "$global_kybra_logs_dir"/install_cargo_binstall @@ -99,10 +87,6 @@ function wasi2ic_exists() { [ -e "$global_kybra_wasi2ic_bin" ] } -function rust_python_exists() { - [ -e "$global_kybra_version_dir"/RustPython ] -} - function cargo_binstall_exists() { [ -e "$global_kybra_cargo_binstall_bin" ] } diff --git a/kybra/compiler/kybra_generate/src/header/mod.rs b/kybra/compiler/kybra_generate/src/header/mod.rs index 4ad4aa0f4..64ebc94d0 100644 --- a/kybra/compiler/kybra_generate/src/header/mod.rs +++ b/kybra/compiler/kybra_generate/src/header/mod.rs @@ -13,7 +13,7 @@ pub fn generate() -> TokenStream { #use_statements #traits - const PYTHON_STDLIB: &[u8] = include_bytes!("../python_stdlib"); + const PYTHON_STDLIB: &[u8] = include_bytes!("../rust_python_stdlib/stdlib"); static mut INTERPRETER_OPTION: Option = None; static mut SCOPE_OPTION: Option = None; diff --git a/kybra/compiler/python_3_10_13_licenses.pdf b/kybra/compiler/python_3_10_13_licenses.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dc2e8fdb7541d1403fb1584c7ac504f866215d91 GIT binary patch literal 438859 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

fVJ+G~l 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%0Ao>jxOA$+-yYY6}ndMfb1G2q>qG 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 Date: Fri, 12 Apr 2024 08:02:27 -0500 Subject: [PATCH 02/12] let us also gzip and fix a few issues --- kybra/__main__.py | 2 +- kybra/build_wasm_binary_or_exit.py | 7 +++---- publish-github-action.sh | 7 ++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/kybra/__main__.py b/kybra/__main__.py index befb81d25..1e8c3647d 100644 --- a/kybra/__main__.py +++ b/kybra/__main__.py @@ -22,7 +22,7 @@ def main(): args = parse_args_or_exit(sys.argv) paths = create_paths(args) - is_verbose = args["flags"]["verbose"] + is_verbose = args["flags"]["verbose"] or os.environ.get("KYBRA_VERBOSE") == "true" subprocess.run( [ diff --git a/kybra/build_wasm_binary_or_exit.py b/kybra/build_wasm_binary_or_exit.py index 67a54acad..d8bcb30a3 100644 --- a/kybra/build_wasm_binary_or_exit.py +++ b/kybra/build_wasm_binary_or_exit.py @@ -20,7 +20,6 @@ def build_wasm_binary_or_exit( generate_and_create_candid_file(paths, canister_name, cargo_env, verbose) -# TODO should we also gzip? def compile_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool): if os.environ.get("KYBRA_COMPILE_RUST_PYTHON_STDLIB") == "true": rust_python_path = f"{paths['global_kybra_version_dir']}/RustPython" @@ -76,9 +75,9 @@ def compile_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool [ "curl", "-Lf", - f"https://github.com/demergent-labs/kybra/releases/download/{kybra.__version__}/rust_python_stdlib.tar", + f"https://github.com/demergent-labs/kybra/releases/download/{kybra.__version__}/rust_python_stdlib.tar.gz", "-o", - "rust_python_stdlib.tar", + "rust_python_stdlib.tar.gz", ], cargo_env, verbose, @@ -86,7 +85,7 @@ def compile_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool ) run_subprocess( - ["tar", "-xvf", "rust_python_stdlib.tar"], + ["tar", "-xvf", "rust_python_stdlib.tar.gz"], cargo_env, verbose, cwd=paths["global_kybra_version_dir"], diff --git a/publish-github-action.sh b/publish-github-action.sh index 6a43affb5..980f484fe 100755 --- a/publish-github-action.sh +++ b/publish-github-action.sh @@ -40,7 +40,8 @@ dfx start --background cd examples/simple_erc20 pip install ../.. KYBRA_COMPILE_RUST_PYTHON_STDLIB=true KYBRA_REBUILD=true dfx deploy -tar -cf "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar" ".kybra/simple_erc20/rust_python_stdlib" +cd .kybra/simple_erc20 +tar -czf "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar.gz" "rust_python_stdlib" git add --all git commit -am "kybra-bot automated release $VERSION" @@ -51,7 +52,7 @@ git push origin $VERSION if [[ "$VERSION" == *"rc"* ]]; then - gh release create "$VERSION" "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar" -t "$VERSION" --prerelease + gh release create "$VERSION" "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar.gz" -t "$VERSION" --prerelease else - gh release create "$VERSION" "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar" -t "$VERSION" + gh release create "$VERSION" "$HOME/.config/kybra/$VERSION/rust_python_stdlib.tar.gz" -t "$VERSION" fi From 549d203d99d6da6508a2a3baf3eae1d8f5934e7e Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 08:29:34 -0500 Subject: [PATCH 03/12] update the test.yml to install dfx --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 908003e4b..ee35b6536 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,6 +35,11 @@ jobs: with: ref: ${{ contains(github.head_ref, 'release--') && github.event.pull_request.head.ref || github.ref }} # This is necessary for this job to be able to commit and push to the origin remote properly token: ${{ secrets.LASTMJS_GITHUB_TOKEN || github.token }} # A personal GitHub token is setup as a secret so that committing and pushing to GitHub from the Action will trigger another workflow + - if: contains(github.head_ref, 'release--') + name: Install dfx + run: | + DFXVM_INIT_YES=true DFX_VERSION=0.19.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)" + echo "$HOME/.local/share/dfx/bin" >> $GITHUB_PATH # TODO we should use some Action-specific bot account - if: contains(github.head_ref, 'release--') run: git config --global user.name 'Jordan Last' From 257c5ef9fdef272c94c63b0babbe63fa4d1b797e Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 08:49:47 -0500 Subject: [PATCH 04/12] attempt to install pyenv and venv stuff for github asset upload process --- .github/workflows/test.yml | 3 +++ publish-github-action.sh | 2 ++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ee35b6536..6e02379fa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,6 +40,9 @@ jobs: run: | DFXVM_INIT_YES=true DFX_VERSION=0.19.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)" echo "$HOME/.local/share/dfx/bin" >> $GITHUB_PATH + - if: ${{ contains(github.head_ref, 'release--') }} + working-directory: ${{ matrix.example_directories }} + run: ~/.pyenv/bin/pyenv install 3.10.7 # TODO we should use some Action-specific bot account - if: contains(github.head_ref, 'release--') run: git config --global user.name 'Jordan Last' diff --git a/publish-github-action.sh b/publish-github-action.sh index 980f484fe..e195ce73c 100755 --- a/publish-github-action.sh +++ b/publish-github-action.sh @@ -38,6 +38,8 @@ done dfx start --background cd examples/simple_erc20 +~/.pyenv/versions/3.10.7/bin/python -m venv venv +source venv/bin/activate pip install ../.. KYBRA_COMPILE_RUST_PYTHON_STDLIB=true KYBRA_REBUILD=true dfx deploy cd .kybra/simple_erc20 From dd49eda3572294132ea744c576bf3167ab710f22 Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 08:56:27 -0500 Subject: [PATCH 05/12] missed an installation step --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e02379fa..cef7723f8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,7 +41,8 @@ jobs: DFXVM_INIT_YES=true DFX_VERSION=0.19.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)" echo "$HOME/.local/share/dfx/bin" >> $GITHUB_PATH - if: ${{ contains(github.head_ref, 'release--') }} - working-directory: ${{ matrix.example_directories }} + run: curl https://pyenv.run | bash + - if: ${{ contains(github.head_ref, 'release--') }} run: ~/.pyenv/bin/pyenv install 3.10.7 # TODO we should use some Action-specific bot account - if: contains(github.head_ref, 'release--') From e5b9ddfa86c042b428756f7ccabd58e5225bf94b Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 09:02:30 -0500 Subject: [PATCH 06/12] remove unneccessary pyenv installation --- .github/workflows/test.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cef7723f8..ee35b6536 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,10 +40,6 @@ jobs: run: | DFXVM_INIT_YES=true DFX_VERSION=0.19.0 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)" echo "$HOME/.local/share/dfx/bin" >> $GITHUB_PATH - - if: ${{ contains(github.head_ref, 'release--') }} - run: curl https://pyenv.run | bash - - if: ${{ contains(github.head_ref, 'release--') }} - run: ~/.pyenv/bin/pyenv install 3.10.7 # TODO we should use some Action-specific bot account - if: contains(github.head_ref, 'release--') run: git config --global user.name 'Jordan Last' From 96a45f355ce9833f8eef6450b7e18221015d1613 Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 09:13:28 -0500 Subject: [PATCH 07/12] forgot the github token --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ee35b6536..9fb25d64c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,6 +25,7 @@ jobs: env: GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} # All commits must be verified PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} outputs: # These outputs are used to pass information along to the next job should_run_tests: ${{ steps.should_run_tests.outputs.should_run_tests }} # We only want the next job to run the tests once we have finished deploying to PyPI and GitHub From 206b0448ae8fb7eb53326836067e882367069b0b Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 09:37:32 -0500 Subject: [PATCH 08/12] add a few environment variables for testing --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9fb25d64c..cfdba0e93 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -148,6 +148,8 @@ jobs: runs-on: ubuntu-latest env: ETHEREUM_URL: ${{ secrets.ETHEREUM_URL }} + KYBRA_COMPILE_RUST_PYTHON_STDLIB: ${{ matrix.azle_source == 'repo' }} + KYBRA_VERBOSE: true # TODO should we remove this or keep this? strategy: fail-fast: false # We want to see which example tests succeed and which ones fail, we don't want one example test to cancel the rest matrix: From 66a640fc96befb1dc235e71a35a6877fb160153c Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 09:49:26 -0500 Subject: [PATCH 09/12] type, azle_source should be kybra_source --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cfdba0e93..6e81c3cdc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -148,7 +148,7 @@ jobs: runs-on: ubuntu-latest env: ETHEREUM_URL: ${{ secrets.ETHEREUM_URL }} - KYBRA_COMPILE_RUST_PYTHON_STDLIB: ${{ matrix.azle_source == 'repo' }} + KYBRA_COMPILE_RUST_PYTHON_STDLIB: ${{ matrix.kybra_source == 'repo' }} KYBRA_VERBOSE: true # TODO should we remove this or keep this? strategy: fail-fast: false # We want to see which example tests succeed and which ones fail, we don't want one example test to cancel the rest From 42422690593234f20a071ba9ea22b6e47c1f9306 Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 12:10:51 -0500 Subject: [PATCH 10/12] make build wasm binary or exit very declarative --- kybra/build_wasm_binary_or_exit.py | 202 +++++++++++++++++++---------- 1 file changed, 131 insertions(+), 71 deletions(-) diff --git a/kybra/build_wasm_binary_or_exit.py b/kybra/build_wasm_binary_or_exit.py index d8bcb30a3..63bcc259f 100644 --- a/kybra/build_wasm_binary_or_exit.py +++ b/kybra/build_wasm_binary_or_exit.py @@ -13,88 +13,148 @@ def build_wasm_binary_or_exit( paths: Paths, canister_name: str, cargo_env: dict[str, str], verbose: bool = False ): - compile_python_stdlib(paths, cargo_env, verbose) + compile_or_download_rust_python_stdlib(paths, cargo_env, verbose) compile_generated_rust_code(paths, canister_name, cargo_env, verbose) copy_wasm_to_dev_location(paths, canister_name) run_wasi2ic_on_wasm(paths, canister_name, cargo_env, verbose) generate_and_create_candid_file(paths, canister_name, cargo_env, verbose) -def compile_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool): +def compile_or_download_rust_python_stdlib( + paths: Paths, cargo_env: dict[str, str], verbose: bool +): if os.environ.get("KYBRA_COMPILE_RUST_PYTHON_STDLIB") == "true": - rust_python_path = f"{paths['global_kybra_version_dir']}/RustPython" - - if not os.path.exists(rust_python_path): - run_subprocess( - ["git", "clone", "https://github.com/RustPython/RustPython.git"], - cargo_env, - verbose, - cwd=paths["global_kybra_version_dir"], - ) - - run_subprocess( - ["git", "checkout", "f12875027ce425297c07cbccb9be77514ed46157"], - cargo_env, - verbose, - cwd=f"{paths['global_kybra_version_dir']}/RustPython", - ) - - shutil.copytree( - f"{rust_python_path}/Lib", - f"{paths['canister']}/Lib", - ) - - os.makedirs(f"{paths['canister']}/rust_python_stdlib") - shutil.copy( - os.path.dirname(kybra.__file__) + "/compiler/LICENSE-RustPython", - f"{paths['canister']}/rust_python_stdlib/LICENSE-RustPython", - ) - shutil.copy( - os.path.dirname(kybra.__file__) + "/compiler/python_3_10_13_licenses.pdf", - f"{paths['canister']}/rust_python_stdlib/python_3_10_13_licenses.pdf", - ) - - run_subprocess( - [ - f"{paths['global_kybra_rust_bin_dir']}/cargo", - "run", - f"--manifest-path={paths['canister']}/kybra_compile_python_stdlib/Cargo.toml", - f"--package=kybra_compile_python_stdlib", - f"{paths['canister']}/rust_python_stdlib/stdlib", - ], - cargo_env, - verbose, - ) + compile_rust_python_stdlib(paths, cargo_env, verbose) else: - rust_python_stdlib_path = ( + rust_python_stdlib_global_path = ( f"{paths['global_kybra_version_dir']}/rust_python_stdlib" ) - - if not os.path.exists(rust_python_stdlib_path): - run_subprocess( - [ - "curl", - "-Lf", - f"https://github.com/demergent-labs/kybra/releases/download/{kybra.__version__}/rust_python_stdlib.tar.gz", - "-o", - "rust_python_stdlib.tar.gz", - ], - cargo_env, - verbose, - cwd=paths["global_kybra_version_dir"], - ) - - run_subprocess( - ["tar", "-xvf", "rust_python_stdlib.tar.gz"], - cargo_env, - verbose, - cwd=paths["global_kybra_version_dir"], - ) - - shutil.copytree( - rust_python_stdlib_path, - f"{paths['canister']}/rust_python_stdlib", + download_rust_python_stdlib( + rust_python_stdlib_global_path, paths, cargo_env, verbose ) + copy_rust_python_stdlib_global_to_staging(rust_python_stdlib_global_path, paths) + + +def compile_rust_python_stdlib(paths: Paths, cargo_env: dict[str, str], verbose: bool): + rust_python_global_path = f"{paths['global_kybra_version_dir']}/RustPython" + + if not os.path.exists(rust_python_global_path): + clone_and_checkout_rust_python(paths, cargo_env, verbose) + + copy_rust_python_lib_global_to_staging(rust_python_global_path, paths) + + rust_python_stdlib_staging_path = f"{paths['canister']}/rust_python_stdlib" + + create_rust_python_stdlib_staging_directory(rust_python_stdlib_staging_path) + compile_and_write_rust_python_stdlib_to_staging( + rust_python_stdlib_staging_path, paths, cargo_env, verbose + ) + + +def clone_and_checkout_rust_python( + paths: Paths, cargo_env: dict[str, str], verbose: bool +): + run_subprocess( + ["git", "clone", "https://github.com/RustPython/RustPython.git"], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) + + run_subprocess( + ["git", "checkout", "f12875027ce425297c07cbccb9be77514ed46157"], + cargo_env, + verbose, + cwd=f"{paths['global_kybra_version_dir']}/RustPython", + ) + + +def copy_rust_python_lib_global_to_staging(rust_python_global_path: str, paths: Paths): + shutil.copytree( + f"{rust_python_global_path}/Lib", + f"{paths['canister']}/Lib", + ) + + +def create_rust_python_stdlib_staging_directory(rust_python_stdlib_staging_path: str): + os.makedirs(rust_python_stdlib_staging_path) + + shutil.copy( + os.path.dirname(kybra.__file__) + "/compiler/LICENSE-RustPython", + f"{rust_python_stdlib_staging_path}/LICENSE-RustPython", + ) + + shutil.copy( + os.path.dirname(kybra.__file__) + "/compiler/python_3_10_13_licenses.pdf", + f"{rust_python_stdlib_staging_path}/python_3_10_13_licenses.pdf", + ) + + +def compile_and_write_rust_python_stdlib_to_staging( + rust_python_stdlib_staging_path: str, + paths: Paths, + cargo_env: dict[str, str], + verbose: bool, +): + run_subprocess( + [ + f"{paths['global_kybra_rust_bin_dir']}/cargo", + "run", + f"--manifest-path={paths['canister']}/kybra_compile_python_stdlib/Cargo.toml", + f"--package=kybra_compile_python_stdlib", + f"{rust_python_stdlib_staging_path}/stdlib", + ], + cargo_env, + verbose, + ) + + +def download_rust_python_stdlib( + rust_python_stdlib_global_path: str, + paths: Paths, + cargo_env: dict[str, str], + verbose: bool, +): + if not os.path.exists(rust_python_stdlib_global_path): + download_rust_python_stdlib_tar_gz(paths, cargo_env, verbose) + extract_and_decompress_rust_python_stdlib_tar_gz(paths, cargo_env, verbose) + + +def download_rust_python_stdlib_tar_gz( + paths: Paths, cargo_env: dict[str, str], verbose: bool +): + run_subprocess( + [ + "curl", + "-Lf", + f"https://github.com/demergent-labs/kybra/releases/download/{kybra.__version__}/rust_python_stdlib.tar.gz", + "-o", + "rust_python_stdlib.tar.gz", + ], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) + + +def copy_rust_python_stdlib_global_to_staging( + rust_python_stdlib_global_path: str, paths: Paths +): + shutil.copytree( + rust_python_stdlib_global_path, + f"{paths['canister']}/rust_python_stdlib", + ) + + +def extract_and_decompress_rust_python_stdlib_tar_gz( + paths: Paths, cargo_env: dict[str, str], verbose: bool +): + run_subprocess( + ["tar", "-xvf", "rust_python_stdlib.tar.gz"], + cargo_env, + verbose, + cwd=paths["global_kybra_version_dir"], + ) def compile_generated_rust_code( From 19fc2c9ac17bdce2c08a7f3afb5a8e19381cc24f Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 12:14:00 -0500 Subject: [PATCH 11/12] update Cargo.lock --- kybra/cargotoml.py | 1894 ++++++++++---------------------------------- 1 file changed, 428 insertions(+), 1466 deletions(-) diff --git a/kybra/cargotoml.py b/kybra/cargotoml.py index 3d47008a9..b6cf81142 100644 --- a/kybra/cargotoml.py +++ b/kybra/cargotoml.py @@ -72,16 +72,19 @@ def generate_cargo_lock() -> str: checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] -name = "adler" -version = "1.0.2" +name = "addr2line" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli", +] [[package]] -name = "adler32" -version = "1.2.0" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" @@ -96,13 +99,22 @@ def generate_cargo_lock() -> str: [[package]] name = "aho-corasick" -version = "1.0.2" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] +[[package]] +name = "annotate-snippets" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3b9d411ecbaf79885c6df4d75fff75858d5995ff25385657a28af47e82f9c36" +dependencies = [ + "unicode-width", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -114,21 +126,9 @@ def generate_cargo_lock() -> str: [[package]] name = "anyhow" -version = "1.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" - -[[package]] -name = "arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" - -[[package]] -name = "arrayvec" -version = "0.5.2" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" [[package]] name = "ascii" @@ -145,23 +145,6 @@ def generate_cargo_lock() -> str: "term", ] -[[package]] -name = "async-recursion" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - -[[package]] -name = "atomic" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" - [[package]] name = "atty" version = "0.2.14" @@ -180,38 +163,27 @@ def generate_cargo_lock() -> str: checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" - -[[package]] -name = "binread" -version = "2.2.0" +name = "backtrace" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16598dfc8e6578e9b597d9910ba2e73618385dc9f4b1d43dd92c349d6be6418f" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ - "binread_derive", - "lazy_static", - "rustversion", + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", ] [[package]] -name = "binread_derive" -version = "2.1.0" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9672209df1714ee804b1f4d4f68c8eb2a90b1f7a07acf472f88ce198ef1fed" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "either", - "proc-macro2", - "quote", - "syn 1.0.109", + "serde", ] [[package]] @@ -237,27 +209,9 @@ def generate_cargo_lock() -> str: [[package]] name = "bitflags" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bstr" @@ -267,115 +221,14 @@ def generate_cargo_lock() -> str: dependencies = [ "lazy_static", "memchr", - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "bumpalo" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "candid" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244005a1917bb7614cd775ca8a5d59efeb5ac74397bb14ba29a19347ebd78591" -dependencies = [ - "anyhow", - "binread", - "byteorder", - "candid_derive 0.5.0", - "codespan-reporting", - "crc32fast", - "data-encoding", - "hex", - "lalrpop 0.19.12", - "lalrpop-util 0.19.12", - "leb128", - "logos 0.12.1", - "num-bigint", - "num-traits", - "num_enum", - "paste", - "pretty 0.10.0", - "serde", - "serde_bytes", - "sha2", - "thiserror", -] - -[[package]] -name = "candid" -version = "0.10.6" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965e86b1bd1c0c26df70cf0c92ae16c56204ab402eb915c26a541cf949d841cf" -dependencies = [ - "anyhow", - "binread", - "byteorder", - "candid_derive 0.6.6", - "hex", - "ic_principal", - "leb128", - "num-bigint", - "num-traits", - "paste", - "pretty 0.12.3", - "serde", - "serde_bytes", - "stacker", - "thiserror", -] - -[[package]] -name = "candid_derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f1f4db7c7d04b87b70b3a35c5dc5c2c9dd73cef8bdf6760e2f18a0d45350dd" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "candid_derive" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de398570c386726e7a59d9887b68763c481477f9a043fb998a2e09d428df1a9" -dependencies = [ - "lazy_static", - "proc-macro2", - "quote", - "syn 2.0.18", -] - -[[package]] -name = "candid_parser" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a3da76f989cd350b7342c64c6c6008341bb6186f6832ef04e56dc50ba0fd76" -dependencies = [ - "anyhow", - "candid 0.10.6", - "codespan-reporting", - "convert_case", - "hex", - "lalrpop 0.20.2", - "lalrpop-util 0.20.2", - "logos 0.13.0", - "num-bigint", - "pretty 0.12.3", - "thiserror", -] +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "caseless" @@ -396,7 +249,7 @@ def generate_cargo_lock() -> str: [[package]] name = "cdk_framework" version = "0.0.0" -source = "git+https://github.com/demergent-labs/cdk_framework?rev=b006618358f455e4a378552cfe821c934eb2fd3d#b006618358f455e4a378552cfe821c934eb2fd3d" +source = "git+https://github.com/demergent-labs/cdk_framework?rev=86b5acf42f2eba83728328b64112f446a3f8f4cb#86b5acf42f2eba83728328b64112f446a3f8f4cb" dependencies = [ "proc-macro2", "quote", @@ -422,33 +275,6 @@ def generate_cargo_lock() -> str: "winapi", ] -[[package]] -name = "ciborium" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" - -[[package]] -name = "ciborium-ll" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" -dependencies = [ - "ciborium-io", - "half", -] - [[package]] name = "clap" version = "2.34.0" @@ -475,67 +301,11 @@ def generate_cargo_lock() -> str: "winapi", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -543,48 +313,12 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - [[package]] name = "diff" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", - "subtle", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -606,29 +340,11 @@ def generate_cargo_lock() -> str: "winapi", ] -[[package]] -name = "dns-lookup" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53ecafc952c4528d9b51a458d1a8904b81783feff9fde08ab6ed2545ff396872" -dependencies = [ - "cfg-if", - "libc", - "socket2", - "winapi", -] - -[[package]] -name = "dyn-clone" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" - [[package]] name = "either" -version = "1.8.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "ena" @@ -657,24 +373,19 @@ def generate_cargo_lock() -> str: ] [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -710,157 +421,23 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "flate2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "function_name" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7" -dependencies = [ - "function_name-proc-macro", -] - -[[package]] -name = "function_name-proc-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333" - -[[package]] -name = "futures" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gimli" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + [[package]] name = "glob" version = "0.3.1" @@ -869,9 +446,9 @@ def generate_cargo_lock() -> str: [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" @@ -879,6 +456,12 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + [[package]] name = "heck" version = "0.4.1" @@ -896,18 +479,9 @@ def generate_cargo_lock() -> str: [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -922,161 +496,23 @@ def generate_cargo_lock() -> str: checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] -name = "ic-cdk" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9beb0bf1dcd0639c313630e34aa547a2b19450ddf1969c176e13225ef3b29048" -dependencies = [ - "candid 0.8.4", - "ic-cdk-macros 0.6.10", - "ic0 0.18.10", - "serde", - "serde_bytes", -] - -[[package]] -name = "ic-cdk" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3d204af0b11c45715169c997858edb58fa8407d08f4fae78a6b415dd39a362" -dependencies = [ - "candid 0.10.6", - "ic-cdk-macros 0.8.4", - "ic0 0.21.1", - "serde", - "serde_bytes", -] - -[[package]] -name = "ic-cdk" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63a6fceb94127bda86bd6d05f859a0e2a67d128a8ffb5ddab17e1f15ac8f555" -dependencies = [ - "candid 0.10.6", - "ic-cdk-macros 0.9.0", - "ic0 0.21.1", - "serde", - "serde_bytes", -] - -[[package]] -name = "ic-cdk-macros" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf50458685a0fc6b0e414cdba487610aeb199ac94db52d9fd76270565debee7" -dependencies = [ - "candid 0.8.4", - "proc-macro2", - "quote", - "serde", - "serde_tokenstream", - "syn 1.0.109", -] - -[[package]] -name = "ic-cdk-macros" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a618e4020cea88e933d8d2f8c7f86d570ec06213506a80d4f2c520a9bba512" -dependencies = [ - "candid 0.10.6", - "proc-macro2", - "quote", - "serde", - "serde_tokenstream", - "syn 1.0.109", -] - -[[package]] -name = "ic-cdk-macros" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fde5ca6ef1e69825c68916ff1bf7256b8f7ed69ac5ea3f1756f6e57f1503e27" -dependencies = [ - "candid 0.10.6", - "proc-macro2", - "quote", - "serde", - "serde_tokenstream", - "syn 1.0.109", -] - -[[package]] -name = "ic-cdk-timers" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054727a3a1c486528b96349817d54290ff70df6addf417def456ea708a16f7fb" -dependencies = [ - "futures", - "ic-cdk 0.13.1", - "ic0 0.21.1", - "serde", - "serde_bytes", - "slotmap", -] - -[[package]] -name = "ic-stable-structures" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4e026318236de13568edafd85534ad29910908bf08cdcf177d4403fd4a5f6c4" - -[[package]] -name = "ic-stable-structures" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a314297eb9edb4bbcc2e04d2e634e38d5900b68eadae661e927946d1aba3f9f7" -dependencies = [ - "ic_principal", -] - -[[package]] -name = "ic-wasi-polyfill" -version = "0.3.14" -source = "git+https://github.com/wasm-forge/ic-wasi-polyfill?rev=2d2edb382816e12da9bc81b786b7cd1a00d36735#2d2edb382816e12da9bc81b786b7cd1a00d36735" -dependencies = [ - "function_name", - "ic-cdk 0.12.1", - "ic-stable-structures 0.6.3", - "rand", - "stable-fs", -] - -[[package]] -name = "ic0" -version = "0.18.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187fa0cecf46628330b7a390a1a65fb0637ea00d3a1121aa847ecbebc0f3ff79" - -[[package]] -name = "ic0" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a54b5297861c651551676e8c43df805dad175cc33bc97dbd992edbbb85dcbcdf" - -[[package]] -name = "ic_principal" -version = "0.1.1" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1762deb6f7c8d8c2bdee4b6c5a47b60195b74e9b5280faa5ba29692f8e17429c" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "arbitrary", - "crc32fast", - "data-encoding", - "serde", - "sha2", - "thiserror", + "autocfg", + "hashbrown 0.12.3", ] [[package]] name = "indexmap" -version = "1.9.3" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ - "autocfg", - "hashbrown", + "equivalent", + "hashbrown 0.14.3", ] [[package]] @@ -1085,7 +521,7 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -1100,19 +536,18 @@ def generate_cargo_lock() -> str: "pmutil", "proc-macro2", "quote", - "syn 1.0.109", + "syn 1.0.99", ] [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.48.0", + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", ] [[package]] @@ -1125,107 +560,76 @@ def generate_cargo_lock() -> str: ] [[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +name = "kybra-vm-value-derive" +version = "0.0.0" dependencies = [ - "either", + "cdk_framework", + "proc-macro2", + "quote", + "syn 1.0.99", ] [[package]] -name = "keccak" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +name = "kybra_compile_python_stdlib" +version = "0.0.0" dependencies = [ - "cpufeatures", + "rustpython", + "rustpython-vm", ] [[package]] -name = "kybra-vm-value-derive" +name = "kybra_generate" version = "0.0.0" dependencies = [ + "annotate-snippets", + "backtrace", "cdk_framework", + "num-bigint", "proc-macro2", "quote", - "syn 1.0.109", + "regex", + "rustpython-parser 0.1.2", + "syn 1.0.99", ] [[package]] name = "lalrpop" -version = "0.19.12" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" +checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" dependencies = [ "ascii-canvas", "bit-set", "diff", "ena", "is-terminal", - "itertools 0.10.5", - "lalrpop-util 0.19.12", - "petgraph", - "regex", - "regex-syntax 0.6.29", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools 0.11.0", - "lalrpop-util 0.20.2", + "itertools", + "lalrpop-util", "petgraph", "pico-args", "regex", - "regex-syntax 0.8.3", + "regex-syntax", "string_cache", "term", "tiny-keccak", "unicode-xid", - "walkdir", ] [[package]] name = "lalrpop-util" -version = "0.19.12" +version = "0.19.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" +checksum = "3d3b45d694c8074f77bc24fc26e47633c862a9cd3b48dd51209c02ba4c434d68" dependencies = [ "regex", ] -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata 0.4.6", -] - [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - [[package]] name = "lexical-parse-float" version = "0.8.5" @@ -1258,19 +662,18 @@ def generate_cargo_lock() -> str: [[package]] name = "libc" -version = "0.2.146" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] -name = "libsqlite3-sys" -version = "0.25.2" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "cc", - "pkg-config", - "vcpkg", + "bitflags 2.5.0", + "libc", ] [[package]] @@ -1281,9 +684,9 @@ def generate_cargo_lock() -> str: [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1291,63 +694,11 @@ def generate_cargo_lock() -> str: [[package]] name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "logos" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf8b031682c67a8e3d5446840f9573eb7fe26efe7ec8d195c9ac4c0647c502f1" -dependencies = [ - "logos-derive 0.12.1", -] - -[[package]] -name = "logos" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c000ca4d908ff18ac99b93a062cb8958d331c3220719c52e77cb19cc6ac5d2c1" -dependencies = [ - "logos-derive 0.13.0", -] - -[[package]] -name = "logos-codegen" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc487311295e0002e452025d6b580b77bb17286de87b57138f3b5db711cded68" -dependencies = [ - "beef", - "fnv", - "proc-macro2", - "quote", - "regex-syntax 0.6.29", - "syn 2.0.18", -] - -[[package]] -name = "logos-derive" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d849148dbaf9661a6151d1ca82b13bb4c4c128146a88d05253b38d4e2f496c" -dependencies = [ - "beef", - "fnv", - "proc-macro2", - "quote", - "regex-syntax 0.6.29", - "syn 1.0.109", -] - -[[package]] -name = "logos-derive" -version = "0.13.0" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfc0d229f1f42d790440136d941afd806bc9e949e2bcb8faa813b0f00d1267e" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "logos-codegen", + "cfg-if", ] [[package]] @@ -1359,16 +710,6 @@ def generate_cargo_lock() -> str: "twox-hash", ] -[[package]] -name = "mac_address" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4863ee94f19ed315bf3bc00299338d857d4b5bc856af375cc97d237382ad3856" -dependencies = [ - "nix 0.23.2", - "winapi", -] - [[package]] name = "maplit" version = "1.0.2" @@ -1381,29 +722,11 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -[[package]] -name = "md-5" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" -dependencies = [ - "digest", -] - [[package]] name = "memchr" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" - -[[package]] -name = "memmap2" -version = "0.5.10" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" @@ -1425,27 +748,18 @@ def generate_cargo_lock() -> str: [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" dependencies = [ "adler", ] -[[package]] -name = "mt19937" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ca7f22ed370d5991a9caec16a83187e865bc8a532f889670337d5a5689e3a1" -dependencies = [ - "rand_core", -] - [[package]] name = "new_debug_unreachable" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nibble_vec" @@ -1458,35 +772,22 @@ def generate_cargo_lock() -> str: [[package]] name = "nix" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", - "static_assertions", ] [[package]] name = "num-bigint" version = "0.4.3" -source = "git+https://github.com/rust-num/num-bigint#6f2b8e0fc218dbd0f49bebb8db2d1a771fe6bafa" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg", "num-integer", @@ -1496,11 +797,12 @@ def generate_cargo_lock() -> str: [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" dependencies = [ "num-traits", + "serde", ] [[package]] @@ -1536,11 +838,11 @@ def generate_cargo_lock() -> str: [[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.9", "libc", ] @@ -1562,14 +864,23 @@ def generate_cargo_lock() -> str: "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 1.0.99", +] + +[[package]] +name = "object" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +dependencies = [ + "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "optional" @@ -1577,16 +888,6 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978aa494585d3ca4ad74929863093e87cac9790d81fe7aba2b3dc2890643a0fc" -[[package]] -name = "page_size" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -1599,59 +900,88 @@ def generate_cargo_lock() -> str: [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "petgraph" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.2.6", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", ] [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" dependencies = [ - "phf_shared 0.11.1", + "phf_generator 0.10.0", + "phf_shared 0.10.0", ] [[package]] name = "phf_codegen" -version = "0.11.1" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ - "phf_generator", - "phf_shared 0.11.1", + "phf_shared 0.10.0", + "rand", ] [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared 0.11.1", + "phf_shared 0.11.2", "rand", ] @@ -1666,24 +996,18 @@ def generate_cargo_lock() -> str: [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", ] [[package]] name = "pico-args" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" - -[[package]] -name = "pin-project-lite" -version = "0.2.9" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pin-utils" @@ -1691,12 +1015,6 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - [[package]] name = "pmutil" version = "0.5.3" @@ -1705,36 +1023,14 @@ def generate_cargo_lock() -> str: dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 1.0.99", ] [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "pre_and_post_upgrade" -version = "0.0.0" -dependencies = [ - "async-recursion", - "candid 0.10.6", - "candid_parser", - "ic-cdk 0.13.1", - "ic-cdk-macros 0.9.0", - "ic-cdk-timers", - "ic-stable-structures 0.5.4", - "ic-wasi-polyfill", - "kybra-vm-value-derive", - "rustpython", - "rustpython-compiler-core", - "rustpython-derive", - "rustpython-stdlib", - "rustpython-vm", - "serde", - "slotmap", -] +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "precomputed-hash" @@ -1742,27 +1038,6 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -[[package]] -name = "pretty" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9940b913ee56ddd94aec2d3cd179dd47068236f42a1a6415ccf9d880ce2a61" -dependencies = [ - "arrayvec", - "typed-arena", -] - -[[package]] -name = "pretty" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55c4d17d994b637e2f4daf6e5dc5d660d209d5642377d675d7a1c3ab69fa579" -dependencies = [ - "arrayvec", - "typed-arena", - "unicode-width", -] - [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -1775,33 +1050,18 @@ def generate_cargo_lock() -> str: [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] -[[package]] -name = "psm" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" -dependencies = [ - "cc", -] - -[[package]] -name = "puruspe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7e158a385023d209d6d5f2585c4b468f6dcb3dd5aca9b75c4f1678c05bb375" - [[package]] name = "quote" -version = "1.0.28" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -1854,42 +1114,33 @@ def generate_cargo_lock() -> str: [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.8.4" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-syntax", ] [[package]] @@ -1898,34 +1149,11 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -[[package]] -name = "regex-automata" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.3", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" - [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "result-like" @@ -1945,10 +1173,16 @@ def generate_cargo_lock() -> str: "pmutil", "proc-macro2", "quote", - "syn 1.0.109", + "syn 1.0.99", "syn-ext", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -1966,9 +1200,9 @@ def generate_cargo_lock() -> str: [[package]] name = "rustix" -version = "0.37.20" +version = "0.37.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" dependencies = [ "bitflags 1.3.2", "errno", @@ -1991,13 +1225,20 @@ def generate_cargo_lock() -> str: "libc", "log", "rustpython-compiler", - "rustpython-parser", - "rustpython-pylib", - "rustpython-stdlib", + "rustpython-parser 0.2.0", "rustpython-vm", "rustyline", ] +[[package]] +name = "rustpython-ast" +version = "0.1.0" +source = "git+https://github.com/demergent-labs/RustPython?branch=kybra_initial#7527234365da52f5f4bca11ac84d403627ca6338" +dependencies = [ + "num-bigint", + "rustpython-compiler-core 0.1.2", +] + [[package]] name = "rustpython-ast" version = "0.2.0" @@ -2005,7 +1246,7 @@ def generate_cargo_lock() -> str: dependencies = [ "num-bigint", "rustpython-common", - "rustpython-compiler-core", + "rustpython-compiler-core 0.2.0", ] [[package]] @@ -2015,13 +1256,13 @@ def generate_cargo_lock() -> str: dependencies = [ "ahash", "bitflags 1.3.2", - "indexmap", - "itertools 0.10.5", + "indexmap 1.9.3", + "itertools", "log", "num-complex", "num-traits", - "rustpython-ast", - "rustpython-compiler-core", + "rustpython-ast 0.2.0", + "rustpython-compiler-core 0.2.0", ] [[package]] @@ -2034,7 +1275,7 @@ def generate_cargo_lock() -> str: "bstr", "cfg-if", "hexf-parse", - "itertools 0.10.5", + "itertools", "lexical-parse-float", "libc", "lock_api", @@ -2056,8 +1297,25 @@ def generate_cargo_lock() -> str: source = "git+https://github.com/demergent-labs/RustPython?rev=b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874#b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874" dependencies = [ "rustpython-codegen", - "rustpython-compiler-core", - "rustpython-parser", + "rustpython-compiler-core 0.2.0", + "rustpython-parser 0.2.0", +] + +[[package]] +name = "rustpython-compiler-core" +version = "0.1.2" +source = "git+https://github.com/demergent-labs/RustPython?branch=kybra_initial#7527234365da52f5f4bca11ac84d403627ca6338" +dependencies = [ + "bincode", + "bitflags 1.3.2", + "bstr", + "itertools", + "lz4_flex", + "num-bigint", + "num-complex", + "serde", + "static_assertions", + "thiserror", ] [[package]] @@ -2067,7 +1325,7 @@ def generate_cargo_lock() -> str: dependencies = [ "bitflags 1.3.2", "bstr", - "itertools 0.10.5", + "itertools", "lz4_flex", "num-bigint", "num-complex", @@ -2080,7 +1338,7 @@ def generate_cargo_lock() -> str: dependencies = [ "rustpython-compiler", "rustpython-derive-impl", - "syn 1.0.109", + "syn 1.0.99", ] [[package]] @@ -2088,126 +1346,72 @@ def generate_cargo_lock() -> str: version = "0.2.0" source = "git+https://github.com/demergent-labs/RustPython?rev=b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874#b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874" dependencies = [ - "indexmap", - "itertools 0.10.5", + "indexmap 1.9.3", + "itertools", "maplit", "once_cell", "proc-macro2", "quote", - "rustpython-compiler-core", + "rustpython-compiler-core 0.2.0", "rustpython-doc", - "syn 1.0.109", + "syn 1.0.99", "syn-ext", "textwrap 0.15.2", ] [[package]] name = "rustpython-doc" -version = "0.1.0" -source = "git+https://github.com/RustPython/__doc__?branch=main#d927debd491e4c45b88e953e6e50e4718e0f2965" +version = "0.3.0" +source = "git+https://github.com/RustPython/__doc__?branch=main#8b62ce5d796d68a091969c9fa5406276cb483f79" dependencies = [ "once_cell", ] [[package]] name = "rustpython-parser" -version = "0.2.0" -source = "git+https://github.com/demergent-labs/RustPython?rev=b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874#b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874" +version = "0.1.2" +source = "git+https://github.com/demergent-labs/RustPython?branch=kybra_initial#7527234365da52f5f4bca11ac84d403627ca6338" dependencies = [ "ahash", "anyhow", - "itertools 0.10.5", - "lalrpop 0.19.12", - "lalrpop-util 0.19.12", + "itertools", + "lalrpop-util", "log", "num-bigint", "num-traits", - "phf", - "phf_codegen", - "rustc-hash", - "rustpython-ast", - "rustpython-compiler-core", + "phf 0.10.1", + "phf_codegen 0.10.0", + "rustpython-ast 0.1.0", + "rustpython-compiler-core 0.1.2", + "thiserror", "tiny-keccak", "unic-emoji-char", "unic-ucd-ident", - "unicode_names2", -] - -[[package]] -name = "rustpython-pylib" -version = "0.2.0" -source = "git+https://github.com/demergent-labs/RustPython?rev=b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874#b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874" -dependencies = [ - "glob", - "rustpython-compiler-core", - "rustpython-derive", + "unicode_names2 0.5.1", ] [[package]] -name = "rustpython-stdlib" +name = "rustpython-parser" version = "0.2.0" source = "git+https://github.com/demergent-labs/RustPython?rev=b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874#b7b0a4994d7871bf1e21fedb6bd0f0e5639fa874" dependencies = [ - "adler32", "ahash", - "ascii", - "base64", - "blake2", - "cfg-if", - "crc32fast", - "crossbeam-utils", - "csv-core", - "digest", - "dns-lookup", - "dyn-clone", - "flate2", - "gethostname", - "hex", - "itertools 0.10.5", - "libc", - "libsqlite3-sys", - "mac_address", - "md-5", - "memchr", - "memmap2", - "mt19937", - "nix 0.26.2", + "anyhow", + "itertools", + "lalrpop", + "lalrpop-util", + "log", "num-bigint", - "num-complex", - "num-integer", - "num-rational", "num-traits", - "num_enum", - "once_cell", - "page_size", - "parking_lot", - "paste", - "puruspe", - "rand", - "rand_core", - "rustpython-common", - "rustpython-derive", - "rustpython-vm", - "schannel", - "sha-1", - "sha2", - "sha3", - "socket2", - "system-configuration", - "termios", - "ucd", - "unic-char-property", - "unic-normal", - "unic-ucd-age", - "unic-ucd-bidi", - "unic-ucd-category", + "phf 0.11.2", + "phf_codegen 0.11.2", + "rustc-hash", + "rustpython-ast 0.2.0", + "rustpython-compiler-core 0.2.0", + "tiny-keccak", + "unic-emoji-char", "unic-ucd-ident", - "unicode-casing", - "unicode_names2", - "uuid", - "widestring", - "winapi", - "xml-rs", + "unicode_names2 0.6.0", ] [[package]] @@ -2229,15 +1433,14 @@ def generate_cargo_lock() -> str: "glob", "half", "hex", - "ic-cdk 0.7.4", - "indexmap", + "indexmap 1.9.3", "is-macro", - "itertools 0.10.5", + "itertools", "libc", "log", "memchr", "memoffset 0.6.5", - "nix 0.26.2", + "nix", "num-bigint", "num-complex", "num-integer", @@ -2252,13 +1455,13 @@ def generate_cargo_lock() -> str: "rand", "result-like", "rustc_version", - "rustpython-ast", + "rustpython-ast 0.2.0", "rustpython-codegen", "rustpython-common", "rustpython-compiler", - "rustpython-compiler-core", + "rustpython-compiler-core 0.2.0", "rustpython-derive", - "rustpython-parser", + "rustpython-parser 0.2.0", "rustyline", "schannel", "sre-engine", @@ -2273,7 +1476,7 @@ def generate_cargo_lock() -> str: "unic-ucd-category", "unic-ucd-ident", "unicode-casing", - "unicode_names2", + "unicode_names2 0.6.0", "wasm-bindgen", "which", "widestring", @@ -2284,9 +1487,9 @@ def generate_cargo_lock() -> str: [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "rustyline" @@ -2302,7 +1505,7 @@ def generate_cargo_lock() -> str: "libc", "log", "memchr", - "nix 0.26.2", + "nix", "radix_trie", "scopeguard", "unicode-segmentation", @@ -2311,106 +1514,45 @@ def generate_cargo_lock() -> str: "winapi", ] -[[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 = "schannel" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.52.0", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] -[[package]] -name = "serde_bytes" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" -dependencies = [ - "serde", -] - [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", -] - -[[package]] -name = "serde_tokenstream" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "797ba1d80299b264f3aac68ab5d12e5825a561749db4df7cd7c8083900c5d4e9" -dependencies = [ - "proc-macro2", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "sha-1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest", - "keccak", + "syn 2.0.15", ] [[package]] @@ -2419,78 +1561,23 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "slotmap" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" -dependencies = [ - "version_check", -] - [[package]] name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.9" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "sre-engine" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a490c5c46c35dba9a6f5e7ee8e4d67e775eb2d2da0f115750b8d10e1c1ac2d28" +checksum = "1120e6a8cbd4d85d5532d2e8a245aef2128e1853981f8b6d9943264184843102" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "num_enum", "optional", ] -[[package]] -name = "stable-fs" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e88946666828308003420895ebdca375b0aa8e9b06503cb366aedb4cc0020a" -dependencies = [ - "bitflags 2.3.2", - "ciborium", - "ic-cdk 0.12.1", - "ic-stable-structures 0.6.3", - "serde", - "serde_bytes", -] - -[[package]] -name = "stacker" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" -dependencies = [ - "cc", - "cfg-if", - "libc", - "psm", - "winapi", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -2538,20 +1625,14 @@ def generate_cargo_lock() -> str: "proc-macro2", "quote", "rustversion", - "syn 1.0.109", + "syn 1.0.99", ] -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - [[package]] name = "syn" -version = "1.0.109" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -2560,9 +1641,9 @@ def generate_cargo_lock() -> str: [[package]] name = "syn" -version = "2.0.18" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", @@ -2575,28 +1656,7 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b86cb2b68c5b3c078cac02588bc23f3c04bb828c5d3aedd17980876ec6a7be6" dependencies = [ - "syn 1.0.109", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "syn 1.0.99", ] [[package]] @@ -2612,22 +1672,13 @@ def generate_cargo_lock() -> str: [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] -[[package]] -name = "termios" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" -dependencies = [ - "libc", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -2660,14 +1711,14 @@ def generate_cargo_lock() -> str: dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.15", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -2686,9 +1737,9 @@ def generate_cargo_lock() -> str: [[package]] name = "timsort" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb4fa83bb73adf1c7219f4fe4bf3c0ac5635e4e51e070fad5df745a41bedfb8" +checksum = "639ce8ef6d2ba56be0383a94dd13b92138d58de44c62618303bb798fa92bdc00" [[package]] name = "tiny-keccak" @@ -2716,17 +1767,17 @@ def generate_cargo_lock() -> str: [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.2.6", "toml_datetime", "winnow", ] @@ -2741,24 +1792,6 @@ def generate_cargo_lock() -> str: "static_assertions", ] -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4fa6e588762366f1eb4991ce59ad1b93651d0b769dfb4e4d1c5c4b943d1159" - [[package]] name = "uname" version = "0.1.1" @@ -2800,26 +1833,6 @@ def generate_cargo_lock() -> str: "unic-ucd-version", ] -[[package]] -name = "unic-normal" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09d64d33589a94628bc2aeb037f35c2e25f3f049c7348b5aa5580b48e6bba62" -dependencies = [ - "unic-ucd-normal", -] - -[[package]] -name = "unic-ucd-age" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8cfdfe71af46b871dc6af2c24fcd360e2f3392ee4c5111877f2947f311671c" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - [[package]] name = "unic-ucd-bidi" version = "0.9.0" @@ -2843,15 +1856,6 @@ def generate_cargo_lock() -> str: "unic-ucd-version", ] -[[package]] -name = "unic-ucd-hangul" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1dc690e19010e1523edb9713224cba5ef55b54894fe33424439ec9a40c0054" -dependencies = [ - "unic-ucd-version", -] - [[package]] name = "unic-ucd-ident" version = "0.9.0" @@ -2863,18 +1867,6 @@ def generate_cargo_lock() -> str: "unic-ucd-version", ] -[[package]] -name = "unic-ucd-normal" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86aed873b8202d22b13859dda5fe7c001d271412c31d411fd9b827e030569410" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-hangul", - "unic-ucd-version", -] - [[package]] name = "unic-ucd-version" version = "0.9.0" @@ -2892,24 +1884,24 @@ def generate_cargo_lock() -> str: [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" @@ -2923,12 +1915,18 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "unicode_names2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029df4cc8238cefc911704ff8fa210853a0f3bce2694d8f51181dd41ee0f3301" + [[package]] name = "unicode_names2" version = "0.6.0" source = "git+https://github.com/youknowone/unicode_names2.git?rev=4ce16aa85cbcdd9cc830410f1a72ef9a235f2fde#4ce16aa85cbcdd9cc830410f1a72ef9a235f2fde" dependencies = [ - "phf", + "phf 0.11.2", ] [[package]] @@ -2937,35 +1935,6 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" -[[package]] -name = "uuid" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" -dependencies = [ - "atomic", - "getrandom", - "rand", - "uuid-macro-internal", -] - -[[package]] -name = "uuid-macro-internal" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8500be15217da76379f13cfb1a9e351ccc2b0959c7bc8ea64ac4302ba4de4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "vec_map" version = "0.8.2" @@ -2984,16 +1953,6 @@ def generate_cargo_lock() -> str: source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8e76fae08f03f96e166d2dfda232190638c10e0383841252416f9cfe2ae60e6" -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "wasi" version = "0.10.0+wasi-snapshot-preview1" @@ -3008,9 +1967,9 @@ def generate_cargo_lock() -> str: [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3018,24 +1977,24 @@ def generate_cargo_lock() -> str: [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.15", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3043,22 +2002,22 @@ def generate_cargo_lock() -> str: [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.15", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "which" @@ -3095,9 +2054,9 @@ def generate_cargo_lock() -> str: [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -3123,54 +2082,63 @@ def generate_cargo_lock() -> str: [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.48.5", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.4", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -3180,15 +2148,15 @@ def generate_cargo_lock() -> str: [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -3198,15 +2166,15 @@ def generate_cargo_lock() -> str: [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -3216,15 +2184,15 @@ def generate_cargo_lock() -> str: [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -3234,27 +2202,27 @@ def generate_cargo_lock() -> str: [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -3264,21 +2232,21 @@ def generate_cargo_lock() -> str: [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" -version = "0.4.7" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] @@ -3291,10 +2259,4 @@ def generate_cargo_lock() -> str: dependencies = [ "winapi", ] - -[[package]] -name = "xml-rs" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c" """ From ba59d4b8ae8fca3a20d9b4e8719ac2efd2317c5a Mon Sep 17 00:00:00 2001 From: Jordan Last Date: Fri, 12 Apr 2024 15:16:08 -0500 Subject: [PATCH 12/12] remove comment --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e81c3cdc..453b46b4c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -149,7 +149,6 @@ jobs: env: ETHEREUM_URL: ${{ secrets.ETHEREUM_URL }} KYBRA_COMPILE_RUST_PYTHON_STDLIB: ${{ matrix.kybra_source == 'repo' }} - KYBRA_VERBOSE: true # TODO should we remove this or keep this? strategy: fail-fast: false # We want to see which example tests succeed and which ones fail, we don't want one example test to cancel the rest matrix: