PyCAPIO
PyCAPIO brings transparent data streaming to file-based Python workflows, minimizing I/O bottlenecks without requiring code modifications. PyCAPIO works by monkey patching built-in IO methods and classes, interfacing them natively with the CAPIO methodology.
Prerequisites
Before installing PyCAPIO, ensure your system meets the following requirements:
| Dependency | Minimum Version / Notes |
|---|---|
| Python | $\ge$ 3.10 (including development libraries/headers) |
| MPI | A working MPI implementation (e.g., OpenMPI, MPICH) |
| Build Tools | CMake & GCC compilers |
At Compile time, CAPIO is also fetched and compiled from source.
Installation
From PyPI (Recommended)
PyCAPIO is available as prebuilt wheels on PyPI. You can install it inside a virtual environment:
python3 -m venv venv
source venv/bin/activate
pip install pycapio
From Source
To build and install PyCAPIO from the source repository:
git clone [https://github.com/High-Performance-IO/PyCAPIO.git](https://github.com/High-Performance-IO/PyCAPIO.git)
cd PyCAPIO
python3 -m venv venv
source venv/bin/activate
pip install .
Usage
- Global Interception (CLI)
PyCAPIO can be invoked via the command line to inject streaming capabilities across your entire workflow step:
pycapio --capio-dir ./dir --app-name app --workflow-name ./workflow my_step.py
- Fine-Grained Interception (CapioContext)
For precise control over which regions handle interception, use the CapioContext decorator. Only I/O operations
executed inside this context will be intercepted by CAPIO.
from pycapio import CapioContext @CapioContext(capio_dir=".", app_name="reader", workflow_name="example_workflow") def read(path): with open(path, "r") as f: data = f.read() return data # Only I/O within this function call is intercepted data = read("example.txt")
- PyCAPIO internal
It is finally possible to use PyCAPIO's internal methods to intercept I/O operations. To do this, simply import the
PyCAPIO internal module and use its methods.
from pycapio.internals import *
This will import all the necessary methods and classes that can be used to develop custom IO modules which will interface directly with the CAPIO server.
Important Notes
[!IMPORTANT] PyCAPIO natively intercepts I/O operations that use Python's built-in methods. If your script relies on external libraries compiled into shared objects (.so files), please bypass Python-level interception and use the standard LD_PRELOAD approach for CAPIO instead.
Team
Developing team
| Name | Role | Contact |
|---|---|---|
| Marco Edoardo Santimaria | Designer and Maintainer | email | Homepage |
| Rosa Filgueira | Workflows Expert | email | Homepage |
| Iacopo Colonnelli | Workflows Expert | email | Homepage |
| Marco Aldinucci | Supervisor | email | Homepage |
Metadata
Release files for pycapio 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pycapio-0.0.2.tar.gz | 37.1 kB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
| pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 | Details |
Total release size: 65.1 MB
Release files / pycapio-0.0.2.tar.gz
| Download URL | pycapio-0.0.2.tar.gz |
|---|---|
| Size | 37.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3edbba6a64c0c4974e29e39ca142260972d34021dd008137dd90b0d65d86987f
|
|
BLAKE2b-256 checksum How to use checksums |
f66ff89dba1927298914254481bb9a0dcf1de133e07b13ad9d734214219d8876
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
404ed45eed834d6fcb20a28f8bc83d189f8ac6455314b43254b18c970991da31
|
|
BLAKE2b-256 checksum How to use checksums |
de9988ed35b8e6f64e6cff244aeb594212faadbde7e94e492903cc237ce95ae5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
37c005da26669264dc9b0e28971d8d71548bc2414fa61c1bd8aa97a258908f72
|
|
BLAKE2b-256 checksum How to use checksums |
e943ce21581e260cc7a6665435bb9c011a68f85843e208a1ec072f61dfcf167c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
202289ea210e92176b96dcd84f13f656459e291937c51a323326829ef725bc83
|
|
BLAKE2b-256 checksum How to use checksums |
0cc3e7363d075f207c3b9cc3fe244c2640af18b6afe643c4014585a828a938a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
2c38c2d0b355cd834a1d56d3efde46cfaaf342c002605c33f7ff767374ea1d75
|
|
BLAKE2b-256 checksum How to use checksums |
717365689202f72a018e1e2ae0a50347fa013028a91b35dc5ae017f2ed9fa78b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1e59c8f32fa91ca5e8faa1c435f8cfe6bb887a892cdf75f0a18d77aae8def105
|
|
BLAKE2b-256 checksum How to use checksums |
808e529227fe56b2a756a33fb2559d03e16117d2084f7502885d5a05b21fb499
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fd2771e8221592972de3941db93155b78b75212e0a44add304c640620f95c537
|
|
BLAKE2b-256 checksum How to use checksums |
184bacdcd17ba7c0164e69247fdb6477e6269ec3a2dde782acceec403bbef2e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c75ab7b4ffbf89d395f4ddfbf9e22763cee8d6e7ee2a4a10d60bb6fc78f61ec8
|
|
BLAKE2b-256 checksum How to use checksums |
1c444c1cd8dc08e999670c88a46490b1ba852db9fe54cf712edf63a87b424d14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ee15a4f1e542fb3bb65e12331f250750f0b26a4af27e0e511f5ff24c95552a98
|
|
BLAKE2b-256 checksum How to use checksums |
34bf583c3c0cee068f655ef1c6fcca7a4df0b85633b7c6695fa4a5e93fcfe9f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d0547b704376547ead4c39914fe063fb8b12ae6ff95ef43831d20bf8eb4e649c
|
|
BLAKE2b-256 checksum How to use checksums |
46343fdee0e13cb4eca48d359f164fb8ddd1a4672cccdbf70822913e8b95bbfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
5b59112a4fe708b0369f9b1a84eea3ab8cfbb4cd581fb66740991177e68189b9
|
|
BLAKE2b-256 checksum How to use checksums |
4b5a23043ae6fbfec4318ae1f13533c39dcf06cf61aab05c24935453f1417fa7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for pycapio 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.