Skip to main content

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.

Python 3.9+

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 + Alembic
  • database-mysql — MySQL/MariaDB + SQLAlchemy

Cache & Files

  • cache-redis — Redis
  • queue-celery — Celery (requiert cache-redis)
  • queue-rq — Redis Queue (requiert cache-redis)

Infrastructure

  • docker — Dockerfile + .dockerignore
  • docker-compose — docker-compose.yml
  • github-actions — CI/CD GitHub Actions

Qualité & Monitoring

  • tests-pytest — Pytest + pytest-cov
  • monitoring-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

py_gpi-2.0.4.tar.gz (63.8 kB view details)

Uploaded Source

Built Distribution

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

py_gpi-2.0.4-py3-none-any.whl (77.6 kB view details)

Uploaded Python 3

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

Hashes for py_gpi-2.0.4.tar.gz
Algorithm Hash digest
SHA256 89d79a93cf24599d74cf5e4db8986aa8b9b3d7a8482156beae1b27fde3e1f8de
MD5 7cdd0cdab6dbdaad3c3393f9e3c05e64
BLAKE2b-256 796293c80c25f411f37f8de48994e1e061a708fc816d5925f8e5b611672a1f5e

See more details on using hashes here.

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

Hashes for py_gpi-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5d4f6b722d2e11f5d1ee06851aff1f0185b443c85a88ce512b29d035e307ede8
MD5 fc6afed1c2bbd23917aadc9ae9cc1c1a
BLAKE2b-256 f14c3f02f354d608518ace0646e5186faa1c889c0a6efa11c1672945a5e69bd9

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