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:
@@ -0,0 +1,44 @@
|
||||
"""Experimental module exposing a function to generate a core schema that validates callable arguments."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic_core import CoreSchema
|
||||
|
||||
from pydantic import ConfigDict
|
||||
from pydantic._internal import _config, _generate_schema, _namespace_utils
|
||||
|
||||
|
||||
def generate_arguments_schema(
|
||||
func: Callable[..., Any],
|
||||
schema_type: Literal['arguments', 'arguments-v3'] = 'arguments-v3',
|
||||
parameters_callback: Callable[[int, str, Any], Literal['skip'] | None] | None = None,
|
||||
config: ConfigDict | None = None,
|
||||
) -> CoreSchema:
|
||||
"""Generate the schema for the arguments of a function.
|
||||
|
||||
Args:
|
||||
func: The function to generate the schema for.
|
||||
schema_type: The type of schema to generate.
|
||||
parameters_callback: A callable that will be invoked for each parameter. The callback
|
||||
should take three required arguments: the index, the name and the type annotation
|
||||
(or [`Parameter.empty`][inspect.Parameter.empty] if not annotated) of the parameter.
|
||||
The callback can optionally return `'skip'`, so that the parameter gets excluded
|
||||
from the resulting schema.
|
||||
config: The configuration to use.
|
||||
|
||||
Returns:
|
||||
The generated schema.
|
||||
"""
|
||||
generate_schema = _generate_schema.GenerateSchema(
|
||||
_config.ConfigWrapper(config),
|
||||
ns_resolver=_namespace_utils.NsResolver(namespaces_tuple=_namespace_utils.ns_for_function(func)),
|
||||
)
|
||||
|
||||
if schema_type == 'arguments':
|
||||
schema = generate_schema._arguments_schema(func, parameters_callback) # pyright: ignore[reportArgumentType]
|
||||
else:
|
||||
schema = generate_schema._arguments_v3_schema(func, parameters_callback) # pyright: ignore[reportArgumentType]
|
||||
return generate_schema.clean_schema(schema)
|
||||
Reference in New Issue
Block a user