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.
  • Type-safe automation – generate Python Protocols from PowerShell objects and create live proxies with full type hints.

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.


PowerShell object proxies

Shell.generate_psobject reflects a PowerShell object into a Python Protocol, while Shell.make_proxy creates a live proxy that forwards attribute access back into PowerShell. Together they give you IDE-friendly, type-hinted automation.

from virtualshell import Shell
from StreamWriter import StreamWriter  # generated via Shell().generate_psobject
from StreamReader import StreamReader

with Shell(strip_results=True, timeout_seconds=60) as sh:
    sh.run("$writer = New-Object System.IO.StreamWriter('test.txt')") # create the object in PS
    proxy_writer: StreamWriter = sh.make_proxy("StreamWriterProxy", "$writer") # type-hinted proxy (StreamWriter made via generate_psobject)

    proxy_writer.WriteLine("Test Line 1!")
    proxy_writer.WriteLine("Test Line 2!")
    proxy_writer.WriteLine("Test Line 3!")
    proxy_writer.Flush()
    proxy_writer.Close()

    sh.run("$reader = New-Object System.IO.StreamReader('test.txt')") # create the object in PS
    proxy_reader: StreamReader = sh.make_proxy("StreamReaderProxy", "$reader")

    while not proxy_reader.EndOfStream:
        print(f"Read: {proxy_reader.ReadLine()}")

Detailed guides live in the wiki: generate_psobject and make_proxy.


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.


Performance

Up-to-date benchmark artefacts (bench.json, bench.csv) and analysis live in 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.1.tar.gz (84.7 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.1-cp313-cp313-win_amd64.whl (251.8 kB view details)

Uploaded CPython 3.13Windows x86-64

virtualshell-1.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (347.0 kB view details)

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

virtualshell-1.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (309.5 kB view details)

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

virtualshell-1.1.1-cp313-cp313-macosx_11_0_universal2.whl (434.4 kB view details)

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

virtualshell-1.1.1-cp312-cp312-win_amd64.whl (251.8 kB view details)

Uploaded CPython 3.12Windows x86-64

virtualshell-1.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (346.9 kB view details)

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

virtualshell-1.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (309.5 kB view details)

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

virtualshell-1.1.1-cp312-cp312-macosx_11_0_universal2.whl (434.2 kB view details)

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

virtualshell-1.1.1-cp311-cp311-win_amd64.whl (250.6 kB view details)

Uploaded CPython 3.11Windows x86-64

virtualshell-1.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (345.7 kB view details)

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

virtualshell-1.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (309.1 kB view details)

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

virtualshell-1.1.1-cp311-cp311-macosx_11_0_universal2.whl (430.4 kB view details)

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

virtualshell-1.1.1-cp310-cp310-win_amd64.whl (250.0 kB view details)

Uploaded CPython 3.10Windows x86-64

virtualshell-1.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (343.9 kB view details)

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

virtualshell-1.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (307.6 kB view details)

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

virtualshell-1.1.1-cp310-cp310-macosx_11_0_universal2.whl (427.6 kB view details)

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

virtualshell-1.1.1-cp39-cp39-win_amd64.whl (257.8 kB view details)

Uploaded CPython 3.9Windows x86-64

virtualshell-1.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (344.2 kB view details)

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

virtualshell-1.1.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (308.1 kB view details)

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

virtualshell-1.1.1-cp39-cp39-macosx_11_0_universal2.whl (427.7 kB view details)

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

virtualshell-1.1.1-cp38-cp38-win_amd64.whl (249.8 kB view details)

Uploaded CPython 3.8Windows x86-64

virtualshell-1.1.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (344.0 kB view details)

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

virtualshell-1.1.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (308.0 kB view details)

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

virtualshell-1.1.1-cp38-cp38-macosx_11_0_universal2.whl (427.3 kB view details)

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

File details

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

File metadata

  • Download URL: virtualshell-1.1.1.tar.gz
  • Upload date:
  • Size: 84.7 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.1.tar.gz
Algorithm Hash digest
SHA256 338acbc165593396727c1de25c7c5e4c136aae00c858cfafc175b34c050edcd6
MD5 87926a149be34f4510e91d798634edae
BLAKE2b-256 59963785f7d539ec87eeaf74be2df30c3ecf9f89846eb3633f5af678c1123dcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ad0c05abea5ce787da1ecb15d8ee97f1c147410fe5c89419c5f6b3b6d42bc220
MD5 f84a1a8c3750d7b9591cfedac48b6930
BLAKE2b-256 2ed77c6ffff4f2b3e737e27459d34124939aae82834f768489a91afead780884

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87bbb9a20b5c670ae7aee8b497b0a484781f9176e1807586d2b3e800991c9ec7
MD5 9f74e3af2d31f396da706979b563e30d
BLAKE2b-256 632f3618cf0a1f8f64573fe3af58367ef094be0ea60638eec596dbbd7f96dc89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6df529b89cb67c2c850612b3b47b1698ac494a5657bc90db7a1e04109c5b8c62
MD5 eacef24a234f6c54622568994d18546f
BLAKE2b-256 1586de0c8ea8eec640f57d0d0529d78b94f7923bba08b6c8258bced3334050ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 63e4c49c879b3dfd1addfea18ecdc7644de5aef3accc82ab4a8704a8c56c241f
MD5 e7210a43ca763f7010ebecc1a44b7104
BLAKE2b-256 ffff238410249e34ea986a7e23a0808a0848c42edbae5dca3ff7d8b874b71949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f17d48f6c945a4e7c6348527096f2a80bace8bc737afe69c149b2d497e54d10d
MD5 ef5530c5b6babf14a93839e6bf19bc91
BLAKE2b-256 f48d2e3011e411a35f6f681754264dd8797ec67a68c344e47c6d597df555d9d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0c71666fcfc0955245bc342db374ae93c8b3244adbd7501eaf39391d75c0137
MD5 1840b34e4e8cea6f02c6319b11ecf86e
BLAKE2b-256 267c66039aa161e6433f05705d57baa82351e43a77a74160dee25e76a0813f8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 128273388d0b4a7ebf07d6349c0a79cae211c4c1f3f617dca0414c60bf79ff9b
MD5 bb326ad1339c07729e4cedd095450b0d
BLAKE2b-256 72222eda36770015b9f1f424f47af219016f9af39d5c1f90e6a9bacf5ad628ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 44a20184906bbfa50f088df3ba1bf277038f8209f1dbf577265ed7649ae3b51c
MD5 d20ddd85c3852ce2c3bf58a0cf1e80ac
BLAKE2b-256 e3b132ed0117b7db1af60ee0287a5e0baa12d3c302dc42b8aece6fc6156c5e17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5f4e724cbe8ea6e91999eece34f6501c029dc865ce3a89853b74d58c1acb4749
MD5 adb51ac9c50867281672e755973ca8b3
BLAKE2b-256 33d9252b66853853f4302e0388528fe29ab911357308111ae7eb5eebb6bb8b24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5c3fe4cab47dd5d668721984a8c14b3332e97abbf06293841c6b456619869c8
MD5 6a23cc8adc5725ece007a398f2c324b0
BLAKE2b-256 a92aae4b5155aefa476a43bc816b523828ddb2eaa13bf4b985dad2fa8992627e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 51cac5078ba46b1b788968ecf09e0ff548f178e55b0a681c0d504768d403c7a3
MD5 926d10da3edf9e1edd0ce3511363271f
BLAKE2b-256 f6176d6ddebf935471a92e5c43dffe620bc691a74b82df23a3cb0ceeb9dcdc69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c55dfb69fe2191cea07ddedf8fe7e3325d4252882342bcb0b68dbef3fa134d94
MD5 5e703025713f4f7499c92891b14375d4
BLAKE2b-256 4c891a90a33785544c5029c82e9f526a8f14a415e3fca90acaa4c87060abdcdd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e40e8658273a415f48598a8b51be9de08857a0444d8422d48f5d9ebefc198488
MD5 3723bc15f9eebf9399bbbe1ab3af5253
BLAKE2b-256 290028fa1b39e9e736db70353153da2362dbe1c34a279469a5b05b4f22e52d88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca60055204d3f41d1c709333a798ad98e67adc2d6ac4ef2831ba5d4b4acc0ccc
MD5 53f8ff5bb8f7f3f3a05e56fde02d99b9
BLAKE2b-256 61ae1c2140cd8bd4d713b109e7d7a478056e876284fe13d0f97687e8f5097406

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 14e078ae8eacc387cbc9bef9caa59306b007dce5de0371434dc3c7f769a7dd71
MD5 2d5e7609b057439be2e549eecfd76b64
BLAKE2b-256 acfe24609713964c83eb2edebaad82603d842eac7bb9561b5e8a84b3f3790e68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9df0ae479880e888a0aad95cdd4f9e44538efb54e384d1c6b1f39b5570e9095c
MD5 eabb54de6eba865b228fb872d61b619a
BLAKE2b-256 880c35a7a9deaaf1d6059153f37ee3fae2faf07a71e12b675e0b6c36068f63cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 257.8 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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1c63dc982858b6beed4905266dbb3835c0e78810ce24551595aa0c69e849971f
MD5 57faef481106616e1b267be7534be7a8
BLAKE2b-256 37d7f432bc627ae60a77ec0708ebda9ea34b4fb428f379e56f522eca9fdd7933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e819d0071fa407428601c0c3c4aef16ed304a4c50011e945b39979586762d15
MD5 d7fe4b67e61f36343e0b67db85ae9ebf
BLAKE2b-256 18c8e6647dae13d19fed0430ed0d7d2da7aeb9a36847cb3dc6d987f93a108f73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ba6c0ac4068fa399d951565b0b421f80a947a9130002655aba5b8e2582d7585e
MD5 dd392779a1fd10ac987533e08cd382ae
BLAKE2b-256 cb51de3609f963d35b0198d7c62e430d7483b91c646980cdd3bae806b23bbc5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d23fe383d220fe4d489aec1ec01f78e2930160db82c8392a9c4a829d56eb9d12
MD5 1f5fb71ae5e2c8350a0dd64708e42aac
BLAKE2b-256 3ffa5e99ae49718d57f47c4bc50707d0315bed9e1f92578eddbf9a86edd75403

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 249.8 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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 48a5de0b50dfbe9b605b51439969b70c27c1cd816da67098912075e1e73f0d72
MD5 99a6ad1967be2e31c4a042cca1d75ae7
BLAKE2b-256 ec2693d3ec1c54f647ecb45d5a212f3ef8552072e31af7584cb3b229635c9c8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6062c6d914af240cb45e581edd18ccc4cd19e2563e1dc0ac7fb51a67b150a98d
MD5 3190480058aca968a5e575754680e6fa
BLAKE2b-256 8e5142a224b172fc1995b0dc4e91edec62a99f2d5a93f7c63c55650c40485f45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ec4c8f16d0c0a7f800ff4f36f44e2a6fae97f6f32e47c1aa343d29fdc0c3a769
MD5 3e0f4add2091d91053d9dacece55ad2c
BLAKE2b-256 1d595615214ac56a1fcce4afc0e14e1a4539e73de70f35ebb09b1cfe139df253

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.1.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 de55d481657aedf05a379ce31f84304a8ecdea6b95c7eac001ec2037c82f7696
MD5 dccaf8b0b36b8d66d734695c564ddcc9
BLAKE2b-256 0ef2d9d6abd7de619780e497d0568bf4bb71ada4fe7d2e5cfad97cd30b26a119

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