Skip to main content

Package for creating ETL environments for data analysis

Reason this release was yanked:

deprecated

Project description

Fragua

Fragua is a modular Python library for modeling and orchestrating ETL / ELT workflows through explicit execution environments, strong domain boundaries, and a centralized orchestration model.

Fragua is designed as an educational and experimental framework focused on clarity of architecture, predictable execution, and explicit responsibility separation.


Core Concept

In Fragua, everything happens inside an Environment.

An Environment represents an isolated execution context that owns:

  • Component lifecycle and configuration
  • Security and execution boundaries
  • Runtime state and metadata
  • Data persistence and traceability

Agents do not exist or operate independently.
They are created, configured, and executed exclusively within an Environment.


Environment Responsibilities

The Environment is the central orchestrator of the system. It is responsible for:

  • Initializing the Warehouse
  • Managing action contexts: extract, transform, load
  • Registering and resolving all components
  • Enforcing security and execution boundaries
  • Providing a unified API for component lifecycle management
  • Exposing a structured summary of the runtime state

Multiple environments can coexist, each representing a separate pipeline, experiment, or workflow.


Unified Component Management

All components in Fragua are managed through a single, unified CRUD API exposed by the Environment.

Components are always resolved by:

  • Action (extract, transform, load)
  • Component type (agent, params, function, style)

This applies consistently to all operations:

  • Create
  • Read
  • Update
  • Delete

This design avoids duplicated logic, reduces coupling, and guarantees consistent behavior across the system.


Agents and Execution Model

Fragua defines three agent roles:

  • Extractor — Retrieves data from external sources
  • Transformer — Applies transformations or enrichment logic
  • Loader — Persists or delivers processed data

Agents:

  • Are instantiated exclusively by the Environment
  • Receive mandatory execution credentials
  • Resolve configuration only through registered components
  • Interact with data exclusively via the Warehouse
  • Follow a standardized execution workflow

Agents act as controlled executors, not as owners of state or configuration.


Security Model

Fragua enforces an explicit internal security model:

  • The Environment issues execution credentials
  • Agents consume credentials to operate
  • The Warehouse validates credentials for protected operations

This guarantees that no agent can execute or access data outside a valid environment context.


Domain-Driven Typing

Fragua uses a strongly typed, enum-based domain vocabulary.

Enums define all core concepts, including:

  • Actions and component types
  • Agent roles
  • Storage and target types
  • Operations, fields, and attributes

This approach:

  • Eliminates magic strings
  • Centralizes validation
  • Improves IDE support and static analysis
  • Provides a clear and extensible domain language

Concise enum aliases are exported for ergonomic usage without sacrificing type safety.


Component Architecture

Fragua follows a layered component model:

  • FraguaComponent
    Base abstraction for all registrable elements.

  • FraguaSet
    Generic in-memory container responsible for:

    • CRUD operations
    • Validation
    • Summaries
  • FraguaRegistry
    Runtime structure that groups multiple FraguaSet instances by action and component type.

This separation ensures clarity between existence, organization, and orchestration.


Warehouse and Data Traceability

Each Environment owns a Warehouse, which acts as the single source of truth for data artifacts.

The Warehouse provides:

  • Controlled data operations
  • Full movement logging with timestamps
  • Undo support for destructive actions
  • Metadata-based summaries and inspection

Key Characteristics

  • Environment-centric orchestration
  • Unified component lifecycle management
  • Explicit security boundaries
  • Strongly typed domain model
  • Isolated execution contexts
  • Centralized storage and traceability
  • Clear separation of responsibilities

Project Structure

Project Structure

fragua/
├── core/
├── environments/
├── extract/
├── transform/
├── load/
├── utils/
└── __init__.py

Installation

python -m pip install -e .

⚠️ Fragua is published on PyPI for learning purposes.
It is not recommended for production use yet.


Author

Santiago Lanz
🌐 https://sagodev.github.io/Portfolio-Web-Santiago-Lanz/
💼 https://www.linkedin.com/in/santiagolanz/
🐙 https://github.com/SagoDev


License

MIT License

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

fragua-0.7.0.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

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

fragua-0.7.0-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file fragua-0.7.0.tar.gz.

File metadata

  • Download URL: fragua-0.7.0.tar.gz
  • Upload date:
  • Size: 40.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fragua-0.7.0.tar.gz
Algorithm Hash digest
SHA256 ce30c22c211141ebb664d5e4567de6d0012755e81eb1a4b883c5878fbc956c43
MD5 1e837868dfca96590b835c50b3a8bba5
BLAKE2b-256 506f3d4a2c12684c1b64f59360cb233090249c3bb82f720ed5f06a35adad94d7

See more details on using hashes here.

File details

Details for the file fragua-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: fragua-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 56.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fragua-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc2eedb57a9c5224960a696dd5f27463c29e4f93c1b61a9191835672668dd121
MD5 e564195977bcf7dbd316763bf6f36de4
BLAKE2b-256 4bb5f5524d03007b6afd0459d89bf32b46c0b8035fdd9fbbc77e524346fad2e5

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