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.2.tar.gz (64.3 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.2-py3-none-any.whl (78.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_gpi-2.0.2.tar.gz
  • Upload date:
  • Size: 64.3 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.2.tar.gz
Algorithm Hash digest
SHA256 f9246dd6280407b79cb59b6a4b44ded138925cda1403f2e111ebdc4356e37d5f
MD5 b511516b776c995e0527d78248ec440b
BLAKE2b-256 22672da23ef36f0de671e4be4d64e62da56f6e2c72bbb1001fe1648f4a3254b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_gpi-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 78.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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d1e3efb3d90bc1be10f983bbb729e3ad1c662a849e1effe74ec34ba132250d91
MD5 5b5ef2991160d73e97c3b4f8700b1791
BLAKE2b-256 109de0ac505dc88695c63317eb40d7d0d4829cc3aef5103681411615fdfa9358

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