943acbc573
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é.
107 lines
2.1 KiB
Python
107 lines
2.1 KiB
Python
"""
|
|
requests.compat
|
|
~~~~~~~~~~~~~~~
|
|
|
|
This module previously handled import compatibility issues
|
|
between Python 2 and Python 3. It remains for backwards
|
|
compatibility until the next major version.
|
|
"""
|
|
|
|
import importlib
|
|
import sys
|
|
|
|
# -------
|
|
# urllib3
|
|
# -------
|
|
from urllib3 import __version__ as urllib3_version
|
|
|
|
# Detect which major version of urllib3 is being used.
|
|
try:
|
|
is_urllib3_1 = int(urllib3_version.split(".")[0]) == 1
|
|
except (TypeError, AttributeError):
|
|
# If we can't discern a version, prefer old functionality.
|
|
is_urllib3_1 = True
|
|
|
|
# -------------------
|
|
# Character Detection
|
|
# -------------------
|
|
|
|
|
|
def _resolve_char_detection():
|
|
"""Find supported character detection libraries."""
|
|
chardet = None
|
|
for lib in ("chardet", "charset_normalizer"):
|
|
if chardet is None:
|
|
try:
|
|
chardet = importlib.import_module(lib)
|
|
except ImportError:
|
|
pass
|
|
return chardet
|
|
|
|
|
|
chardet = _resolve_char_detection()
|
|
|
|
# -------
|
|
# Pythons
|
|
# -------
|
|
|
|
# Syntax sugar.
|
|
_ver = sys.version_info
|
|
|
|
#: Python 2.x?
|
|
is_py2 = _ver[0] == 2
|
|
|
|
#: Python 3.x?
|
|
is_py3 = _ver[0] == 3
|
|
|
|
# json/simplejson module import resolution
|
|
has_simplejson = False
|
|
try:
|
|
import simplejson as json
|
|
|
|
has_simplejson = True
|
|
except ImportError:
|
|
import json
|
|
|
|
if has_simplejson:
|
|
from simplejson import JSONDecodeError
|
|
else:
|
|
from json import JSONDecodeError
|
|
|
|
# Keep OrderedDict for backwards compatibility.
|
|
from collections import OrderedDict
|
|
from collections.abc import Callable, Mapping, MutableMapping
|
|
from http import cookiejar as cookielib
|
|
from http.cookies import Morsel
|
|
from io import StringIO
|
|
|
|
# --------------
|
|
# Legacy Imports
|
|
# --------------
|
|
from urllib.parse import (
|
|
quote,
|
|
quote_plus,
|
|
unquote,
|
|
unquote_plus,
|
|
urldefrag,
|
|
urlencode,
|
|
urljoin,
|
|
urlparse,
|
|
urlsplit,
|
|
urlunparse,
|
|
)
|
|
from urllib.request import (
|
|
getproxies,
|
|
getproxies_environment,
|
|
parse_http_list,
|
|
proxy_bypass,
|
|
proxy_bypass_environment,
|
|
)
|
|
|
|
builtin_str = str
|
|
str = str
|
|
bytes = bytes
|
|
basestring = (str, bytes)
|
|
numeric_types = (int, float)
|
|
integer_types = (int,)
|