Skip to main content

appflows

Génération de schémas d'architecture SVG à partir d'un simple fichier YAML ou JSON : on décrit les applications et les flux, la bibliothèque place les boîtes, trace les flèches et écrit le dessin.

apps:
  m     : "Dossier patient"
  urg   : "Urgences"
  labo  : "Laboratoire"
  ville : "Médecine de ville"
bus:
  esb : "EAI Santé"
main: m
flows_def:
  - urg -(mllp:2575)-> esb --> m [admissions]
  - labo -(sftp:22)-> esb --> m [résultats]
  - m --> esb -(mllp:2575)-> ville [comptes rendus]
  - ville --> m [identités](https://example.org/identites)

Schéma de flux

Aucun placement n'est à donner : ni coordonnées, ni tailles, ni ordre des colonnes. C'est examples/yaml/patient.yaml, rendu ici sans sa clé type — celle qui choisit le diagramme.

Deux types de diagramme

La clé type choisit ce qui est raconté, et le suffixe +tech jusqu'où on descend. La même définition sert aux deux lectures : les détails techniques s'écrivent une fois, et le type décide de les montrer ou non.

appli — le schéma de flux. Une application centrale, les autres de part et d'autre. C'est l'exemple ci-dessus.

+tech — la couche technique. Chaque protocole devient un connecteur posé sur le bord de la boîte où sa flèche arrive, le port écrit à côté. Voici la même définition, au mot près, avec type: appli+tech :

Le même schéma, avec sa couche technique

doctype — le schéma de document. Pas de centre : le schéma suit un type de document, ceux qui le produisent à gauche, ceux qui le consomment à droite. Ici en doctype+tech, depuis examples/yaml/resultats.yaml :

Schéma de document

Un flux peut traverser un ou plusieurs bus d'intégration, porter un lien cliquable, et chaque application une étiquette. Le détail des quatre valeurs et de tout ce qui s'écrit dans une définition est dans docs/formats.md.

Installation

pip install appflows              # bibliothèque + commande
pip install appflows[png]         # + export PNG (cairosvg)
pip install appflows[ui]          # + éditeur web (FastAPI)

Trois façons de s'en servir

En ligne de commande

Un répertoire de définitions en entrée, un schéma par fichier en sortie.

appflows -i mes-schemas -o resultats -c config.yaml --overwrite

Options, codes de retour et journal : docs/cli.md.

Depuis Python

from appflows import Generator

g = Generator()
g.load_data("examples/yaml/patient.yaml")
g.load_config("examples/yaml/config.yaml")  # facultatif

svg = g.graph()

Les définitions s'écrivent aussi en objets, sans passer par un fichier. Seize exemples commentés, chacun avec son rendu, et la liste des noms exportés : docs/api.md.

Dans un éditeur web

appflows-ui          # http://localhost:8080

Deux panneaux YAML, l'aperçu à côté, l'export en SVG ou PNG. Rien n'est écrit côté serveur, et aucune ressource n'est chargée depuis Internet. Réglages, limites et API : docs/ui.md.

En conteneur

L'éditeur et le traitement par lot se construisent aussi en images OCI, vérifiées sans privilège avant d'être exportées :

scripts/build_container.sh --image all   # les deux images, exportées dans dist/
scripts/run_container.sh                 # l'éditeur, confiné, sur http://127.0.0.1:8080/

Construction, confinement et exposition derrière un mandataire : docker/README.md.

Habiller le schéma

Couleurs, dimensions, polices et marges se règlent dans un second fichier, facultatif, organisé par sujet — page, app, main, flow, tag, bus, connector :

app:
  colors: {text: '#0050ef', stroke: '#6c8ebf', fill: '#dae8fc'}
flow:
  label:
    font_size: 12

Les clés omises gardent leur valeur par défaut. examples/yaml/config.yaml les contient toutes, et docs/formats.md § 4 décrit chaque paramètre.

Documentation

  • Formats d'entrée — les types de diagramme, la définition clé par clé, la disposition, la configuration, et les messages de diagnostic.
  • Utiliser la bibliothèque depuis Python — seize exemples commentés, du plus court chemin au traitement par lot, chacun avec son rendu, et l'API publique.
  • La commande appflows — le traitement par lot, ses options et ses codes de retour.
  • L'éditeur web — la page, les variables d'environnement, les limites et l'API.
  • Fonctionnement et algorithme — les cinq étapes de la génération, les formules de placement, un exemple chiffré et les limites connues.
  • Développement — la barrière qualité, les suites de tests, la régénération des images.
  • Analyses de qualité — une passe par fichier daté : constats retenus, faux positifs confirmés, et la méthode pour rejouer les outils.
  • Publier sur PyPI — comptes, jetons, numérotation, répétition sur TestPyPI et marche à suivre.

Développement

uv sync --all-extras --group dev
uv run pytest
scripts/check.sh            # ruff, pyright, pytest — la barrière complète

Le détail est dans docs/developpement.md.

Licence

MIT — voir LICENSE.

Metadata

Release files for appflows 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for appflows 1.1.0
File Size Uploaded
appflows-1.1.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for appflows 1.1.0
File Interpreter ABI Platform
appflows-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / appflows-1.1.0.tar.gz

Download URL appflows-1.1.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
9c0cff3f2707d69ca7f2cf68311d247892aaf96dc6f40b64617c08c5198d31e7
BLAKE2b-256 checksum
How to use checksums
e06522caaa3d1e343828e1758fe816ac42e88c1a6af53dd90484203673f8eff4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / appflows-1.1.0-py3-none-any.whl

Download URL appflows-1.1.0-py3-none-any.whl
Size 89.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01e7e465e4e38e087ce6c9479ed0512cc68a2ecdcdd79b3a8b9165913572e817
BLAKE2b-256 checksum
How to use checksums
0f6582b0994ed417d6073f5ad1ca4fec94f4320fbff0bc15e29903523d9be60d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page