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é.
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
This module offers general convenience and utility functions for dealing with
|
|
datetimes.
|
|
|
|
.. versionadded:: 2.7.0
|
|
"""
|
|
from __future__ import unicode_literals
|
|
|
|
from datetime import datetime, time
|
|
|
|
|
|
def today(tzinfo=None):
|
|
"""
|
|
Returns a :py:class:`datetime` representing the current day at midnight
|
|
|
|
:param tzinfo:
|
|
The time zone to attach (also used to determine the current day).
|
|
|
|
:return:
|
|
A :py:class:`datetime.datetime` object representing the current day
|
|
at midnight.
|
|
"""
|
|
|
|
dt = datetime.now(tzinfo)
|
|
return datetime.combine(dt.date(), time(0, tzinfo=tzinfo))
|
|
|
|
|
|
def default_tzinfo(dt, tzinfo):
|
|
"""
|
|
Sets the ``tzinfo`` parameter on naive datetimes only
|
|
|
|
This is useful for example when you are provided a datetime that may have
|
|
either an implicit or explicit time zone, such as when parsing a time zone
|
|
string.
|
|
|
|
.. doctest::
|
|
|
|
>>> from dateutil.tz import tzoffset
|
|
>>> from dateutil.parser import parse
|
|
>>> from dateutil.utils import default_tzinfo
|
|
>>> dflt_tz = tzoffset("EST", -18000)
|
|
>>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz))
|
|
2014-01-01 12:30:00+00:00
|
|
>>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz))
|
|
2014-01-01 12:30:00-05:00
|
|
|
|
:param dt:
|
|
The datetime on which to replace the time zone
|
|
|
|
:param tzinfo:
|
|
The :py:class:`datetime.tzinfo` subclass instance to assign to
|
|
``dt`` if (and only if) it is naive.
|
|
|
|
:return:
|
|
Returns an aware :py:class:`datetime.datetime`.
|
|
"""
|
|
if dt.tzinfo is not None:
|
|
return dt
|
|
else:
|
|
return dt.replace(tzinfo=tzinfo)
|
|
|
|
|
|
def within_delta(dt1, dt2, delta):
|
|
"""
|
|
Useful for comparing two datetimes that may have a negligible difference
|
|
to be considered equal.
|
|
"""
|
|
delta = abs(delta)
|
|
difference = dt1 - dt2
|
|
return -delta <= difference <= delta
|