Skip to main content

High-performance PowerShell bridge (C++ pybind11 backend)

Project description

virtualshell

High-performance PowerShell automation for Python. virtualshell keeps a single PowerShell host warm and exposes it through a thin Python wrapper backed by a C++ engine. The result: millisecond-scale latency, async execution, and session persistence without juggling subprocesses.

Full documentation now lives in the project wiki. This README gives you the essentials and quick links.


Why virtualshell?

  • Persistent session – reuse modules, $env:*, and functions between calls.
  • Low latency – avoid the 200+ ms penalty of subprocess.run("pwsh"); most commands settle in ~2-4 ms.
  • Async + batching – schedule commands concurrently or in batches with strong timeout control.
  • Structured results – every invocation returns stdout/stderr, exit code, success flag, and timing.
  • Predictable failures – typed Python exceptions for “pwsh missing”, timeouts, and execution errors.

Typical users embed PowerShell inside Python orchestration, long-running agents, or test suites that need reliability and speed.


Installation

pip install virtualshell

Pre-built wheels are published for Windows, Linux (x86_64/aarch64), and macOS universal2. PowerShell (pwsh or powershell.exe) must be discoverable on PATH unless you pass an explicit path.


Quick start

from virtualshell import Shell

with Shell(timeout_seconds=5) as sh:
    result = sh.run("Write-Output 'Hello from pwsh'")
    print(result.out.strip())

    sh.run("function Inc { $global:i++; $global:i }")
    print(sh.run("Inc").out.strip())  # 1
    print(sh.run("Inc").out.strip())  # 2

Async execution

from virtualshell import Shell
import asyncio

async def main():
    shell = Shell().start()
    fut = shell.run_async("Get-Date")
    res = await asyncio.wrap_future(fut)
    print(res.out.strip())
    shell.stop()

asyncio.run(main())

Scripts and arguments

from pathlib import Path
from virtualshell import Shell

shell = Shell().start()

# Positional arguments
shell.script(Path("./scripts/test.ps1"), args=["alpha", "42"])

# Named arguments (hashtable splatting)
shell.script(
    Path("./scripts/test.ps1"),
    args={"Name": "Alice", "Count": "3"},
)

shell.stop()

Every API surface (sync/async/script) accepts timeout overrides and optional error raising via raise_on_error or callbacks.


Core API overview

Method Purpose
Shell.run(cmd, *, timeout=None, raise_on_error=False) Execute a single command synchronously.
Shell.run_async(cmd, *, callback=None, timeout=None) Schedule a command; returns a concurrent.futures.Future.
Shell.script(path, args=None, *, timeout=None, dot_source=False, raise_on_error=False) Execute .ps1 files with positional or named arguments.
Shell.script_async(...) Async counterpart of script.
Shell.save_session() Persist the current session to an XML snapshot.
Shell.pwsh(text) Safely echo a literal PowerShell string (auto quoting).

More helpers live in the wiki, including session restore, batching, and diagnostic tips.


Configuration

from virtualshell import Shell

shell = Shell(
    powershell_path=r"C:\Program Files\PowerShell\7\pwsh.exe",
    working_directory=r"C:\automation",
    environment={"MY_FLAG": "1"},
    initial_commands=[
        "$ErrorActionPreference = 'Stop'",
        "$ProgressPreference = 'SilentlyContinue'",
    ],
    timeout_seconds=10,
    auto_restart_on_timeout=True,
)

shell.start()

Configuration is applied before the process starts. You can inspect or replace it later with shell._core.get_config() or rebuild the shell.


Error handling

from virtualshell import Shell
from virtualshell.errors import ExecutionError, ExecutionTimeoutError

shell = Shell().start()

try:
    shell.run("throw 'boom'", raise_on_error=True)
except ExecutionTimeoutError:
    print("Timed out")
except ExecutionError as exc:
    print("PowerShell failure:", exc)
finally:
    shell.stop()

Refer to virtualshell.errors for all exception types.


Performance

Up-to-date benchmark artefacts (bench.json, bench.csv) and analysis live in docs/wiki/Project/Benchmarks.md. Headline numbers from the latest run (Windows 11, Python 3.13):

  • Sequential commands: ~3.5 ms average
  • Batch commands: ~3.2 ms per command
  • Async latency: ~1.9–2.4 ms with 50 outstanding tasks
  • Session save: ~0.30 s median

See the wiki for charts and methodology.


Building from source

Dependencies:

  • Python 3.8+
  • CMake 3.20+
  • A C++17 compiler (MSVC, Clang, or GCC)
  • scikit-build-core, pybind11
python -m pip install -U build
python -m build
python -m pip install dist/virtualshell-*.whl

Learn more

Bug reports and feature requests are welcome via issues or discussions.


Licensed under the Apache 2.0 license. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

virtualshell-1.1.0.tar.gz (71.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

virtualshell-1.1.0-cp313-cp313-win_amd64.whl (222.2 kB view details)

Uploaded CPython 3.13Windows x86-64

virtualshell-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (313.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (280.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp313-cp313-macosx_11_0_universal2.whl (376.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ universal2 (ARM64, x86-64)

virtualshell-1.1.0-cp312-cp312-win_amd64.whl (222.3 kB view details)

Uploaded CPython 3.12Windows x86-64

virtualshell-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (313.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (280.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp312-cp312-macosx_11_0_universal2.whl (376.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ universal2 (ARM64, x86-64)

virtualshell-1.1.0-cp311-cp311-win_amd64.whl (221.0 kB view details)

Uploaded CPython 3.11Windows x86-64

virtualshell-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (312.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (280.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp311-cp311-macosx_11_0_universal2.whl (374.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

virtualshell-1.1.0-cp310-cp310-win_amd64.whl (220.2 kB view details)

Uploaded CPython 3.10Windows x86-64

virtualshell-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (311.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (278.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp310-cp310-macosx_11_0_universal2.whl (371.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

virtualshell-1.1.0-cp39-cp39-win_amd64.whl (226.9 kB view details)

Uploaded CPython 3.9Windows x86-64

virtualshell-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (311.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (279.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp39-cp39-macosx_11_0_universal2.whl (371.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ universal2 (ARM64, x86-64)

virtualshell-1.1.0-cp38-cp38-win_amd64.whl (219.9 kB view details)

Uploaded CPython 3.8Windows x86-64

virtualshell-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (310.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

virtualshell-1.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (278.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

virtualshell-1.1.0-cp38-cp38-macosx_11_0_universal2.whl (370.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file virtualshell-1.1.0.tar.gz.

File metadata

  • Download URL: virtualshell-1.1.0.tar.gz
  • Upload date:
  • Size: 71.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for virtualshell-1.1.0.tar.gz
Algorithm Hash digest
SHA256 34db421e3492a482243ff6700b7a2b11948aead4b66aaebbf9244407613f1e3c
MD5 765edbefff5e0b8902aab104361d5f76
BLAKE2b-256 40aee4d34ea80f8c51594275a19f834e89cb9b8dc902b2ebb6906ae7f1985226

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3f4f2c7beb1be6245f4160a9572a49fce2ea0759fb3068c7cf53c69498bdbc01
MD5 f8fd3e82f2cf88ab65cf850392a153b1
BLAKE2b-256 017a48d10361511a50275d36bd4f35059df91d6d7372a31d9526541aaee01fbe

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20e4bc381ef750d506538ff8e803e3d6ef5f3e3e27de8532c36f17505c855442
MD5 155aeeedd4a05405af104dcc69892e8b
BLAKE2b-256 30dc94e09c8560a43eed278e26b668606c1c7f8e7e493b190473531be395d849

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 79be8a08acb97067aa16c2eb8c83ea9661dec484cfd2f3f1de37ac5374116a7b
MD5 ba7b3361d5a00ab86df11d0f3aac33a3
BLAKE2b-256 bc0930832a7029536ea2ce88189b362e47d4110fe46c0143047758fccba8a1a3

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 237cac9db6993240b3e243a6f6aa17544b98f8ee86d94cc2a81ac557f5b3eac0
MD5 809e4f5dea1dcc9e54528bb20429868a
BLAKE2b-256 2b1b8cf319bae1a5169be69692da7ee28b5e8ba032175f6c424c8f0b3cfa074e

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1d754c626e94660e4ab528b7da82058b8eaabbc0f69dabee503c30bfd410137b
MD5 76554302e489de51b1509734933e6184
BLAKE2b-256 dc1b563bbf1270799db408f9e556fe4af05ec7e09e341240b4dd338b46e91602

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78929ac9ebd260cef7abfc01fe596f72f2e0368a33e300caae7f2783d52e4dbd
MD5 50bff99b86f57e88b1868148f8ad640f
BLAKE2b-256 25d52ec757cd31b2b084575752500123b9a5012166fb7ee49528e1bdf95b175d

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9a81be9f830ba0453c5e7064eb9c48f4e4e8673203f7eea19c28f04cf6348dd3
MD5 fe2102dff8f0bbf61535ab8efd4a59ec
BLAKE2b-256 0114aa4e1b657872df95f2bc00faa3699b44289bcd7a6b3115aa6022c269e76a

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 99b6ae421f2729606abee9fe7d1b362953aea3203cfa3b79917849c82aab6007
MD5 5d345cb8ecf90ac7d352d78998cf5092
BLAKE2b-256 40c45bf3de2db81d68c9db4e8dfa04d45a07f9dbd7388ac8b3b93b3842f4e7cf

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bf215ede27d6c32c75c36fe289ad4fbc105a5b4e2437ac6da4d5803d7ddc62bb
MD5 b4911f74287f3a11e759284ebb78b8ec
BLAKE2b-256 bc53db9bea29b5ff6709731b13b8982cb47e8cb48ce08a5e693c7835de65007e

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 051b6867b64651f63aa62d1ff5f3f454304802fa82b9bd1c144761bba51f3b30
MD5 0f4f0544444808fdf85acc046c9df562
BLAKE2b-256 e19f1e62db01548e24987ad3f6e7d884d1c2c39129bf0eeeffc85d8ce8305f7c

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7804f5134d08d1e46969ca6de5d279c8cc472e3fe5d391487ed510f5b54b469c
MD5 7e5ef8b0d9ff25a40c30c43258ce449b
BLAKE2b-256 f5fe0f9fed997e478345f80537989b03bedcbb9353e366e32c135c412ffa4c3e

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 13944757ab8e522a9ff5314ff315294300952d264ca4cd8fcd49321cc03fac29
MD5 a2915f249060f19018eb2ae2b564431a
BLAKE2b-256 f1971c80c36c1c5b30f2194d0a72364fe185a2723b71549d9e8a2163cc6deaea

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ccedaa3a8a8faa78c8de5c6f0e197c609e4f5a08010bc0d0d9285ccb12aff1af
MD5 eaacb7729d459e93f8d81f76cbbecb15
BLAKE2b-256 97a9f465041599b3331ef51766d28c813c75a88d7940a7d5fed981c1e2e9c427

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78eb79a8cf2bf2b7f029cdc36dcc268be15ae3009e0cfadcff0c82167c64ffec
MD5 1ed7c7b0195c1787ce0eb1b0ea3835eb
BLAKE2b-256 1db9a1e7d62875d277024667adf720f96225054fa55129692a4ab37095513652

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bc78eb7d329f0c5cd0b72b649629c76dbcc3fa77e5edb665b989d382b00cc42a
MD5 61ff29cdca96d558db775810f4f72f63
BLAKE2b-256 548595658bb474db4e3ed4b945546f94892445b74ac01e32f478fabe48c16bcd

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 95981188e2aeabbe9ffb9d18843c8e4e1f06f45be7cddb265cbd5ab6826acc46
MD5 21300da4719d21d61192ffdf5aeb7123
BLAKE2b-256 3c0507be1f2b3071d7a9a0bc60a345cb0ea699795a5264acf52287d930e59e07

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: virtualshell-1.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 226.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for virtualshell-1.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2536a02264d64328bf89417e68aff30c6f6a8ce480d5d4acee23d44b69aad16e
MD5 49c1ec6539347d44b347d67b79889f98
BLAKE2b-256 3502d69a07f668983daae67fd2abc412dc8c7fc22db2bed99ecf6a151a1e133e

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ba4a1c44f3afc4639ed79ffefdcfe0a61ca1d846f3eca1cc0d5b6aeb0f3d277
MD5 b4c6f29b99e8e7abdf3527e4d4a370f3
BLAKE2b-256 388c44fb89841c12fe23c011e4ec8292bebc8e692ff8b3c4dcdc334e109a0f7d

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7f87153e2cbd36091e96f86367a0f3c34e4479e0cc08e92ae13db90ef9ab438d
MD5 fedaa8f7c538e9f27d1a4ecc357dd600
BLAKE2b-256 96174198323caf40c1fde34b6da628458b2ad325d294f050f1bd21fdc9652937

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp39-cp39-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0fa33cf9c90ee186f3fca050beaf137f262cce983b3d93ec082216534bf73569
MD5 7d118e5007bd2a2b3af3203dcd3fba5f
BLAKE2b-256 5968edc7c7de558d196be20e3a2c183fc16e35e387f3842a9d3593e79891ab64

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: virtualshell-1.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 219.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for virtualshell-1.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d73273a3bf30a1337dc370172757eb97673c2ea3986890c780d98752e72781cc
MD5 77be27269a1d30f87e26d38e77e82f04
BLAKE2b-256 66b63b283880f1f807629d86f196ec26323a5e067bd32a4d34f4867826657394

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6044cdd080d799b8d3650f8ce4233241146fdd6171827c9e6a0f9c6a63919333
MD5 087dad88114dbf83b224781592f8ca9a
BLAKE2b-256 85833a29ecb5590b69357a2142832f22a0279ee509385a68d459d172cb148eb7

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 58af1fc73421ac87ced1c75792a152758dfaf7159d296c467d295afcf3e3eb66
MD5 4b47bb5617951b08d357dcae5dbea202
BLAKE2b-256 af19d9ccb69046061765e909c5719f668bd483fada177587004ab674747ffec5

See more details on using hashes here.

File details

Details for the file virtualshell-1.1.0-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for virtualshell-1.1.0-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 24f1ffe1fbd62fa56d1784fab5f0b6fde1dd90023b9d0d185ac52ae2a2552255
MD5 0d7fbc49b8bdaf47ac942ab2e4b4f016
BLAKE2b-256 b368bd1d7c95ac8d8064256231524f1a2bfda7de8864df82e32982bd5584694b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page