-
Notifications
You must be signed in to change notification settings - Fork 0
Devlopment
- Overview: A brief introduction to the tool's architecture, highlighting its design principles and core components.
- Component Diagram: An optional diagram illustrating the tool's components and their interactions, providing a visual understanding of the system's architecture.
MAGI leverages several key Python libraries to provide its functionality. Understanding these libraries will help you grasp how MAGI works under the hood and how to extend its capabilities.
-
Jinja2: A modern and designer-friendly templating language for Python, modeled after Django’s templates. It is fast, widely used, and secure. Jinja2 is used in MAGI for generating dynamic content for the web UI and other templated outputs.
-
Streamlit: An open-source app framework for Machine Learning and Data Science projects. In MAGI, Streamlit powers the interactive web UI, allowing for rapid prototyping and easy deployment of data applications.
-
Dacite: A library for simple creation of data classes from dictionaries. It's used in MAGI for data serialization and deserialization, making it easier to work with complex data structures across different components of the framework.
-
Pluggy: A minimalist production-ready plugin system. Pluggy allows MAGI to have a modular architecture, enabling plugins and modules to extend or modify the core functionality without needing to change the core codebase.
MAGI’s directory structure is organized to facilitate easy navigation and development. Here’s a breakdown of the main directories and their purposes:
-
docs/: Contains documentation files, currently it only contains the image files for used in wiki.
-
logs/: Stores log files generated by MAGI. Useful for debugging and monitoring the application’s behavior.
-
magi/: The core directory where the MAGI framework’s source code resides. It contains the main logic, models, and functions that constitute the MAGI application.
-
mock/: Contains mock data and testing utilities that simulate various components of MAGI for development and testing purposes.
-
modules/: Houses the modules developed for MAGI. Each module is a self-contained unit adding specific functionality or features to the MAGI ecosystem.
-
output/: Where MAGI saves generated outputs, such as reports, autograder files, and any other artifacts created by the application.
-
plugins/: Contains plugins that extend or enhance the functionality of MAGI. Like modules, plugins are self-contained and can be developed independently.
-
scripts/: A collection of utility scripts to support various development tasks, such as database migrations, batch processing, or maintenance routines.
-
settings/: Stores configuration files and settings for MAGI. These files define important parameters that affect the application’s behavior and features.
-
static/: Contains static assets used by the web UI, such as CSS stylesheets, JavaScript files, and images.
-
tests/: Includes unit tests, integration tests, and other testing scripts designed to ensure the quality and reliability of MAGI’s codebase.
-
webui/: The directory for MAGI's web UI components, built with Streamlit. This is where the interactive user interface is developed and maintained.
-
workdir/: A workspace directory where temporary files or in-progress work is stored. This can include session data, temporary outputs, and other transient files.
-
main.py: The entrypoint to MAGI.