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.1

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.1
File Size Uploaded Provenance
appflows-1.1.1.tar.gz 1.3 MB Without provenance Details

Built distribution (wheel)

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

Total release size: 1.4 MB

Release files / appflows-1.1.1.tar.gz

Download URL appflows-1.1.1.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
1876955453b285ae3fd66a99c83d4375607a67779710876f8a605245d68bff2c
BLAKE2b-256 checksum
How to use checksums
cdb51a354b2602362b961aef396c2b49040d753048e568869f7ad71151e3f2c7
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.1-py3-none-any.whl

Download URL appflows-1.1.1-py3-none-any.whl
Size 89.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3feb4608dbf7aacac1aeb950a26e99dcba2c335c1c1158a33e189ff42ab13599
BLAKE2b-256 checksum
How to use checksums
e0588c40fdbdaefb0306e5c8611153fc80132d9a567e9da6f3ca9c7754a274d8
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}

Security for appflows 1.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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