Skip to main content

pascua

PyPI Read the Docs Travis (.org) branch Coveralls github GitHub GitHub stars

Description

Python library to perform code execution in fully isolated environments.

IMPORTANT: This repository is in the early stage of development, so its not recommended to be used yet. Nevertheless, contributions are welcome!

Installation

You can install the latest pascua version via pip:

pip install pascua

How it works?

pascua allow us to perform code executions in isolated environments through containerization techniques. The main idea is that pascua builds a docker image with the given parameters defined in the corresponding implementation of the Environment constructor.

When a call to exec(.) method is performed, it uses the generated docker image as the base in which it launches the proper interpreter or code compilation to execute the given source_code in combination with the variables defined in the context dictionary.

Usage

Python Environment

import pascua as psc

context = {
    'size': 100,
}

source_code = [
    'import numpy as np',
    'random_numbers = np.random.uniform(size=size)',
]

env = psc.PythonEnvironment(
    version='3.7.3', 
    pip_dependencies=[
        'numpy>=1.14.0',
    ]
)

result = env.exec(source_code, context)

R Environment

import pascua as psc

context = {
    'size': 100,
}

source_code = [
    'random_numbers <- runif(n = size)',
]

env = psc.REnvironment(
    version='latest',
)

result = env.exec(source_code, context)

C++ Environment

import pascua as psc

context = {
    'size': 100,
}

source_code = [
    'float r;',
    'vector<float> random_numbers;',
    'for (int i = 0; i < size; i++) {',
    '  r = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);',
    '  random_numbers.push_back(r);',
    '}',
]

env = psc.CCEnvironment(
    version='latest',
    includes=[
        'vector',
        'numeric',
    ]
)

result = env.exec(source_code, context)

Development

You can install it simply typing:

python setup.py install

To run the tests perform:

python -m unittest discover tests

License

Metadata

Release files for pascua 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pascua 0.0.2
File Size Uploaded
pascua-0.0.2.tar.gz 3.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pascua 0.0.2
File Interpreter ABI Platform
pascua-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 9.5 kB

Release files / pascua-0.0.2.tar.gz

Download URL pascua-0.0.2.tar.gz
Size 3.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8cbd638842d04be73f10e1ae4ad511f7f95f65557e7e2f8295c28979f3debaa9
BLAKE2b-256 checksum
How to use checksums
efd8a206a80106e91bee80fac598a6cd49a34f6150f7ae64020fe2c2511a19d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1

Release files / pascua-0.0.2-py3-none-any.whl

Download URL pascua-0.0.2-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c9a8b34282fb8443fc923f3f6f5c9fb2a64f77f734179cb9a0364c0789433b01
BLAKE2b-256 checksum
How to use checksums
137e02a0d4aa2a069adb3ff8ff66c8e4c87f49e32a3f8a7b3f94509ce0754fc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page