Skip to main content

FrameworkAPI, a Modular Framework Runner

Shows an illustrated sun in light mode and a moon with stars in dark mode.

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:


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)

Source distribution for frameworkapi 0.0.6.7
File Size Uploaded
frameworkapi-0.0.6.7.tar.gz 11.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for frameworkapi 0.0.6.7
File Interpreter ABI Platform
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
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