FrameworkAPI, a Modular Framework Runner
A Python module for creating fully modular and extensible workflows by combining scripts in different languages, managing YAML-based configurations, and offering an API for seamless integration.
Features
🚀 Script Runner
Easily run scripts written in Python, R, or Julia with dynamic argument support.
- Automatic Language Detection: Identify script type and invoke the appropriate runtime (e.g.,
python,Rscript,julia). - Flexible Argument Passing: Pass command-line arguments directly to scripts for parameterized execution.
- Robust Error Handling: Logs and handles errors during script execution.
📜 YAML Configuration Handler
Effortlessly parse, validate, and manage YAML files with cross-references.
- Dynamic Parsing: Load YAML configurations into Python objects.
- Cross-Reference Resolution: Automatically resolve dependencies between keys within a single file or across multiple files.
- Flexible Configuration Management: Merge or extend YAML files to build modular workflows.
🛠 High-Level API for Script Execution
A simple API to link scripts and configurations for easy execution.
- Script Discovery: Fetch script paths and parameters from the YAML configuration.
- Workflow Automation: Execute scripts dynamically based on configuration settings.
- Extensibility: Add hooks for pre- and post-processing or extend functionality as needed.
Installation
pip install FrameworkAPI
Quickstart
1️⃣ Define Your Configuration (config.yaml)
scripts:
preprocess:
path: "scripts/preprocess.py"
args:
input_file: "data/raw.csv"
output_file: "data/processed.csv"
analyze:
path: "scripts/analyze.R"
args:
input_file: "data/processed.csv"
report_file: "results/report.html"
workflow:
- preprocess
- analyze
2️⃣ Run Scripts Using the API
from FrameworkAPI import FrameworkAPI
# Load configuration
framework = FrameworkAPI("config.yaml")
# Execute the entire workflow
framework.run_workflow()
# Or execute a single script by name
framework.run_script("preprocess")
3️⃣ Seamlessly Handle Multiple Languages
The module automatically detects the script type and runs the appropriate interpreter:
.py→python.R→Rscript.jl→julia
Directory Structure
project/
├── config.yaml # Your YAML configuration file
├── scripts/ # Directory for scripts
│ ├── preprocess.py # Python script
│ ├── analyze.R # R script
├── results/ # Output directory
└── main.py # Main Python script
Advanced Features
-
Cross-References in YAML: Use references to reuse values across the configuration.
data_dir: "data/" scripts: preprocess: input_file: "${data_dir}raw.csv" output_file: "${data_dir}processed.csv"
-
Custom Hooks: Add pre- or post-processing logic in Python for additional control.
Contributing
We welcome contributions! Please submit a pull request or open an issue for bug reports, feature requests, or questions.
License
This project is licensed under the MIT License.
Contact
Feel free to reach out for support or collaboration:
- Email: pedro-henrique.herig-coimbra@inrae.com
- GitHub: GitHub Repository
Happy scripting! ✨
Metadata
Release files for frameworkapi 0.0.6.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| frameworkapi-0.0.6.7.tar.gz | 11.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| frameworkapi-0.0.6.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.1 kB
Release files / frameworkapi-0.0.6.7.tar.gz
| Download URL | frameworkapi-0.0.6.7.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89ac9441ed3c3db17c7e27a84139dfb7b12ffdff779974b41ffa78184c93a582
|
|
BLAKE2b-256 checksum How to use checksums |
2df0a84b6b3586597158718f68688aba841ad2f90e6aa34acafb108780985876
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.12
|
Release files / frameworkapi-0.0.6.7-py3-none-any.whl
| Download URL | frameworkapi-0.0.6.7-py3-none-any.whl |
|---|---|
| Size | 11.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73a45926ebe76ba59d01075ee7acc9c3cad637539ed7876f9f0b48e777e87e77
|
|
BLAKE2b-256 checksum How to use checksums |
ebfc4aa06b4bac7474fa613f39857f44495714d410f95be59c6a253a83da61fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.12
|