Skip to main content

Python interface library for the libcapio library

Project description

PyCAPIO

codecov CI Tests PyPI version Python

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

  1. 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
    
  2. 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")
    
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycapio-0.0.2.tar.gz (37.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

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

pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

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

pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

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

pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

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

pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.7 MB view details)

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

pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (6.3 MB view details)

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

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

Hashes for pycapio-0.0.2.tar.gz
Algorithm Hash digest
SHA256 3edbba6a64c0c4974e29e39ca142260972d34021dd008137dd90b0d65d86987f
MD5 fec5a6ae8f5fd37a5dea3251cb27b84d
BLAKE2b-256 f66ff89dba1927298914254481bb9a0dcf1de133e07b13ad9d734214219d8876

See more details on using hashes here.

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

File hashes

Hashes for pycapio-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 404ed45eed834d6fcb20a28f8bc83d189f8ac6455314b43254b18c970991da31
MD5 ac5d96ca5ff55f075096dcb8c6d2e06d
BLAKE2b-256 de9988ed35b8e6f64e6cff244aeb594212faadbde7e94e492903cc237ce95ae5

See more details on using hashes here.

File details

Details for the file pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pycapio-0.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 37c005da26669264dc9b0e28971d8d71548bc2414fa61c1bd8aa97a258908f72
MD5 f1c919da4bc8ee1dc9d0d61114d5a6f0
BLAKE2b-256 e943ce21581e260cc7a6665435bb9c011a68f85843e208a1ec072f61dfcf167c

See more details on using hashes here.

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

File hashes

Hashes for pycapio-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 202289ea210e92176b96dcd84f13f656459e291937c51a323326829ef725bc83
MD5 529d0c56c862b7a64df3612a75635873
BLAKE2b-256 0cc3e7363d075f207c3b9cc3fe244c2640af18b6afe643c4014585a828a938a5

See more details on using hashes here.

File details

Details for the file pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pycapio-0.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c38c2d0b355cd834a1d56d3efde46cfaaf342c002605c33f7ff767374ea1d75
MD5 9190a566aecb2ce7fc911bdd4cbfede7
BLAKE2b-256 717365689202f72a018e1e2ae0a50347fa013028a91b35dc5ae017f2ed9fa78b

See more details on using hashes here.

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

File hashes

Hashes for pycapio-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e59c8f32fa91ca5e8faa1c435f8cfe6bb887a892cdf75f0a18d77aae8def105
MD5 aba46d2c52d688d8c921ac247cbf66dc
BLAKE2b-256 808e529227fe56b2a756a33fb2559d03e16117d2084f7502885d5a05b21fb499

See more details on using hashes here.

File details

Details for the file pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pycapio-0.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd2771e8221592972de3941db93155b78b75212e0a44add304c640620f95c537
MD5 6ddae9b80263d3ef7d7b2beaad1880fa
BLAKE2b-256 184bacdcd17ba7c0164e69247fdb6477e6269ec3a2dde782acceec403bbef2e1

See more details on using hashes here.

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

File hashes

Hashes for pycapio-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c75ab7b4ffbf89d395f4ddfbf9e22763cee8d6e7ee2a4a10d60bb6fc78f61ec8
MD5 433ce54ea908d040dc09325875b9087f
BLAKE2b-256 1c444c1cd8dc08e999670c88a46490b1ba852db9fe54cf712edf63a87b424d14

See more details on using hashes here.

File details

Details for the file pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pycapio-0.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ee15a4f1e542fb3bb65e12331f250750f0b26a4af27e0e511f5ff24c95552a98
MD5 5a84d4f9c954b7ea34b799dfe5c322f5
BLAKE2b-256 34bf583c3c0cee068f655ef1c6fcca7a4df0b85633b7c6695fa4a5e93fcfe9f5

See more details on using hashes here.

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

File hashes

Hashes for pycapio-0.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0547b704376547ead4c39914fe063fb8b12ae6ff95ef43831d20bf8eb4e649c
MD5 5bb3eac994e2063a39b6890d3865b429
BLAKE2b-256 46343fdee0e13cb4eca48d359f164fb8ddd1a4672cccdbf70822913e8b95bbfe

See more details on using hashes here.

File details

Details for the file pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pycapio-0.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5b59112a4fe708b0369f9b1a84eea3ab8cfbb4cd581fb66740991177e68189b9
MD5 b36bc25ed1e18a0d335993f109c0367a
BLAKE2b-256 4b5a23043ae6fbfec4318ae1f13533c39dcf06cf61aab05c24935453f1417fa7

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