Ocultar todas las advertencias en IPython

Resuelto astrofrog asked hace 12 años • 5 respuestas

Necesito producir un screencast de una sesión de IPython y, para evitar confundir a los espectadores, quiero desactivar todas las advertencias emitidas por warnings.warnllamadas de diferentes paquetes. ¿Hay alguna manera de configurar el archivo ipythonrc para deshabilitar automáticamente todas esas advertencias?

astrofrog avatar Jan 27 '12 17:01 astrofrog
Aceptado

Lugar:

import warnings
warnings.filterwarnings('ignore')

adentro ~/.ipython/profile_default/startup/disable-warnings.py.

Muy a menudo resulta útil ver una advertencia una vez. Esto se puede configurar mediante:

warnings.filterwarnings(action='once')
astrofrog avatar Jan 27 '2012 10:01 astrofrog

La respuesta aceptada no funciona en Jupyter (al menos cuando se usan algunas bibliotecas).

Las soluciones de JavaScript aquí solo ocultan las advertencias que ya se muestran, pero no las que se mostrarán en el futuro.

Para ocultar/mostrar advertencias en Jupyter y JupyterLab , escribí el siguiente script que esencialmente alterna CSS para ocultar/mostrar advertencias.

%%javascript
(function(on) {
    const e = $("<a>Setup failed</a>");
    const ns = "js_jupyter_suppress_warnings";
    var cssrules = $("#" + ns);
    if(!cssrules.length)
        cssrules = $("<style id='" + ns + "' type='text/css'>div.output_stderr { } </style>").appendTo("head");
    e.click(function() {
        var s = 'Showing';
        cssrules.empty()
        if(on) {
            s = 'Hiding';
            cssrules.append("div.output_stderr, div[data-mime-type*='.stderr'] { display:none; }");
        }
        e.text(s + ' warnings (click to toggle)');
        on = !on;
    }).click();
    $(element).append(e);
})(true);
robert avatar Jan 22 '2020 15:01 robert

Para JupyterLab , esto debería funcionar (@Alasja):

from IPython.display import HTML

HTML('''<script>
var code_show_err = false;
var code_toggle_err = function() {
    var stderrNodes = document.querySelectorAll('[data-mime-type="application/vnd.jupyter.stderr"]')
    var stderr = Array.from(stderrNodes)
    if (code_show_err){
        stderr.forEach(ele => ele.style.display = 'block');
    } else {
        stderr.forEach(ele => ele.style.display = 'none');
    }
    code_show_err = !code_show_err
}
document.addEventListener('DOMContentLoaded', code_toggle_err);
</script>
To toggle on/off output_stderr, click <a onclick="javascript:code_toggle_err()">here</a>.''')
ottowg avatar Aug 01 '2019 09:08 ottowg