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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
338acbc165593396727c1de25c7c5e4c136aae00c858cfafc175b34c050edcd6
|
|
| MD5 |
87926a149be34f4510e91d798634edae
|
|
| BLAKE2b-256 |
59963785f7d539ec87eeaf74be2df30c3ecf9f89846eb3633f5af678c1123dcb
|
File details
Details for the file virtualshell-1.1.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 251.8 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad0c05abea5ce787da1ecb15d8ee97f1c147410fe5c89419c5f6b3b6d42bc220
|
|
| MD5 |
f84a1a8c3750d7b9591cfedac48b6930
|
|
| BLAKE2b-256 |
2ed77c6ffff4f2b3e737e27459d34124939aae82834f768489a91afead780884
|
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
- Download URL: virtualshell-1.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 347.0 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87bbb9a20b5c670ae7aee8b497b0a484781f9176e1807586d2b3e800991c9ec7
|
|
| MD5 |
9f74e3af2d31f396da706979b563e30d
|
|
| BLAKE2b-256 |
632f3618cf0a1f8f64573fe3af58367ef094be0ea60638eec596dbbd7f96dc89
|
File details
Details for the file virtualshell-1.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 309.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6df529b89cb67c2c850612b3b47b1698ac494a5657bc90db7a1e04109c5b8c62
|
|
| MD5 |
eacef24a234f6c54622568994d18546f
|
|
| BLAKE2b-256 |
1586de0c8ea8eec640f57d0d0529d78b94f7923bba08b6c8258bced3334050ab
|
File details
Details for the file virtualshell-1.1.1-cp313-cp313-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp313-cp313-macosx_11_0_universal2.whl
- Upload date:
- Size: 434.4 kB
- Tags: CPython 3.13, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63e4c49c879b3dfd1addfea18ecdc7644de5aef3accc82ab4a8704a8c56c241f
|
|
| MD5 |
e7210a43ca763f7010ebecc1a44b7104
|
|
| BLAKE2b-256 |
ffff238410249e34ea986a7e23a0808a0848c42edbae5dca3ff7d8b874b71949
|
File details
Details for the file virtualshell-1.1.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 251.8 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f17d48f6c945a4e7c6348527096f2a80bace8bc737afe69c149b2d497e54d10d
|
|
| MD5 |
ef5530c5b6babf14a93839e6bf19bc91
|
|
| BLAKE2b-256 |
f48d2e3011e411a35f6f681754264dd8797ec67a68c344e47c6d597df555d9d2
|
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
- Download URL: virtualshell-1.1.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 346.9 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0c71666fcfc0955245bc342db374ae93c8b3244adbd7501eaf39391d75c0137
|
|
| MD5 |
1840b34e4e8cea6f02c6319b11ecf86e
|
|
| BLAKE2b-256 |
267c66039aa161e6433f05705d57baa82351e43a77a74160dee25e76a0813f8f
|
File details
Details for the file virtualshell-1.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 309.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
128273388d0b4a7ebf07d6349c0a79cae211c4c1f3f617dca0414c60bf79ff9b
|
|
| MD5 |
bb326ad1339c07729e4cedd095450b0d
|
|
| BLAKE2b-256 |
72222eda36770015b9f1f424f47af219016f9af39d5c1f90e6a9bacf5ad628ff
|
File details
Details for the file virtualshell-1.1.1-cp312-cp312-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp312-cp312-macosx_11_0_universal2.whl
- Upload date:
- Size: 434.2 kB
- Tags: CPython 3.12, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44a20184906bbfa50f088df3ba1bf277038f8209f1dbf577265ed7649ae3b51c
|
|
| MD5 |
d20ddd85c3852ce2c3bf58a0cf1e80ac
|
|
| BLAKE2b-256 |
e3b132ed0117b7db1af60ee0287a5e0baa12d3c302dc42b8aece6fc6156c5e17
|
File details
Details for the file virtualshell-1.1.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 250.6 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f4e724cbe8ea6e91999eece34f6501c029dc865ce3a89853b74d58c1acb4749
|
|
| MD5 |
adb51ac9c50867281672e755973ca8b3
|
|
| BLAKE2b-256 |
33d9252b66853853f4302e0388528fe29ab911357308111ae7eb5eebb6bb8b24
|
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
- Download URL: virtualshell-1.1.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 345.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5c3fe4cab47dd5d668721984a8c14b3332e97abbf06293841c6b456619869c8
|
|
| MD5 |
6a23cc8adc5725ece007a398f2c324b0
|
|
| BLAKE2b-256 |
a92aae4b5155aefa476a43bc816b523828ddb2eaa13bf4b985dad2fa8992627e
|
File details
Details for the file virtualshell-1.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 309.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51cac5078ba46b1b788968ecf09e0ff548f178e55b0a681c0d504768d403c7a3
|
|
| MD5 |
926d10da3edf9e1edd0ce3511363271f
|
|
| BLAKE2b-256 |
f6176d6ddebf935471a92e5c43dffe620bc691a74b82df23a3cb0ceeb9dcdc69
|
File details
Details for the file virtualshell-1.1.1-cp311-cp311-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp311-cp311-macosx_11_0_universal2.whl
- Upload date:
- Size: 430.4 kB
- Tags: CPython 3.11, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c55dfb69fe2191cea07ddedf8fe7e3325d4252882342bcb0b68dbef3fa134d94
|
|
| MD5 |
5e703025713f4f7499c92891b14375d4
|
|
| BLAKE2b-256 |
4c891a90a33785544c5029c82e9f526a8f14a415e3fca90acaa4c87060abdcdd
|
File details
Details for the file virtualshell-1.1.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 250.0 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e40e8658273a415f48598a8b51be9de08857a0444d8422d48f5d9ebefc198488
|
|
| MD5 |
3723bc15f9eebf9399bbbe1ab3af5253
|
|
| BLAKE2b-256 |
290028fa1b39e9e736db70353153da2362dbe1c34a279469a5b05b4f22e52d88
|
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
- Download URL: virtualshell-1.1.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 343.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca60055204d3f41d1c709333a798ad98e67adc2d6ac4ef2831ba5d4b4acc0ccc
|
|
| MD5 |
53f8ff5bb8f7f3f3a05e56fde02d99b9
|
|
| BLAKE2b-256 |
61ae1c2140cd8bd4d713b109e7d7a478056e876284fe13d0f97687e8f5097406
|
File details
Details for the file virtualshell-1.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 307.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14e078ae8eacc387cbc9bef9caa59306b007dce5de0371434dc3c7f769a7dd71
|
|
| MD5 |
2d5e7609b057439be2e549eecfd76b64
|
|
| BLAKE2b-256 |
acfe24609713964c83eb2edebaad82603d842eac7bb9561b5e8a84b3f3790e68
|
File details
Details for the file virtualshell-1.1.1-cp310-cp310-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp310-cp310-macosx_11_0_universal2.whl
- Upload date:
- Size: 427.6 kB
- Tags: CPython 3.10, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9df0ae479880e888a0aad95cdd4f9e44538efb54e384d1c6b1f39b5570e9095c
|
|
| MD5 |
eabb54de6eba865b228fb872d61b619a
|
|
| BLAKE2b-256 |
880c35a7a9deaaf1d6059153f37ee3fae2faf07a71e12b675e0b6c36068f63cd
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c63dc982858b6beed4905266dbb3835c0e78810ce24551595aa0c69e849971f
|
|
| MD5 |
57faef481106616e1b267be7534be7a8
|
|
| BLAKE2b-256 |
37d7f432bc627ae60a77ec0708ebda9ea34b4fb428f379e56f522eca9fdd7933
|
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
- Download URL: virtualshell-1.1.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 344.2 kB
- Tags: CPython 3.9, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e819d0071fa407428601c0c3c4aef16ed304a4c50011e945b39979586762d15
|
|
| MD5 |
d7fe4b67e61f36343e0b67db85ae9ebf
|
|
| BLAKE2b-256 |
18c8e6647dae13d19fed0430ed0d7d2da7aeb9a36847cb3dc6d987f93a108f73
|
File details
Details for the file virtualshell-1.1.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 308.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba6c0ac4068fa399d951565b0b421f80a947a9130002655aba5b8e2582d7585e
|
|
| MD5 |
dd392779a1fd10ac987533e08cd382ae
|
|
| BLAKE2b-256 |
cb51de3609f963d35b0198d7c62e430d7483b91c646980cdd3bae806b23bbc5b
|
File details
Details for the file virtualshell-1.1.1-cp39-cp39-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp39-cp39-macosx_11_0_universal2.whl
- Upload date:
- Size: 427.7 kB
- Tags: CPython 3.9, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d23fe383d220fe4d489aec1ec01f78e2930160db82c8392a9c4a829d56eb9d12
|
|
| MD5 |
1f5fb71ae5e2c8350a0dd64708e42aac
|
|
| BLAKE2b-256 |
3ffa5e99ae49718d57f47c4bc50707d0315bed9e1f92578eddbf9a86edd75403
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48a5de0b50dfbe9b605b51439969b70c27c1cd816da67098912075e1e73f0d72
|
|
| MD5 |
99a6ad1967be2e31c4a042cca1d75ae7
|
|
| BLAKE2b-256 |
ec2693d3ec1c54f647ecb45d5a212f3ef8552072e31af7584cb3b229635c9c8d
|
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
- Download URL: virtualshell-1.1.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 344.0 kB
- Tags: CPython 3.8, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6062c6d914af240cb45e581edd18ccc4cd19e2563e1dc0ac7fb51a67b150a98d
|
|
| MD5 |
3190480058aca968a5e575754680e6fa
|
|
| BLAKE2b-256 |
8e5142a224b172fc1995b0dc4e91edec62a99f2d5a93f7c63c55650c40485f45
|
File details
Details for the file virtualshell-1.1.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 308.0 kB
- Tags: CPython 3.8, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec4c8f16d0c0a7f800ff4f36f44e2a6fae97f6f32e47c1aa343d29fdc0c3a769
|
|
| MD5 |
3e0f4add2091d91053d9dacece55ad2c
|
|
| BLAKE2b-256 |
1d595615214ac56a1fcce4afc0e14e1a4539e73de70f35ebb09b1cfe139df253
|
File details
Details for the file virtualshell-1.1.1-cp38-cp38-macosx_11_0_universal2.whl.
File metadata
- Download URL: virtualshell-1.1.1-cp38-cp38-macosx_11_0_universal2.whl
- Upload date:
- Size: 427.3 kB
- Tags: CPython 3.8, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de55d481657aedf05a379ce31f84304a8ecdea6b95c7eac001ec2037c82f7696
|
|
| MD5 |
dccaf8b0b36b8d66d734695c564ddcc9
|
|
| BLAKE2b-256 |
0ef2d9d6abd7de619780e497d0568bf4bb71ada4fe7d2e5cfad97cd30b26a119
|