Python interface library for the libcapio library
Project description
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 |
Project details
Release history Release notifications | RSS feed
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 pycapio-0.0.2.tar.gz.
File metadata
- Download URL: pycapio-0.0.2.tar.gz
- Upload date:
- Size: 37.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3edbba6a64c0c4974e29e39ca142260972d34021dd008137dd90b0d65d86987f
|
|
| MD5 |
fec5a6ae8f5fd37a5dea3251cb27b84d
|
|
| BLAKE2b-256 |
f66ff89dba1927298914254481bb9a0dcf1de133e07b13ad9d734214219d8876
|
File details
Details for the file pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
404ed45eed834d6fcb20a28f8bc83d189f8ac6455314b43254b18c970991da31
|
|
| MD5 |
ac5d96ca5ff55f075096dcb8c6d2e06d
|
|
| BLAKE2b-256 |
de9988ed35b8e6f64e6cff244aeb594212faadbde7e94e492903cc237ce95ae5
|
File details
Details for the file pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.14, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37c005da26669264dc9b0e28971d8d71548bc2414fa61c1bd8aa97a258908f72
|
|
| MD5 |
f1c919da4bc8ee1dc9d0d61114d5a6f0
|
|
| BLAKE2b-256 |
e943ce21581e260cc7a6665435bb9c011a68f85843e208a1ec072f61dfcf167c
|
File details
Details for the file pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- 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.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
202289ea210e92176b96dcd84f13f656459e291937c51a323326829ef725bc83
|
|
| MD5 |
529d0c56c862b7a64df3612a75635873
|
|
| BLAKE2b-256 |
0cc3e7363d075f207c3b9cc3fe244c2640af18b6afe643c4014585a828a938a5
|
File details
Details for the file pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.13, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c38c2d0b355cd834a1d56d3efde46cfaaf342c002605c33f7ff767374ea1d75
|
|
| MD5 |
9190a566aecb2ce7fc911bdd4cbfede7
|
|
| BLAKE2b-256 |
717365689202f72a018e1e2ae0a50347fa013028a91b35dc5ae017f2ed9fa78b
|
File details
Details for the file pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- 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.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e59c8f32fa91ca5e8faa1c435f8cfe6bb887a892cdf75f0a18d77aae8def105
|
|
| MD5 |
aba46d2c52d688d8c921ac247cbf66dc
|
|
| BLAKE2b-256 |
808e529227fe56b2a756a33fb2559d03e16117d2084f7502885d5a05b21fb499
|
File details
Details for the file pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd2771e8221592972de3941db93155b78b75212e0a44add304c640620f95c537
|
|
| MD5 |
6ddae9b80263d3ef7d7b2beaad1880fa
|
|
| BLAKE2b-256 |
184bacdcd17ba7c0164e69247fdb6477e6269ec3a2dde782acceec403bbef2e1
|
File details
Details for the file pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- 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.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c75ab7b4ffbf89d395f4ddfbf9e22763cee8d6e7ee2a4a10d60bb6fc78f61ec8
|
|
| MD5 |
433ce54ea908d040dc09325875b9087f
|
|
| BLAKE2b-256 |
1c444c1cd8dc08e999670c88a46490b1ba852db9fe54cf712edf63a87b424d14
|
File details
Details for the file pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee15a4f1e542fb3bb65e12331f250750f0b26a4af27e0e511f5ff24c95552a98
|
|
| MD5 |
5a84d4f9c954b7ea34b799dfe5c322f5
|
|
| BLAKE2b-256 |
34bf583c3c0cee068f655ef1c6fcca7a4df0b85633b7c6695fa4a5e93fcfe9f5
|
File details
Details for the file pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- 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.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0547b704376547ead4c39914fe063fb8b12ae6ff95ef43831d20bf8eb4e649c
|
|
| MD5 |
5bb3eac994e2063a39b6890d3865b429
|
|
| BLAKE2b-256 |
46343fdee0e13cb4eca48d359f164fb8ddd1a4672cccdbf70822913e8b95bbfe
|
File details
Details for the file pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b59112a4fe708b0369f9b1a84eea3ab8cfbb4cd581fb66740991177e68189b9
|
|
| MD5 |
b36bc25ed1e18a0d335993f109c0367a
|
|
| BLAKE2b-256 |
4b5a23043ae6fbfec4318ae1f13533c39dcf06cf61aab05c24935453f1417fa7
|