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:
    out: str
    err: 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, err 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.2.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.2-cp313-cp313-win_amd64.whl (192.1 kB view details)

Uploaded CPython 3.13Windows x86-64

virtualshell-1.0.2-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.2-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.2-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.2-cp312-cp312-win_amd64.whl (192.0 kB view details)

Uploaded CPython 3.12Windows x86-64

virtualshell-1.0.2-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.2-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.2-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.2-cp311-cp311-win_amd64.whl (191.1 kB view details)

Uploaded CPython 3.11Windows x86-64

virtualshell-1.0.2-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.2-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.2-cp311-cp311-macosx_11_0_universal2.whl (330.6 kB view details)

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

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

Uploaded CPython 3.10Windows x86-64

virtualshell-1.0.2-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.2-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.2-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.2-cp39-cp39-win_amd64.whl (197.0 kB view details)

Uploaded CPython 3.9Windows x86-64

virtualshell-1.0.2-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.2-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.2-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.2-cp38-cp38-win_amd64.whl (190.2 kB view details)

Uploaded CPython 3.8Windows x86-64

virtualshell-1.0.2-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.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: virtualshell-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 dcfd0c1120d585d09af712169fcd4b2d9380c23b171f814d79b83b2c4725e057
MD5 16323145750aac1a51e1db92139fc4d1
BLAKE2b-256 d2bd285ff49f05811649fa5b2ed263a29d778f809431b97379a15d202145dcf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 341c3fec04d2a40b1c890c2bee3377c2a0c65eb7b2611987d91aceb9804215fa
MD5 8ca99c5b7e19531c9fe4a5057f11ebd9
BLAKE2b-256 8ab13cbec7d988f33e7046a467d7b93a833093bcc98772af9c43793f329aedfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 523d4af5a12e5d7dace7d4350453a361707587e2c4c2d304f6ee8cb78bcab2ad
MD5 be6e062b7f91dd7fd06dd12a3ec41bd3
BLAKE2b-256 75fe5518481a125f2ab1a03947842d04e694b50101ddb354e94b849e97e3cf5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6c47fecd0a8a64a4ec4e79863821616ea912f9c75cf5815f06ca4c720780b6d2
MD5 933927b3dddccafbdeed0663c561e329
BLAKE2b-256 ba94e33290b9d2f4dffa2069235d989166e239bd884cbd6e225398226d8a4feb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 7cb5a4e54075c8fb3661782507469bd472b0fad1ef3c9f4ba6506bd9657c67d1
MD5 3078a4ad4c8d52d442eb9d04f5bcf66d
BLAKE2b-256 ebf4d8ca5d7e28fa5bc9bfe1996c3ae8094bbc92f8f880eaf97a6b5942c7159e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 78469aafb1e973fa175440436b08dc852f94511cf2f105096bd18c8c3b42ced2
MD5 9b5fce78b0f9218e6ca2838cddf1bbed
BLAKE2b-256 b0c46ced121418f50fbbf43f236be803401400ba5f7e703ee50788fac7a7e631

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b6ca312d520ed2afd67cc64112055aeebcc104b53ffe15dc0ceb04406bbbfe8
MD5 65d656b50628679f599de5a994288d9b
BLAKE2b-256 6061e7ab891d37b6d75efccdb39c1535a3b89bb490138bd38c4e2e5a130ebbd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6586bde5337e8c709084bbbde628f2279832e3acc3e9687bab40d5e61783dcef
MD5 c7e352a05e79b54efdf3903ca0002f11
BLAKE2b-256 6fc737f0d7eb1e39dad7e3f497e29ed3089bd9e96df76b503752a244c7d06504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 bb00a671351154134a52eca43683d3792ee4a5125f89adac73cca095c30589cc
MD5 a9eca5431688ab8f11b96ed4ba7bf766
BLAKE2b-256 d353b1dbe67e231a3f75d59e67647a01783ef959b80cefdc8e971b631183bba5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 15ea8d9f5540b763439ecbee0168c0caa291059b5126c5fd0054e56664e595a4
MD5 8a9865465f3e60f4db4cb01eaa857ad6
BLAKE2b-256 7798cc43ec63e0616dd65a66fcc55f3694adb7a351560b8d3592aa0733786417

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 76c3dd2c2d74297f696abf20ec8a27f6f85f3b7061f446394ebbeff4de6e2c39
MD5 97ea48d0544d7cd5da71f0a708f5310f
BLAKE2b-256 24f8eb0e41e3418dfd9638b7b428f3050ad0aae001bbfede62736105c9fac8fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0ff7e175cb7562a062a39cfc20217ffbdd8db27fbc8f12b55d3032efd10404f6
MD5 b7a101cd163059084e705bcfe25fbf59
BLAKE2b-256 a75cf9a131cfaedc1b58ad85f01976f01db318efdc5079be2b880d2f785c4c08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 93d340288dadbfa42eb3c4cfdd3ab4a5f87ee6a6690ad98a72c0294f77647d44
MD5 dd6f62b2a394d5cc9e5dbd93dc3412f2
BLAKE2b-256 d2fefe204f53d4793f06315dc3aa62e4bdcde77847cc9c787af5d9fb4a8ad203

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cf9fef13284792f984790b7592c52d833433d8893d2aa451ba8e7265bcc58769
MD5 fc07b7aa6f3ebb22b6eef3aa174676f7
BLAKE2b-256 bed3ed2ba1d2212509ee971b7124396cf078949a2135eef497f24d10fee17ae5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ecfdbe1455ff45568c37a32ca2bc3ae1e4ae89b6a0d41e9383331e4a8bb99814
MD5 185d10aacaec3b42860e3e4a705d636e
BLAKE2b-256 8d6b670024615557110ae768405fe92c5f510682c953b155133b18069ef1d09a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 211fe7b24ee1a6d327c533ade4f46a16a4c407c575355570030c67f1c9f5e872
MD5 b7e3c50bb4f25a511ea34b586721aa73
BLAKE2b-256 e095aec9c74d83fb8badccf4bf8d9037dfafa6f11f55611d446524cc49e03481

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 f7c36fc8ec84d90337195fdfd3f1adf0a6c996b22419aeb3c2291c842a511c94
MD5 f977c9e9c9939bf4feb9064b7a279371
BLAKE2b-256 669c337efaa02b642729657c630612f18dcfaf0e39755a67b70af16284511355

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.0.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2b64b30ce6c03abe19bea8a6b0814cace7c8ea452c6ac56b1b0689cf36a86518
MD5 e05b3590373c7cd04df627a1f524b42b
BLAKE2b-256 3a9a616202e4e65f6c2c2f2c0b13b85c739b9a419c81417db5f12c22510eb1b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6b13840829538a8f97bf9875ecc5209b572137d5ece286975c5ca774d61d7700
MD5 cc074128fd030c7ccf4c99009e67e0cb
BLAKE2b-256 9b5aae42ffe65abaa11970b3803baa1878288caf1940aa6ac08e1c63e5a5b6cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de6156a9da8a49f3f135fd4edaa6a7cee923982b73230b0d73672c5b23aaef48
MD5 c987cff165ccff677a9964880011f79e
BLAKE2b-256 4bf4bbe5ed948a587c345df622897552161d1c454ba60e05eadcd0879f1a206a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c0802cb96d59b772da7e1100f9525e4909e5bd6b6436463da1b07d5369fcdb52
MD5 a29a7a4c43e560c1ce52dfce40023b51
BLAKE2b-256 ae6590234110130aea848f9a60793aeac03cd05181fe8954d09892719ee19a54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: virtualshell-1.0.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 190.2 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.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5bae843599a316b3d8fac3f77287db01d1bfd449272a22e389fd97f54523fa83
MD5 94fb3e8fc7dec85731fd1d0d5fde63ca
BLAKE2b-256 21ae97271ba72698ced64fc21fa25cd2cb9e5a55a8cb2352aa829f8ebd22e77e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d780a9f12389f7884a97e1e31f1d933f5a0f8bc7a2ecf56bf3ef74fe007405f6
MD5 2d1e0ed9a5b2d4e139219a787c57e55f
BLAKE2b-256 b0e74930b01a81a6744fdde6293143e8cca8e648719407e8a90c106107bafa96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e05faa49bdfd3429b1bef276e9890efbd269f37870ff02e540a6c1322b89a908
MD5 c0e9c28568c81e38d17c9e62222247da
BLAKE2b-256 d6fae91674ed6b4694ac95137dc179ccba37c9ce037b9cb4bb750745636d1dcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for virtualshell-1.0.2-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 505a9a2a75853d2507634dacd469535af6d46fa8d3b86db48be2bd768fb6c101
MD5 c262b5a6939e1cb7ba6b7240d3c1a985
BLAKE2b-256 cf2bb000b6fa5ba0282d0eb1269a0b2f716f6b0fc2b69316fd819be4e671bb67

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