Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Should there be a way to disable trait notifications?

Abierto
#907 1 comentario 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
backend

Línea de trabajo

Comienza leyendo la implementación existente de notificaciones de HasTraits y el gestor de contexto hold_trait_notifications mencionado en el issue. Determina si un gestor de contexto para deshabilitar completamente debe formar parte de la API pública y define su comportamiento esperado de restauración; estaría terminado cuando hubiera una API acordada y las pruebas o la documentación correspondientes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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 😅

Lenguaje dominante
Python
Estrellas
653
Forks
217
Merge medio
2 d 21 h
PR fusionados (30 d)
2

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ipython/traitlets

Todos los issues de ipython/traitlets

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.