Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Should there be a way to disable trait notifications?

Ouverte
#907 1 commentaire 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
backend

Piste de recherche

Commencez par lire l’implémentation existante des notifications de HasTraits et le gestionnaire de contexte hold_trait_notifications référencé dans l’issue. Déterminez si un gestionnaire de contexte permettant de tout désactiver doit faire partie de l’API publique et définissez son comportement attendu de restauration ; ce serait terminé avec une API approuvée et les tests ou la documentation correspondants.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

I recently had to completely disable trait notification during instantiation of a HasTraits child class. Holding with hold_trait_notifications wasn't sufficient; the notifications release when exiting the context manager was modifying attributes I didn't want to change.

I used a snippet found in the source code to implement the following context manager.

import contextlib

from traitlets import HasTraits, Bunch


@contextlib.contextmanager
def disable_trait_notifications(self):
    """Temporatilly disable trait notifications."""
    def ignore(change: Bunch) -> None:
        pass
    original_notify_change = self.notify_change
    self.notify_change = ignore
    try:
        yield
    finally:
        self.notify_change = original_notify_change

# Monkey patch HasTraits
HasTraits.disable_trait_notifications = disable_trait_notifications

Wondering if it would make sense to have this as part of the API. Hope I'm not suggesting an anti pattern 😅

Langage dominant
Python
Étoiles
653
Forks
217
Merge moyen
2 j 21 h
PR mergées (30 j)
2

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ipython/traitlets

Toutes les issues de ipython/traitlets

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.