Python: evita tabulaciones / espacios mixtos en la importación de módulos

Sé que puedes asegurarte de código tabulado / espaciado puro llamando a Python con -tt . Sin embargo, cuando no tengo control sobre la llamada de nivel superior, ¿puedo aplicar este comportamiento en los módulos que carga mi script?

Si tiene control sobre el script inicial, puede agregarlo usted mismo. Por ejemplo, en lugar de solo importar el guión de su estudiante, podría tener una función que primero verifique el módulo en busca de errores de sangría y luego lo importe:

 # instead of import foo foo.bar() # you have something like foo = verifyAndImport('foo') foo.bar() 

Y el verifyAndImport se vería así:

 import importlib def verifyAndImport (moduleName): with open(moduleName + '.py') as f: # TODO: logic to verify consistent indentation return importlib.import_module(moduleName) 

Una solución alternativa sería que su secuencia de comandos inicial inicie la secuencia de comandos real en un nuevo proceso de Python, con el argumento -tt . Pero como lo señaló tdelaney, esto puede causar errores que no son causados ​​por sus estudiantes.