Skip to main content

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

Project description

virtualshell

High-performance Python façade over a C++ PowerShell runner.
A single long-lived PowerShell process is managed in C++, handling pipes, threads, timeouts and output demux; Python exposes a small, predictable API.


Features

  • Persistent session to pwsh/powershell (reuse modules, $env:*, functions, cwd)
  • Sync & async execution (Futures + optional callbacks)
  • Script execution (positional / named args, optional dot-sourcing)
  • Batch with per-command timeout & early-stop
  • Clear failures (typed exceptions), context manager lifecycle

Install

pip install virtualshell

Platform & Python Support

Prebuilt wheels are provided via PyPI for common platforms and Python versions.
This means you can usually pip install virtualshell without needing a compiler.

Supported Python versions:

  • 3.8, 3.9, 3.10, 3.11, 3.12, 3.13

Supported platforms:

  • Windows (x86_64, MSVC build)
  • Linux (x86_64, aarch64, manylinux2014/2.28)
  • macOS (universal2: x86_64 + arm64)

If your platform is not listed above, pip will fall back to building from source.
See Building from source for details.

Requires PowerShell on PATH (pwsh preferred, powershell also supported).


Quick start

import virtualshell

# Create a shell with a 5s default timeout
sh = virtualshell.Shell(timeout_seconds=5).start()

# 1) One-liners (sync)
res = sh.run("Write-Output 'hello'")
print(res.out.strip())  # -> hello

# 2) Async single command
fut = sh.run_async("Write-Output 'async!'")
print(fut.result().out.strip())

# 3) Scripts with positional args
r = sh.run_script(r"C:\temp\demo.ps1", args=["alpha", "42"])
print(r.out)

# 4) Scripts with named args
r = sh.run_script_kv(r"C:\temp\demo.ps1", named_args={"Name":"Alice","Count":"3"})
print(r.out)

# 5) Context manager (auto-stop on exit)
with virtualshell.Shell(timeout_seconds=3) as s:
    print(s.run("Write-Output 'inside with'").out.strip())

sh.stop()

Another example (stateful session):

from virtualshell import Shell
with Shell(timeout_seconds=3) as sh:
    sh.run("function Inc { $global:i++; $global:i }")
    nums = [sh.run("Inc").out.strip() for _ in range(5)]
    print(nums)  # ['1','2','3','4','5']

API (overview)

import virtualshell
from virtualshell import ExecutionResult  # dataclass view

sh = virtualshell.Shell(
    powershell_path=None,                     # optional explicit path
    working_directory=None,                   # resolved to absolute path
    timeout_seconds=5.0,                      # default per-command timeout
    environment={"FOO": "BAR"},               # extra child env vars
    initial_commands=["$ErrorActionPreference='Stop'"],  # post-start setup
).start()

# Sync
res: ExecutionResult = sh.run("Get-Location | Select-Object -Expand Path")

# Scripts
res = sh.run_script(r"/path/to/job.ps1", args=["--fast","1"])
res = sh.run_script_kv(r"/path/to/job.ps1", named_args={"Mode":"Fast","Count":"1"})
res = sh.run_script(r"/path/init.ps1", dot_source=True)

# Async
f = sh.run_async("Write-Output 'ping'")
f2 = sh.run_async_batch(["$PSVersionTable", "Get-Random"])

# Convenience
res = sh.pwsh("literal 'quoted' string")     # safe single-quoted literal

sh.stop()

Return type

By default you get a Python dataclass:

@dataclass(frozen=True)
class ExecutionResult:
    output: str
    error: str
    exit_code: int
    success: bool
    execution_time: float

Pass as_dataclass=False to receive the raw C++ result object.

Timeouts

  • Every method accepts a timeout (or per_command_timeout) in seconds.
  • On timeout: success=False, exit_code=-1, error contains "timeout".
  • Async futures resolve with the timeout result; late output is dropped in C++.

Design notes

  • Thin wrapper: heavy I/O in C++; Python does orchestration only.
  • No surprises: stable API, documented side-effects.
  • Clear failure modes: raise_on_error and typed exceptions.
  • Thread-friendly: async returns Futures/callbacks; no Python GIL-level locking.
  • Boundary hygiene: explicit path/arg conversions, minimal marshalling.

Security

  • The wrapper does not sanitize raw commands. Only pwsh() applies literal single-quoting for data.
  • Don’t pass untrusted strings to run* without proper quoting/sanitization.
  • Avoid logging secrets; env injection happens via Shell(..., environment=...).

Performance

  • Sync/async routes call into C++ directly; Python overhead is object creation + callback dispatch.
  • Prefer batch/async for many small commands to amortize round-trips.

Lifetime

  • Shell.start() ensures a running backend; Shell.stop() tears it down.
  • with Shell(...) guarantees stop-on-exit, even on exceptions.

Exceptions

from virtualshell.errors import (
    VirtualShellError,
    PowerShellNotFoundError,
    ExecutionTimeoutError,
    ExecutionError,
)

try:
    res = sh.run("throw 'boom'", raise_on_error=True)
except ExecutionTimeoutError:
    ...
except ExecutionError as e:
    print("PowerShell failed:", e)
  • ExecutionTimeoutError is raised on timeouts if raise_on_error=True.
  • Otherwise, APIs return ExecutionResult(success=False).

Configuration tips

If PowerShell isn’t on PATH, pass powershell_path:

Shell(powershell_path=r"C:\Program Files\PowerShell\7\pwsh.exe")

Session setup example:

Shell(initial_commands=[
    "$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new()",
    "$ErrorActionPreference = 'Stop'"
])

Building from source (advanced)

Source builds require a C++ toolchain and CMake.

Prereqs: Python ≥3.8, C++17, CMake ≥3.20, scikit-build-core, pybind11.

# in repo root
python -m pip install -U pip build
python -m build           # -> dist/*.whl, dist/*.tar.gz
python -m pip install dist/virtualshell-*.whl

Editable install:

python -m pip install -e .
  • Linux wheels target manylinux_2_28 (x86_64/aarch64).
  • macOS builds target universal2 (x86_64 + arm64).

Roadmap

  • ✅ Windows x64 wheels (3.8–3.13)
  • ✅ Linux x64/aarch64 wheels (manylinux_2_28)
  • ✅ macOS x86_64/arm64 wheels
  • ⏳ Streaming APIs and richer progress events

License

Apache 2.0 — see LICENSE.


Issues & feedback are welcome. Please include Python version, OS, your PowerShell path (pwsh/powershell), and a minimal repro.

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.0.1.tar.gz (54.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.0.1-cp313-cp313-win_amd64.whl (192.1 kB view details)

Uploaded CPython 3.13Windows x86-64

virtualshell-1.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (287.4 kB view details)

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

virtualshell-1.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (257.8 kB view details)

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

virtualshell-1.0.1-cp313-cp313-macosx_11_0_universal2.whl (332.8 kB view details)

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

virtualshell-1.0.1-cp312-cp312-win_amd64.whl (192.1 kB view details)

Uploaded CPython 3.12Windows x86-64

virtualshell-1.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (287.5 kB view details)

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

virtualshell-1.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (257.8 kB view details)

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

virtualshell-1.0.1-cp312-cp312-macosx_11_0_universal2.whl (332.7 kB view details)

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

virtualshell-1.0.1-cp311-cp311-win_amd64.whl (191.1 kB view details)

Uploaded CPython 3.11Windows x86-64

virtualshell-1.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (285.1 kB view details)

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

virtualshell-1.0.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (256.7 kB view details)

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

virtualshell-1.0.1-cp311-cp311-macosx_11_0_universal2.whl (330.7 kB view details)

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

virtualshell-1.0.1-cp310-cp310-win_amd64.whl (190.4 kB view details)

Uploaded CPython 3.10Windows x86-64

virtualshell-1.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (283.6 kB view details)

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

virtualshell-1.0.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (255.3 kB view details)

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

virtualshell-1.0.1-cp310-cp310-macosx_11_0_universal2.whl (327.9 kB view details)

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

virtualshell-1.0.1-cp39-cp39-win_amd64.whl (197.0 kB view details)

Uploaded CPython 3.9Windows x86-64

virtualshell-1.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (283.6 kB view details)

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

virtualshell-1.0.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (255.7 kB view details)

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

virtualshell-1.0.1-cp39-cp39-macosx_11_0_universal2.whl (328.1 kB view details)

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

virtualshell-1.0.1-cp38-cp38-win_amd64.whl (190.3 kB view details)

Uploaded CPython 3.8Windows x86-64

virtualshell-1.0.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (283.4 kB view details)

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

virtualshell-1.0.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (255.6 kB view details)

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

virtualshell-1.0.1-cp38-cp38-macosx_11_0_universal2.whl (327.6 kB view details)

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

File details

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

File metadata

  • Download URL: virtualshell-1.0.1.tar.gz
  • Upload date:
  • Size: 54.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.0.1.tar.gz
Algorithm Hash digest
SHA256 7e5d88148c04f7c7a5edaba926046ae166825726fbf33e65f5da0eaef0024cb1
MD5 93bfd58b7ba0da1345df13d4f62a9702
BLAKE2b-256 7db13e9e83c5b4af1409a89576223167269fc5ebc420ee0332b70ff09229b519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 580c70ec25a64f8e9683ad0e4810f895ef871ed1d399c5bbbc116065aa236731
MD5 b613cb3c0720096a6cee12aa659f6b34
BLAKE2b-256 7ffb93ef3e13bdc040db13064f99b87c92fc3b6562e75b6c0a0fdd392fc744aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1b9c43c3a318353da674fff7abedccc2300d8c0f05762de0d49def8c021178ca
MD5 e16a7bc669603115a895fbfcc6d46d1a
BLAKE2b-256 8d5b6a0be4a95ccbc02729c20371550db1eb41f740475443da2aebf45c4beaf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fde11a4790f472f4ecdf522cdab98187df721eba8608a2bd4bd6a4ec47e04955
MD5 e5620533f71707d9338017d4af66f260
BLAKE2b-256 2e2559a7008f22733194f9449ce46a5b8043bfee31a572646e36c4eb8254de52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 70d34d91ba8c6bd611e6f5976ab1652999bc054f7f8c6592be7f0855f5b62d3d
MD5 5959f9decf712e4cbb377e5938d5dffe
BLAKE2b-256 eae809d903f8062c507ba9412fa396f2fa171043ba55d51929a9b9ccc8e5c504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bda00846930b713422c53e2216f26db7cca00b4765eb470cb8a795c5da402d9d
MD5 57e7585da4575a37d0cf81390337415f
BLAKE2b-256 83be5b4d0168661f3d552bd5fdf650ff5c36e2f74c14669c71bc83995a629dd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb5937e751fdf0a8f55c816423d57439bbc1c319d12c9a020830e16b2b1d49e2
MD5 3c5208dd38eddc2519988004ec5755d9
BLAKE2b-256 e68ecb2954d409487139b64a2fd4bcd16834a5b9dac32e4cb19ebef0d89a6b2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a602a71a771da10372feb584c0c907eb0a60faf21b1b17a875965fe8269897ef
MD5 9fc7a93dee581cbd86cb026c55c2d75d
BLAKE2b-256 cb5f9ce2940213fd10f5d3c5f77a516c6342eb6db0b51dde07df03a04347a69c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d8547cda7e048cbe96c3ea79bda463516c9df5b776822409fa7f00ffc700264c
MD5 3b3148dbc466284cefadba4d9b8057d4
BLAKE2b-256 a54bfa82d2c4bd8a7eca8c0609120c98f089dc798f9c90cb6c87d8264e9c1461

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fb36243fc10655b54cc5a2ee61cf986b7d0cc0ab3d88f03bfd67448edf4e700d
MD5 250e38e90894ab39ae5b7954d81fda1e
BLAKE2b-256 27c08972e1aa29a4eca617954e4defbb64fc8ed835b0a2f2ed0929102b467343

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5ba437ecaf7e33cafa846b5b2971c401a21b5c368eaaceff403a2c6e8fe1b82
MD5 21fea11f993b6a5493e9df2d914a8f95
BLAKE2b-256 3d35d774cbed21dfad5ef0e5bdc34ac23d2b5ee06ad03f0a6796538454e06850

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eba00c5cf60a785f44803eeb9c68fb104d5e6a40118f08f799f40fd45b2dfab4
MD5 4dc6671d8b3f2cf7fa1c8045e1550e04
BLAKE2b-256 b149dda0ae7bf902dd9f2a6ae29332601ab4cf2e3afb81aba4dd918f4b0b99cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5ec3430324fbb6ff83240172fd0021bbe113963becf52663b49b8c14896b9682
MD5 edd7a7f24573f946b04b0e265c4e92a5
BLAKE2b-256 b1a997ddf8f3f85a223d6b72495fa4306928b1aafb9307cff1c5251730fe3aff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f8f540b18775b549c45a41c6ff08253d1f0f816a88d201123ff291676035cc4a
MD5 38ac0b8c6d7f92d0371da1fba32b68d2
BLAKE2b-256 e01a2f4fd6a64defe316a22051071aa1db7dc1b512aca82fa09acd9fb1f8b47e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f3be46def43477bfd7c580e69979b1cec00822bd7d845af3aa2b64870d3be7b
MD5 f56d3f9f4d1e101ecf5a7344e82a6a60
BLAKE2b-256 7e81028fb690da895a12d7c14a7212150dc381a046cf3c4fef53bfe7e8baf3dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5a38ec2d8fbe83874abc3764f74aeb03a3cc07a1251e2c4d7d72a0a8c8d2d3a2
MD5 b309b2ab91d58ab8bb5af94333282b94
BLAKE2b-256 c58287f12fe0a8918999ba259145104209b96c1d72c2edbd6f14670ebbf52a29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0373119a4168eea1ea8edfd6f73896655ff8c88de6e590dccaed10370a7e947c
MD5 ab815e814e11d297878909db5bdec98a
BLAKE2b-256 bf8807a0161d80f89567b6c03a30d811c8206dd9f0c7836193900ae3d8750564

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 197.0 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.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 119711b005ad0e40860d61b368ccaea3da23662678be85ac5be7aeef43d921b6
MD5 56b7fbd0a6da4d5df5c8331c47182dac
BLAKE2b-256 0254f968d47e39fbcdd8762eae7945498aedd2c76f969aa3b336ab69651852fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 56f4b7945aa82ddc7bcff9378df980dd36a7c6a3702acdf896e892b1eed6f9c8
MD5 f1d9ee4c034e0245357f4a9ef23f1ce5
BLAKE2b-256 e855c3445dcc49f200fc63c7bd0c3973e584f36e7ec2473bb07934a49e15ad07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d7006f1132e9a38ca7634590df270587aaf547ee73e4e09a214a0040d0a8c95c
MD5 ca92349a49f42b905fea968b84a30749
BLAKE2b-256 40ac8836f458b9bd679138fe91a1321ce2093cf9c104d9f3a14d2fcc5f90dfe7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 2b26c149616d855b85fdfd302ae025517ca634970a91589366e4fff9a37fdb0b
MD5 8bc54a234fd2bbfd842ca168e4adb5b3
BLAKE2b-256 3dd77137bf8a053ef44f17f8700a41cf089e6caa357c223130c3f4fe0150fbcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 190.3 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.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7c21e83301bb7970721f979300b9e26ea72c58c0f53b5ef0fe942d3efe84eba1
MD5 8d274707ec3609027ec3186d5d765948
BLAKE2b-256 4cdfe466ec74adcf410174416f9f0c96afc4d6a8cc1266bd2c3ae6f6b5ad186a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48ac66b3f317fd597edf17279bc5c3573206f51aa6702396957c788f3186f415
MD5 6b5cf299d41c34c6fbeaf7df7008d6ab
BLAKE2b-256 b3fcaa19f9d4392e4bff93d394038bc03fe67289489435e528c7a06307fca4dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a1b271e23134f0930b5b341530f372b8a9edfac4abb7f4203d7a6742c3c3ade9
MD5 e56fed349639ddbe255d205bd102ece5
BLAKE2b-256 428210f01c63f25df38d8fe33c987aeaaa695e9b870e4688d5f1ec937a4f70aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.1-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3c48398c345305837c38681befce490dee484f327ebe593cb1530f00e851bc25
MD5 5ac9e8cabae6231b386971290fbbd700
BLAKE2b-256 fa856904e230d4b61bcea7c8ef27f0aacd19e695542b1d28bd1bd19e00220caf

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