Python module to easily run scripts in modular frameworks Written by pedrohenriquecoimbra
Project description
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! ✨
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 Distribution
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 frameworkapi-0.0.6.6.3.tar.gz.
File metadata
- Download URL: frameworkapi-0.0.6.6.3.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6179d2199540f26d816606a961f359f0709e649c485d4b894fd2335362b77712
|
|
| MD5 |
728564c2c95e7246b39808edfa86d205
|
|
| BLAKE2b-256 |
8172ee6a9687293a5c4b6716c3ca3631a9db1c3113d526c7017d8ba37199410e
|
File details
Details for the file frameworkapi-0.0.6.6.3-py3-none-any.whl.
File metadata
- Download URL: frameworkapi-0.0.6.6.3-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4693b61129447437f293ec75fbc6306f42ae5c8483d0b2a90f491703e5429434
|
|
| MD5 |
8d8cc9ca24ee061c5c40a45bac6f7f79
|
|
| BLAKE2b-256 |
14aea98bdc3941f3c32b43813038f4fef57545cd06e02e20dde2dcce8cb7b846
|