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é.
This commit is contained in:
2026-07-17 14:59:33 +02:00
parent d1e67431b6
commit 943acbc573
2425 changed files with 710525 additions and 6 deletions
@@ -0,0 +1,45 @@
Copyright (c) 2012, Manfred Moitzi
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Deutsche Übersetzung:
Copyright (c) 2012, Manfred Moitzi
Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software
und der zugehörigen Dokumentationen (die "Software") erhält, die
Erlaubnis erteilt, uneingeschränkt zu benutzen, inklusive und ohne
Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren,
verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und
Personen, die diese Software erhalten, diese Rechte zu geben, unter den
folgenden Bedingungen:
Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen
Kopien oder Teilkopien der Software beizulegen.
DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE
BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN
VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER
RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND
DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE
ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES,
EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER
SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
@@ -0,0 +1,285 @@
Metadata-Version: 2.1
Name: svgwrite
Version: 1.4.3
Summary: A Python library to create SVG drawings.
Home-page: http://github.com/mozman/svgwrite.git
Author: Manfred Moitzi
Author-email: me@mozman.at
License: MIT License
Download-URL: http://github.com/mozman/svgwrite/releases
Platform: OS Independent
Classifier: Development Status :: 7 - Inactive
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Intended Audience :: Developers
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides: svgwrite
Requires-Python: >=3.6
License-File: LICENSE.TXT
svgwrite
========
This package is inactive! No new features will be added, there will
be no change of behavior, just bugfixes will be merged.
Abstract
--------
A Python library to create SVG drawings.
a simple example::
import svgwrite
dwg = svgwrite.Drawing('test.svg', profile='tiny')
dwg.add(dwg.line((0, 0), (10, 0), stroke=svgwrite.rgb(10, 10, 16, '%')))
dwg.add(dwg.text('Test', insert=(0, 0.2), fill='red'))
dwg.save()
for more examples see: examples.py
As the name `svgwrite` implies, `svgwrite` creates new SVG drawings, it does not read existing drawings and also does
not import existing drawings, but you can always include other SVG drawings by the <image> entity.
`svgwrite` is a pure Python package and has no external dependencies.
Installation
------------
with pip::
pip install svgwrite
or from source::
python setup.py install
Documentation
-------------
http://readthedocs.org/docs/svgwrite/
svgwrite can be found on GitHub.com at:
http://github.com/mozman/svgwrite.git
Contact
-------
svgwrite@mozman.at
NEWS
====
Version 1.4.3 - 2022-07-14
--------------------------
* BUGFIX: `#114 <https://github.com/mozman/svgwrite/pull/114>`_ Polyline validation by @normanrz
Version 1.4.2 - 2022-03-23
--------------------------
* This package is INACTIVE!
* No new features will be added.
* There will be no change of behavior.
* Only bugfixes will be merged.
* Merged some contributions and bugfixes.
Version 1.4.1 - 2021-01-15
--------------------------
* This package is in maintenance mode, no new features will be added, there will
be no change of behavior, just bugfixes will be merged.
* Merged some contributions and bugfixes.
Version 1.4 - 2020-03-28
------------------------
* Requires Python 3.6
* Removed Python2 support
* Optimized/faster ``svgparser.py`` module by Florian Festi
* Removed batch files to run tests on Windows, use ``pytest`` or ``tox`` instead
Version 1.3.1 - 2019-06-28
--------------------------
* BUGFIX: changed license of module shapes.py to MIT license
Version 1.3.0 - 2019-06-23
--------------------------
* Dropping Python 2 support in v1.4
* NEW: easy stylesheet embedding: `Drawing.embed_stylesheet(content)`, see example `using_fonts.py <https://github.com/mozman/svgwrite/blob/9d509fe1842e519b8d8475f83543a7589b7c1879/examples/using_fonts.py#L21>`_
* NEW: embedded local fonts: `Drawing.embed_font(fontname, filename)`, see example using_fonts.py
* NEW: embedded web fonts: `Drawing.embed_google_web_font(fontname, uri)`, see example using_fonts.py
* NEW: shapes extension by `Christof Hanke <https://www.induhviduals.de/>`_
* NEW: for write(), save() and saveas(), indentation for pretty print is configurable by `Mitar <http://mitar.tnode.com/>`_
* BUGFIX: converted regex strings in tests to raw strings by `tirkarthi <http://tirkarthi.github.io/>`_
Version 1.2.1 - 2018-11-16
--------------------------
* BUGFIX: Python 2 pretty print encoding issue
Version 1.2.0 - 2018-10-27
--------------------------
* NEW: Inkscape extension - support for Inkscape layers
* BUGFIX: compatibility with Python 3.7 by fixing re.split() usage
Version 1.1.12 - 2017-12-27
---------------------------
* BUGFIX: values attribute for element animate, accepts any semicolon separated values
Version 1.1.11 - 2017-05-31
---------------------------
* CHANGED: e.set_markers((sm, mm, em)), accepts None/False values to set markers individually, like just set end
marker: s.set_markers((None, False, em))
* BUGFIX: text-decoration attribute accepts multiple values like 'underline overline'
Version 1.1.10 - 2017-01-28
---------------------------
* NEW: added `pretty` argument to `Drawing.write`, `Drawing.save` and `Drawing.saveas` to produce easy to read XML
output, svgwrite reparses the output string with minidom, this reduces the performance because this process requires
memory and runtime, default value for `pretty` is False.
* Moved repository to GitHub.com: http://github.com/mozman/svgwrite.git
Version 1.1.9 - 2016-10-26
--------------------------
* NEW: added solidColor paint server (only valid in the Tiny 1.2 profile)
Version 1.1.8 - 2016-05-31
--------------------------
* BUGFIX: None checks: 'if value:' -> 'if value is not None:'
Version 1.1.7 - 2016-05-22
--------------------------
* BUGFIX: color accepts percentage values as floats like "rgb(10.2%, 3.78%, 20%)"
Version 1.1.6 - 2014-05-30
--------------------------
* BUGFIX: sign for offset-value wasn't optional
Version 1.1.5 - 2014-03-26
--------------------------
* BUGFIX: xml serialization for CPython 3.4.0
Version 1.1.4 - 2014-03-16
--------------------------
* simplified path parser
* pyparsing as external dependency (by jenselme)
Version 1.1.3 - 2013-10-01
--------------------------
* updated pyparsing for Python 3 to version 2.0.1 (prior version caused memory leaks)
* BUGFIX: utf8 to unicode encoding error for Python 2.7
* Tests for Python 3 require CPython3.3 or newer, using the 'u' prefix.
Version 1.1.2 - 2013-01-08
--------------------------
* prevent setup.py from compiling all modules - error with 'pyparsing_py2.py' and Python3
* BUGFIX: all tests run with CPython3.3
Version 1.1.1 - 2012-08-15
--------------------------
* License changed to MIT License
* tested with CPython2.7, CPython3.2, CPython3.3 and pypy-1.9 on Win7 Pro 32-bit
* BUGFIX: dwg.animateTranform() -> dwg.animateTransform()
* BUGFIX: in examples, replaced width and height params by size parameter
* added examples
* edit docs
Version 1.0.1 - 2012-06-08
--------------------------
* added inline stylesheets
* added examples created by Lawrence Tattrie
Version 1.0.0 - 2012-05-27
--------------------------
* stable
* tested with CPython 2.7, CPython 3.2, pypy-1.8
* added script tag - thx to jmahmood
* docs also available at: http://readthedocs.org/docs/svgwrite
Version 0.2.4 - 2011-12-30
--------------------------
* beta version
* Python 2.7: all strings will be converted by the unicode() function, for strings containing none-ascii-characters use
prefix ``u""`` or better use ``from __future__ import unicode_literals``, because this is Python 3 compatible.
* tested with CPython 2.7, CPython 3.2, and PyPy 1.7
* BUGFIX: color parsing accepts white spaces in ``rgb()`` like ``rgb(0, 0, 0)``
Version 0.2.3 - 2010-11-13
--------------------------
* beta version
* Python 3.1 support
* splitted examples.py into several files and moved them to the subdir 'examples'
Version 0.2.2 - 2010-11-05
--------------------------
* alpha version
* removed 'attribs' parameter from all constructors
* new elements: Set, Animate, AnimateMotion, AnimateColor, AnimateTransform, all filter elements
* added set_desc(title, desc), set_metadata(xmldata) to BaseElement class
* moved content of interfaces.py to mixins.py, (ITransform -> Transform and so on)
Version 0.2.1 - 2010-10-31
--------------------------
* alpha version
* new elements: Marker, ClipPath, Mask
* paint service: LinearGradient, RadialGradient, Pattern
Version 0.2.0 - 2010-10-24
--------------------------
* alpha version
* validator rewritten as validator2.py
* debug and profile options separated for each drawing object
* important change: create objects with factory functions of the *Drawing* class: drawing.<svg-elementname>(...)
* added mixins for setting stroke and fill properties
* new elements: Hyperlink, Image, TextArea,
Version 0.1.0 - 2010-09-26
--------------------------
* alpha version
* new elements:
* basic shapes: Line, Rect, Circle, Ellipse, Polyline, Polygon, Path
* text elements: Text, TSpan, TRef, TextPath
* container elements: Group, Symbol, SVG, Use, Defs
* for examples see: examples.py
@@ -0,0 +1,70 @@
svgwrite-1.4.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
svgwrite-1.4.3.dist-info/LICENSE.TXT,sha256=GBOnVT3pJ-iGU0WxBRw210G3DQ6fyrJXLfZzoY-TZik,2282
svgwrite-1.4.3.dist-info/METADATA,sha256=03ifbSvQep7d3u1O3kmEV3FB1IY2n8kJfaPI60LT83U,8843
svgwrite-1.4.3.dist-info/RECORD,,
svgwrite-1.4.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
svgwrite-1.4.3.dist-info/top_level.txt,sha256=zz1R0XrwfTXSn2upAtibS7jzihSwVNRcynsFEvrqhJI,43
svgwrite/__init__.py,sha256=FVp7zscdyoByyETIUnz6YJ8MYFG0VqxKDa4BHlbu_QI,2506
svgwrite/__pycache__/__init__.cpython-39.pyc,,
svgwrite/__pycache__/animate.cpython-39.pyc,,
svgwrite/__pycache__/base.cpython-39.pyc,,
svgwrite/__pycache__/container.cpython-39.pyc,,
svgwrite/__pycache__/drawing.cpython-39.pyc,,
svgwrite/__pycache__/elementfactory.cpython-39.pyc,,
svgwrite/__pycache__/etree.cpython-39.pyc,,
svgwrite/__pycache__/filters.cpython-39.pyc,,
svgwrite/__pycache__/gradients.cpython-39.pyc,,
svgwrite/__pycache__/image.cpython-39.pyc,,
svgwrite/__pycache__/masking.cpython-39.pyc,,
svgwrite/__pycache__/mixins.cpython-39.pyc,,
svgwrite/__pycache__/params.cpython-39.pyc,,
svgwrite/__pycache__/path.cpython-39.pyc,,
svgwrite/__pycache__/pattern.cpython-39.pyc,,
svgwrite/__pycache__/shapes.cpython-39.pyc,,
svgwrite/__pycache__/solidcolor.cpython-39.pyc,,
svgwrite/__pycache__/text.cpython-39.pyc,,
svgwrite/__pycache__/utils.cpython-39.pyc,,
svgwrite/__pycache__/validator2.cpython-39.pyc,,
svgwrite/__pycache__/version.cpython-39.pyc,,
svgwrite/animate.py,sha256=S9Gezc9yOawAZ4PZ1LgcRH4DZftWDUb0K6S63PE6sqQ,6663
svgwrite/base.py,sha256=w2DYG_cbigZiOYjNMlKI3ZkoVBY7DOX0HU7flqDfi0U,8624
svgwrite/container.py,sha256=qVnz-lWRgaQERdKsOatsBUJB6Fo_dT_BO0uj3qyp7cM,10741
svgwrite/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
svgwrite/data/__pycache__/__init__.cpython-39.pyc,,
svgwrite/data/__pycache__/colors.cpython-39.pyc,,
svgwrite/data/__pycache__/full11.cpython-39.pyc,,
svgwrite/data/__pycache__/pattern.cpython-39.pyc,,
svgwrite/data/__pycache__/svgparser.cpython-39.pyc,,
svgwrite/data/__pycache__/tiny12.cpython-39.pyc,,
svgwrite/data/__pycache__/typechecker.cpython-39.pyc,,
svgwrite/data/__pycache__/types.cpython-39.pyc,,
svgwrite/data/colors.py,sha256=Y8WAYb9_lAaBJjtk5QFm_RIoVShgASw579h10gJurFo,2845
svgwrite/data/full11.py,sha256=RUu9Biz9FyjN6WVfe-kyEQSJyCWcX5PL5_FmyRgG32A,76415
svgwrite/data/pattern.py,sha256=N5mZ7X1YKW_T1NjRtsYZgm3xIyOgTYJDFJ_2xfuj0K0,1064
svgwrite/data/svgparser.py,sha256=fL55kB3fIJ4eY7iis2otAUvKM6xuCUCUpwTk__3hj7Y,5036
svgwrite/data/tiny12.py,sha256=HIbUKIGF-SdabNS8GKFPsy0ElJn4o8smEs1qRx7bV14,58868
svgwrite/data/typechecker.py,sha256=vWcHGp-qqwpqneYRlAQAZJq1pBNfmHQcu7CHQVw0yOw,11944
svgwrite/data/types.py,sha256=78ETW6fsNqkTDp0V5yHgNGz3xrHbz_oKZb9iBGIL7FY,2807
svgwrite/drawing.py,sha256=PorqOz93xr1GBi_2zQKqPinNGEr3c-SsVqx-KSIR5zo,5291
svgwrite/elementfactory.py,sha256=onqBpxGNW6bi-uyjK_9FbGQplpdlprEcxDr2WZtUw_Y,2297
svgwrite/etree.py,sha256=CbWxoUynhLc1mvDUh528JDVD16pXZ-YMT8Vohx6u9ts,1361
svgwrite/extensions/__init__.py,sha256=Wh7mopLfv5YiM_W4XQPCa8WfBjLcipCQdojYKZ2UvgA,93
svgwrite/extensions/__pycache__/__init__.cpython-39.pyc,,
svgwrite/extensions/__pycache__/inkscape.cpython-39.pyc,,
svgwrite/extensions/__pycache__/shapes.cpython-39.pyc,,
svgwrite/extensions/inkscape.py,sha256=OItSjLMhbGGxJNjZQqvCdoa90t8ffvvUD7bVn5AspCw,3073
svgwrite/extensions/shapes.py,sha256=_IXOvaSj05EdAsS4iRT1JGjdPOvL7oIMFdbrgJfWbjI,3728
svgwrite/filters.py,sha256=0HBiWiOBwIOB_VXShvsKZCs9IS4y18c-INoNlQYBUmE,8002
svgwrite/gradients.py,sha256=OpdjLDrltwsNM7y2lEdVSd1HRnvrXOO7sKUV-JYPrRw,4702
svgwrite/image.py,sha256=gjoenfpS2a1NqxzE3QWQybl6V7Nu3g-m6XlWhUqMPWo,2493
svgwrite/masking.py,sha256=uV6d9L6DDZ1XFlRsN6k9TS8N7ItXckHltqp0_LDY4ys,1856
svgwrite/mixins.py,sha256=PqVuKFpT9yfx0EgVe0DD9IdA8qKqCPIzwZgYMy8SBJ8,10749
svgwrite/params.py,sha256=Z_oIjKHWIpsox5JOfP7J0_xtLsZqKJX0XWwHhmyE0AQ,1903
svgwrite/path.py,sha256=gr8YNCcLbczxAMSf7V6_3yrQAXa8c96tU8twWpJCpKs,2848
svgwrite/pattern.py,sha256=FF_KSTPQflfLhFbjNMcLLmNvfMLk-jRcLGkG3crvus0,1973
svgwrite/shapes.py,sha256=JiIvhn2v7s0bgJbdPB1pFUQ2z6IFiObwiAwk1Azsrw0,5310
svgwrite/solidcolor.py,sha256=wjE_109Gqk1x3I6djo8bSrmG2SmKQ4sE63kXldkWYN4,1734
svgwrite/text.py,sha256=UXWUbBCKUUlqX06ClKxlHYDb2X5KIa8vpUHtp74q-mY,8138
svgwrite/utils.py,sha256=-nWhA1VpQPdrm8US9g-IQRwEdnDBlH_BAzrLY1vpcpk,7421
svgwrite/validator2.py,sha256=vY49WBrteUtKRbgE8RVJhawF8O49Jo0BfTgmU-Vi5FU,6205
svgwrite/version.py,sha256=Bxd0Ytp8hQjNE2o2xa6T9zfL0eBdnQDAUCprGz1jlvs,1119
@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.37.1)
Root-Is-Purelib: true
Tag: py3-none-any
@@ -0,0 +1,3 @@
svgwrite
svgwrite/data
svgwrite/extensions