Aller au contenu

Ressources et Image de Marque

AppriseAsset définit le contexte global d’exécution d’une session Apprise.

Il ne se limite pas à l’image de marque ou au thème. Une instance d’asset influence le comportement de :

  • tous les plugins de notification ;
  • tous les threads d’envoi ;
  • le stockage persistant et le matériel de clé ;
  • les limites de sécurité globales (masquage des journaux et protection contre la récursion).

Dans la plupart des cas, un asset est créé une seule fois puis passé à Apprise(...) lors de son instanciation.

from apprise import Apprise, AppriseAsset
asset = AppriseAsset(app_id="Mon application", theme="default")
apobj = Apprise(asset=asset)

Si aucun asset n’est fourni, Apprise en crée un par défaut.

  • créé une seule fois, en général au démarrage de l’application ;
  • partagé entre tous les plugins chargés et le traitement de configuration ;
  • destiné à être considéré comme immuable pendant toute la durée de vie d’une instance Apprise.

Modifier un asset après l’avoir lié à Apprise peut produire des résultats incohérents d’un plugin à l’autre.

AppriseAsset.__init__() accepte un petit nombre d’arguments explicites, ainsi que **kwargs.

  • Les arguments explicites (plugin_paths, storage_*, timezone) sont validés et normalisés.
  • **kwargs peut surcharger n’importe quel attribut d’asset existant et lèvera une erreur si une clé invalide est fournie.

Ce comportement est intentionnel. Il empêche qu’un fichier de configuration définisse silencieusement des champs inconnus et maintient une surface de configuration stricte.


Ce tableau documente les vraies valeurs par défaut issues de l’implémentation, ainsi que l’endroit où chaque champ est utilisé. Les champs préfixés par _ ou __ ne sont volontairement pas configurables via un fichier de configuration.

ChampTypePar défautUtilisé parNotes
app_idstrAppriseEn-têtes de plugins, noms de clésUtilisé comme identifiant applicatif lisible et comme nom par défaut pour la génération de clés PGP.
app_descstrApprise NotificationsMétadonnées / présentationUtilisé par les outils et services qui affichent une description d’application.
app_urlstrhttps://github.com/caronc/appriseMétadonnées / présentationURL du fournisseur exposée dans la documentation et certaines métadonnées de plugins.
themestrdefaultRésolution d’URL/chemin d’icônesPilote la substitution {THEME} lors de la recherche d’icônes.
default_extensionstr.pngRésolution d’URL/chemin d’icônesUtilisé lorsque extension n’est pas fourni à image_url() ou image_path().
default_image_sizeNotifyImageSizeXY_256Résolution d’URL d’icônesUtilisé quand la taille est omise.
image_url_maskstrURL GitHub rawimage_url()Produit une URL d’image thémée pour NotifyType + taille.
image_url_logostrURL GitHub rawimage_url(logo=True)Utilisé pour le logo de l’application.
image_path_maskstrlocal assets/themes/...image_path() / image_raw()Utilisé pour la résolution locale d’icônes et le chargement des octets bruts.
ChampTypeValeur par défautUtilisé parNotes
html_notify_mapdict[NotifyType,str]mappage type→hexcolor()Mappage couleur par défaut pour les services HTML.
default_html_colorstr#888888color()Utilisé lorsqu’un mappage est absent.
ascii_notify_mapdict[NotifyType,str]mappage type→jetonascii()Jetons ASCII par défaut pour les contextes purement texte.
default_ascii_charsstr[?]ascii()Utilisé lorsqu’un mappage est absent.
ChampTypeDéfautUtilisé parNotes
body_formatNotifyFormatNoneNonePipeline de formatage. Si None, aucun pré-formatage n’est appliqué par défaut.
interpret_emojisboolNoneNonePré-traitement des messages. Si None, cela s’en remet à la configuration par service (par exemple emojis=yes dans l’URL).
interpret_escapesboolFalsePré-traitement messageActive \n, \t, etc. avant l’envoi.
encodingstrutf-8EncodageUtilisé lors de l’encodage des chaînes internes. Joue aussi un rôle dans la manière dont certains services envoient leur contenu en amont.
ChampTypeDéfautUtilisé parNotes
async_modeboolTrueOrchestration des envoisContrôle l’envoi concurrent ou séquentiel.
default_service_retryint0Tentatives par serviceNombre de tentatives par défaut pour tout service sans ?retry= dans son URL. Limité à [0, 10].
default_service_waitfloat0.5Tentatives par serviceDélai inter-tentative par défaut (secondes) pour les services sans ?wait=. Limité à [0.0, 20.0].
ChampTypeDéfautUtilisé parNotes
plugin_pathslist[str][]Chargement personnaliséDéclenche la détection de modules à l’initialisation.
ChampTypeDéfautUtilisé parNotes
storage_pathstrNoneNoneRacine de PersistentStore. Si absent, Apprise fonctionne uniquement en mémoire pour ces fonctions.
storage_modePersistentStoreModeautoComportement PersistentStoreauto, flush, memory.
storage_idlenint8Génération d’espaces nommésContrôle la longueur des répertoires de namespace générés.
storage_saltbytesb""Génération d’espaces nommésFournit un salage facultatif ; les chaînes sont encodées avec encoding.
ChampTypeDéfautUtilisé parNotes
pgp_autogenboolTrueContrôleur PGPQuand True et que le stockage persistant est configuré, génère une paire de clés RSA-2048 ({localpart}-pub.asc + {localpart}-prv.asc) la première fois qu’aucune clé n’est trouvée. S’applique uniquement à pgp=encrypt — l’étape opportuniste de pgp=sign ne génère jamais de clé.
pem_autogenboolTrueContrôleur PEMActive la génération automatique de clés PEM si le stockage le permet et qu’aucune clé n’est fournie.

Quand pgp_autogen = True, Apprise génère les deux clés (publique et privée) lors du premier envoi pgp=encrypt où aucune clé n’est trouvée :

  • {localpart}-pub.asc — clé publique RSA-2048, utilisée pour chiffrer les messages sortants
  • {localpart}-prv.asc — clé privée RSA-2048, découverte automatiquement par le mode pgp=sign

{localpart} est dérivé de l’adresse From de l’expéditeur (tout ce qui précède le @, en minuscules).

L’amorçage est donc automatique : configurez pgp=encrypt une fois avec le stockage persistant, laissez le premier envoi générer les deux clés, puis passez à pgp=sign — la clé privée sera découverte depuis le même répertoire de stockage, sans paramètre pgpprv=.

Pour désactiver la génération automatique globalement :

from apprise import AppriseAsset
asset = AppriseAsset(
storage_path="/var/lib/apprise",
pgp_autogen=False,
)

Avec pgp_autogen = False, aucune paire de clés n’est créée automatiquement. Apprise passe à la méthode de découverte suivante (WKD ou un chemin pgppub= explicite) et échoue l’envoi si aucune clé n’est trouvée.

ChampTypeDéfautUtilisé parNotes
http_redirectsboolTrueTous les plugins HTTPQuand True (par défaut), les plugins suivent les redirections 3xx, conformément au comportement de la bibliothèque requests. Définir à False pour désactiver le suivi des redirections globalement sans toucher aux URLs individuelles.
secure_loggingboolTruePipeline de journalisationAjoute un coût pour masquer les secrets dans les logs ; recommandé de le laisser activé.
_recursionint0Garde-fou de récursion APIEmpêche les boucles lorsqu’une instance Apprise API en appelle une autre.
_uidstrUUID4 aléatoireCorrélation / identitéIdentifiant interne destiné à la corrélation interne.
_tzinfotzinfofuseau systèmeComportement temporelObjet fuseau horaire résolu utilisé par les plugins ayant besoin d’horodatages localisés.

Configure l’instance Apprise avec une image de marque personnalisée.

from apprise import AppriseAsset
asset = AppriseAsset(
app_id="StatsBot",
app_desc="Service d'agrégation de métriques",
app_url="https://example.com",
)

Apprise résout les icônes à l’aide de masques configurables.

asset = AppriseAsset(
image_path_mask="/icons/{THEME}/{TYPE}-{XY}{EXTENSION}",
image_url_mask="https://cdn.example.com/{TYPE}-{XY}{EXTENSION}",
)
JetonDescription
{THEME}Thème actif
{TYPE}info, success, warning, failure
{XY}Taille de l’image
{EXTENSION}Extension de fichier

Par défaut, Apprise suit les redirections HTTP 3xx, conformément au comportement de la bibliothèque requests sous-jacente. Si vous souhaitez empêcher la transmission des en-têtes personnalisés et des identifiants vers des destinations différentes de l’URL d’origine, vous pouvez désactiver globalement le suivi des redirections :

asset = AppriseAsset(http_redirects=False)

Les URLs individuelles peuvent toujours remplacer la valeur par défaut de l’asset via le paramètre d’URL redirect= :

# Remplacement par URL, indépendamment du réglage de l'asset
schema://token/?redirect=yes
schema://token/?redirect=no

Lorsqu’elle est activée, les secrets sont masqués dans toutes les sorties de journal.

asset = AppriseAsset(secure_logging=True)

La désactiver est fortement déconseillé en dehors d’environnements isolés.

L’asset suit en interne la profondeur de récursion afin d’éviter les boucles de notification, en particulier lorsque plusieurs instances Apprise interagissent entre elles.

Les champs suivants ne peuvent pas être définis via des fichiers de configuration :

  • plugin_paths
  • storage_*
  • les indicateurs internes préfixés par _

Ils doivent être fournis par code afin d’empêcher l’exécution de code non fiable.

  • Routage par Tags & Tentatives — comment configurer les tags de priorité, les tentatives/délai par service et les remplacements par appel dans les fichiers de configuration.
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada