GPI — Générateur de Projet Intelligent pour Python backend
Project description
GPI — Générateur de Projet Intelligent v2
GPI est un compositeur de projets backend Python modulaire. Il résout les dépendances entre modules, garantit la reproductibilité via gpi.lock, et intègre une assistance IA Groq optionnelle.
Installation
pip install py_gpi
Avec support IA Groq :
pip install "py_gpi[ai]"
Démarrage rapide
CLI interactive
gpi init
Depuis un fichier de configuration
# gpi.yaml
name: monapi
framework: fastapi
architecture: monolithic
modules:
- auth-jwt
- database-postgres
- docker
language: fr
port: 8000
gpi init -c gpi.yaml
API Python
import gpi
project = gpi.compose(
name="monapi",
framework="fastapi",
modules=["auth-jwt", "database-postgres"],
)
project.generate("./output")
Commandes CLI
| Commande | Description |
|---|---|
gpi init |
Génère un nouveau projet (interactif ou depuis fichier) |
gpi init -c gpi.yaml |
Génère depuis un fichier YAML ou TOML |
gpi add <module> |
Ajoute un module à un projet existant |
gpi upgrade [module] |
Met à jour un ou tous les modules |
gpi upgrade --dry-run |
Aperçu des changements sans écriture |
gpi replay gpi.lock |
Reproduit un projet depuis son lock |
gpi replay gpi.lock --check |
Valide le lock sans générer |
gpi explain [path] |
Explique le projet via IA (nécessite GROQ_API_KEY) |
gpi plugin list |
Liste tous les modules disponibles |
gpi plugin install <pkg> |
Installe un plugin depuis PyPI |
gpi plugin uninstall <pkg> |
Désinstalle un plugin |
gpi version |
Affiche la version de GPI |
Modules disponibles
Frameworks
framework-fastapi— FastAPI (async, recommandé pour API REST)framework-flask— Flask (léger, prototypes)framework-django— Django (tout-en-un)
Authentification
auth-jwt— JWT avec python-jose (FastAPI, Flask, Django)auth-sessions— Sessions (Flask, Django)auth-oauth2— OAuth2 avec scopes (FastAPI uniquement)
Base de données
database-sqlite— SQLite + SQLAlchemy + CRUD atomisédatabase-postgres— PostgreSQL + SQLAlchemy + Alembicdatabase-mysql— MySQL/MariaDB + SQLAlchemy
Cache & Files
cache-redis— Redisqueue-celery— Celery (requiert cache-redis)queue-rq— Redis Queue (requiert cache-redis)
Infrastructure
docker— Dockerfile + .dockerignoredocker-compose— docker-compose.ymlgithub-actions— CI/CD GitHub Actions
Qualité & Monitoring
tests-pytest— Pytest + pytest-covmonitoring-prometheus— Prometheus + Grafana (FastAPI, Flask)
Format gpi.yaml
name: monprojet # Obligatoire : lettres/chiffres/underscores, 2-49 chars
framework: fastapi # fastapi | flask | django
architecture: monolithic # monolithic | microservices
modules:
- auth-jwt
- database-postgres
description: "Mon API REST"
language: fr # fr | en
port: 8000 # 1024-65535
use_groq_ai: false # Active les suggestions IA
Reproductibilité avec gpi.lock
Chaque projet généré contient un gpi.lock versionnable :
# Reproduire exactement un projet
gpi replay gpi.lock --output ./nouveau_dossier
# Valider l'intégrité du lock
gpi replay gpi.lock --check
Intégration IA Groq (optionnelle)
export GROQ_API_KEY=votre-cle-groq
# Suggestions de modules basées sur la description
gpi init # Active use_groq_ai: true dans la config
# Explication du projet généré
gpi explain ./monprojet
GPI fonctionne entièrement hors-ligne sans GROQ_API_KEY.
Système de plugins
Créez et publiez vos propres modules GPI :
# pyproject.toml de votre plugin
[project.entry-points."gpi.modules"]
mon_module = "mon_package:MonModule"
# mon_package/__init__.py
from gpi.modules.base import Module, ModuleMetadata
class MonModule(Module):
@property
def metadata(self):
return ModuleMetadata(
id="mon-module",
name="Mon Module",
version="1.0.0",
description="Description",
frameworks=["fastapi"],
architectures=["monolithic"],
)
def get_dependencies(self):
return ["ma-dependance>=1.0.0"]
def get_files(self, config):
return {"mon_fichier.py": "# Contenu"}
pip install mon-plugin-gpi
gpi plugin list # Votre module apparaît automatiquement
Développement
git clone https://github.com/sossou-elkast/py_gpi
cd py_gpi
pip install -e ".[dev]"
pytest tests/ -v
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
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 py_gpi-2.0.4.tar.gz.
File metadata
- Download URL: py_gpi-2.0.4.tar.gz
- Upload date:
- Size: 63.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89d79a93cf24599d74cf5e4db8986aa8b9b3d7a8482156beae1b27fde3e1f8de
|
|
| MD5 |
7cdd0cdab6dbdaad3c3393f9e3c05e64
|
|
| BLAKE2b-256 |
796293c80c25f411f37f8de48994e1e061a708fc816d5925f8e5b611672a1f5e
|
File details
Details for the file py_gpi-2.0.4-py3-none-any.whl.
File metadata
- Download URL: py_gpi-2.0.4-py3-none-any.whl
- Upload date:
- Size: 77.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d4f6b722d2e11f5d1ee06851aff1f0185b443c85a88ce512b29d035e307ede8
|
|
| MD5 |
fc6afed1c2bbd23917aadc9ae9cc1c1a
|
|
| BLAKE2b-256 |
f14c3f02f354d608518ace0646e5186faa1c889c0a6efa11c1672945a5e69bd9
|