Metadata-Version: 2.4
Name: FedModelKit
Version: 0.8.0
Summary: Tools to scaffold and run privacy-preserving federated learning experiments across distributed data sites.
Author-email: ceresale <alessandro.ceresi@upm.es>
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: flwr-datasets>=0.5.0
Requires-Dist: flwr[simulation]>=1.17.0
Requires-Dist: mlflow>=3.10.1
Requires-Dist: pandas>=2.3.0
Provides-Extra: edge
Description-Content-Type: text/markdown

# 🌐 FedModelKit (fmk)

**FedModelKit** is a Python library designed to streamline the execution of **federated learning tasks** within a network of collaborating partners.  
It provides a guided workflow that helps users quickly set up experiments, manage dependencies, and follow step-by-step instructions through generated resources.

---

## 📑 Table of Contents
- [Overview](#-overview)
- [Features](#-features)
- [Dependencies](#-Dependencies)
- [Installation](#-installation)
- [Quick Start](#-quick-start)
- [Next Steps](#-next-steps)
- [License & Commercial Use](#-license--commercial-use)

---

## 🔎 Overview

Federated learning enables multiple partners to train machine learning models collaboratively **without sharing raw data**.  
The **FedModelKit** library simplifies this process by:

- Automating project initialization  
- Creating a reproducible experiment directory with all required dependencies
- Offering a clear, step-by-step workflow to run experiments in a federated network    

---

## 🧩 Dependencies

These are the dependencies of the packages, including the required Python version:

| Dependency        | Version     | Description                                      |
|-------------------|------------|--------------------------------------------------|
| **Python**        | >=3.12        | Required Python interpreter version              |
| `flwr[simulations]` | ==1.17.0  | Federated learning framework and simulations with Flower |
| `flwr_datasets`   | >=0.5.0     | Datasets compatible with Flower                  |
| `mlflow`          | >=3.1.1     | For experiment tracking and logging              |
| `pandas`          | >=2.3.0     | Data manipulation and analysis                   |


---

## ⚙️ Installation

It is recommended to install `FedModelKit` inside a virtual environment.  
We suggest using [uv](https://github.com/astral-sh/uv) for fast and reproducible setups:


1. Create and activate a virtual environment
    ```bash
    uv venv
    source .venv/bin/activate
    ```
    or in case of Windows OS
    ```bash
    uv venv
    .venv\Scripts\activate
    ```

2. Install `FedModelKit`
    ```bash
    uv pip install FedModelKit

    ```

## 🚀 Quick Start

Initialize a new federated learning experiment with:

```bash
fmk init -n my_experiment

```
This will generate in the present directory the project for a new FL experiment.

## 📖 Next Steps

👉 Once the experiment directory has been created, open the file `README.md` that has been generated in your directory and follow the guided workflow to set up and run your federated learning tasks.

---
---

## ⚖️ License & Commercial Use

This software is **Source Available** and distributed under a **Dual Licensing** model.

### 🎓 Non-Commercial Use (Community)
This project is free for personal use, education, non-profit organizations, and academic research under the **PolyForm Noncommercial License 1.0.0**.

* ✅ You can read, modify, and execute the code.
* ✅ You can use it for personal and research projects.
* ❌ You may **NOT** use it for commercial purposes or in business environments without a commercial license.

Check the [LICENSE](LICENSE) file for full terms.

### 💼 Commercial Use (Businesses)
If you wish to use this software in a commercial product, a business, or any revenue-generating environment, **you must purchase a Commercial License**.

The Commercial License grants you:
* The right to use the software in commercial production environments.
* Exemption from the PolyForm license restrictions.
* Priority support (optional).

📩 **To purchase a license, please contact us at:** federico.alvarez@upm.es