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+ License: MIT

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

Licence

MIT — voir 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

py_gpi-2.0.0.tar.gz (63.6 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.0-py3-none-any.whl (77.8 kB view details)

Uploaded Python 3

File details

Details for the file py_gpi-2.0.0.tar.gz.

File metadata

  • Download URL: py_gpi-2.0.0.tar.gz
  • Upload date:
  • Size: 63.6 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.0.tar.gz
Algorithm Hash digest
SHA256 d2d4bc3ac6dbe44125d293686d49f9834b0d6b6e19adfe7ed5a0744c2c239d77
MD5 e290cbdc641586ffbe19565d8381bf62
BLAKE2b-256 da7476713baff15cb73d32b61b89246fa376ddb5ec7e89f6c4dafc053e1498e2

See more details on using hashes here.

File details

Details for the file py_gpi-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: py_gpi-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 77.8 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b714ec0cc837ef30c3455207905bbdd6347240de9237db11d26d6614002fa13
MD5 866a0a12e27dc63b559a470237cb278d
BLAKE2b-256 4454e37155aa2bc761f233ba9c4fd7d6262efddcaf190f96ed49622a6de82238

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