¿Cómo le digo a PyLint “es una variable, no una constante” para detener el mensaje C0103?

Tengo una variable de nivel de módulo en mi progtwig de Python 2.6 llamada “_log”, de la que PyLint se queja:

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) 

Después de leer esta respuesta , entiendo por qué lo hace: piensa que la variable es una constante y aplica la expresión regular constante. Sin embargo, me permito disentir: creo que es una variable. ¿Cómo le digo eso a PyLint para que no se queje? ¿Cómo determina PyLint si es una variable o una constante? ¿Trata simplemente a todas las variables de nivel de módulo como constantes?

 # pylint: disable-msg=C0103 

Póngalo en el ámbito donde desee que se ignoren estas advertencias. También puede hacer que lo anterior sea un comentario de fin de línea, para deshabilitar el mensaje solo para esa línea de código.

IIRC es cierto que pylint interpreta todas las variables de nivel de módulo como ‘constantes’.

las nuevas versiones de pylint tomarán esta línea en lugar

 # pylint: disable=C0103 

También puede especificar una lista separada por comas de “buenos nombres” que siempre están permitidos en su pylintrc, por ejemplo:

 [BASIC] good-names=_log 

Me parece que un poco de refactor podría ayudar. Pylint considera esto como un módulo, por lo que sería razonable no esperar ver las variables en este nivel. A la inversa, no se queja de vars en clases o funciones. El siguiente paradigma parece bastante común y resuelve el problema:

 def main(): '''Entry point if called as an executable''' _log = MyLog() # . . . if __name__ == '__main__': main() 

Esto tiene la ventaja de que si tiene algunas clases útiles, puedo importarlas sin ejecutar su main. El __name__ es el del módulo, por lo que el “si” falla.

En las nuevas versiones de pylint esta línea es ahora

 # pylint: disable=C0103 

el mensaje de habilitación es tan simple

 # pylint: enable=C0103 

Como otras respuestas han indicado, puede desactivar una advertencia específica de PyLint (como C0103) incluyendo la siguiente línea:

 # pylint: disable=C0103 

pero esto genera la advertencia de Locally disabling invalid-name . Tenga en cuenta que esta advertencia secundaria podría ser útil si desea que se le recuerde la advertencia desactivada. Si desea deshabilitar la advertencia silenciosamente sin alterar su archivo de configuración (lo que deshabilitaría la advertencia globalmente) puede usar:

 # pylint: disable=I0011,C0103 

Tenga en cuenta que PyLint no emite una advertencia de que está deshabilitando I0011.

¡Si deshabilita un mensaje localmente en su archivo, Pylint le informará otra advertencia diferente!

 Locally disabling invalid-name (C0103) [I:locally-disabled] 

Si su intención es una ejecución limpia de la pelusa, y seguramente ese debería ser el objective, de lo contrario, ¿por qué le molesta, entonces puede desactivar ese mensaje y el mensaje correspondiente habilitado localmente en su archivo de configuración?

 disable=locally-disabled, locally-enabled