Files
Master 943acbc573 feat: referentiel projets dynamique + validation nommage by design
Durcit la convention de nommage des projets (dérive constatée : 'Sliding
Automation', 'code_versioning'... au lieu des formes canoniques).

- trilium_api.py : projets_canoniques() lit le référentiel = valeurs du label
  projet sur les notes de type=projet (source unique, pas de constante en dur).
  Note-projet CodeVersioning créée (manquait).
- mcp_server.py : _valider_projet() branché dans les 6 tools de création
  (add_decision/history/backlog, new_conversation, create_entite, add_skill).
  Refuse un projet non canonique (suggestion si faute) ou inconnu (renvoi au
  processus de création de projet). Ne verrouille pas si référentiel illisible.
- lint_audit.py : VAL-nommage aligné sur le référentiel (attrape casse, espace
  ET snake_case ; l'ancien 'contient un espace' ratait code_versioning).
- Données : 79 notes ré-étiquetées vers les 3 formes canoniques.

Quality by design : l'erreur de nommage devient impossible à l'écriture, le
Lint n'est plus que le filet de sécurité.
2026-07-17 14:59:33 +02:00

134 lines
5.0 KiB
Plaintext

Metadata-Version: 2.1
Name: wavedrom
Version: 2.0.3.post3
Summary: WaveDrom compatible python command line
Home-page: https://github.com/wallento/wavedrompy
Author: Aliaksei Chapyzhenka, BreizhGeek, Kazuki Yamamoto, Stefan Wallentowitz
Author-email: k4zuki@github.com, stefan@wallentowitz.de
License: UNKNOWN
Keywords: wavedrom svg
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
Provides-Extra: test
License-File: LICENSE
# WaveDromPy
This is a python module and command line fully compatible with [WaveDrom](https://wavedrom.com/), which is originally implemented in JavaScript. It is useful if you want to generate wavedrom diagrams from a python environment or simply don't want to install the _Node.js_ environment just to use WaveDrom as simple command line.
WaveDromPy is for example used in [sphinxcontrib-wavedrom](https://pypi.org/project/sphinxcontrib-wavedrom/) to render wavedrom for Sphinx documentation. While the original project renders the diagrams in JavaScript in the browser, WaveDromPy renders them to SVG files.
This tool is a direct translation of original Javascript file _WaveDrom.js_ to Python. No extra feature added. We seek to have it fully compatible.
The tool _WaveDromPy_ directly converts _WaveDrom_ compatible JSON files into SVG format.
[![Build Status](https://travis-ci.org/wallento/wavedrompy.svg?branch=master)](https://travis-ci.org/wallento/wavedrompy)
[![PyPI version](https://badge.fury.io/py/wavedrom.svg)](https://badge.fury.io/py/wavedrom)
## Installation
It is most easy to just install wavedrom via pip/pypi:
pip install wavedrom
Alternatively you can install the latest version from this repository:
pip install git+https://github.com/wallento/wavedrompy
or from your local copy:
pip install .
## Usage
You can either use the tool from Python:
import wavedrom
svg = wavedrom.render("""
{ "signal": [
{ "name": "CK", "wave": "P.......", "period": 2 },
{ "name": "CMD", "wave": "x.3x=x4x=x=x=x=x", "data": "RAS NOP CAS NOP NOP NOP NOP", "phase": 0.5 },
{ "name": "ADDR", "wave": "x.=x..=x........", "data": "ROW COL", "phase": 0.5 },
{ "name": "DQS", "wave": "z.......0.1010z." },
{ "name": "DQ", "wave": "z.........5555z.", "data": "D0 D1 D2 D3" }
]}""")
svg.saveas("demo1.svg")
This will render a waveform as:
![Example 1](https://raw.githubusercontent.com/wallento/wavedrompy/2e8568d50561f534133d036fee3bd35756f416d9/doc/demo1.svg?sanitize=true "Example 1")
You can find more examples [in the WaveDrom tutorial](https://wavedrom.com/tutorial.html).
A second feature is that WaveDrom can render logic circuit diagrams:
import wavedrom
svg = wavedrom.render("""
{ "assign":[
["out",
["|",
["&", ["~", "a"], "b"],
["&", ["~", "b"], "a"]
]
]
]}""")
svg.saveas("demo2.svg")
This will render a as:
![Example 2](https://raw.githubusercontent.com/wallento/wavedrompy/2e8568d50561f534133d036fee3bd35756f416d9/doc/demo2.svg?sanitize=true "Example 2")
You can find more examples [in the WaveDrom tutorial2](https://wavedrom.com/tutorial2.html).
Finally, wavedrom can draw registers as bitfields:
import wavedrom
svg = wavedrom.render("""
{"reg": [
{ "name": "IPO", "bits": 8, "attr": "RO" },
{ "bits": 7 },
{ "name": "<o>B</o><b>R<i>K</i></b>", "bits": 5, "attr": "RW", "type": 4 },
{ "name": "CPK", "bits": 1 },
{ "name": "Clear", "bits": 3 },
{ "bits": 8 }
]
]}""")
svg.saveas("demo3.svg")
This will render as:
![Example 3](https://raw.githubusercontent.com/wallento/wavedrompy/2e8568d50561f534133d036fee3bd35756f416d9/doc/demo3.svg?sanitize=true "Example 3")
This mode is documented as part of the [bit-field](https://www.npmjs.com/package/bit-field) JavaScript package.
Alternatively, WaveDromPy can be called from the command line:
wavedrompy --input input.json --svg output.svg
## Important notice
The command line uses Python's JSON interpreter that is more restrictive (coherent with the JSOC spec), while the JavaScript json is more relaxed:
* All strings have to be written between quotes (""),
* Extra comma (,) not supported at end of lists or dictionaries
## AsciiDoctor example
An _AsciiDoctor_ example is provided to directly generate timing diagrams from _AsciiDoctor_ formatted documents.