Estoy tratando de producir un simulacro de matplotlib para poder compilar mis documentos usando ReadTheDocs, pero me he encontrado con un problema.Cómo simular para que `from x import *` funcione
En mi código, importo matplotlib usando from matplotlib.pyplot import *
.
estoy usando el siguiente código para mis Mocks (como lo sugiere el ReadTheDocs FAQ):
class Mock(object):
def __init__(self, *args, **kwargs):
pass
def __call__(self, *args, **kwargs):
return Mock()
@classmethod
def __getattr__(cls, name):
if name in ('__file__', '__path__'):
return '/dev/null'
elif name[0] == name[0].upper():
return type(name,(), {})
else:
return Mock()
MOCK_MODULES = ['numpy', 'scipy', 'matplotlib', 'matplotlib.pyplot']
for mod_name in MOCK_MODULES:
sys.modules[mod_name] = Mock()
Sin embargo, cuando se ejecuta from matplotlib.pyplot import *
me sale un error diciendo que TypeError: 'type' object does not support indexing
.
¿Hay alguna manera de poder cambiar mi Mock para que me permita importar matplotlib usando el estilo from x import *
? No necesito ninguna función particular para estar disponible, solo necesito que se pueda importar para que ReadTheDocs pueda importar el código correctamente.
lateral: No ruede su propio simulacro de propósito general. Use la excelente biblioteca 'simulada', en 3.3. incluso está en la biblioteca estándar. – delnan
Gracias por el comentario: descubrí que la importación de la biblioteca 'simulacro' y luego el uso de la clase' simulacro.Mock' en lugar de la sugerida por ReadTheDocs hizo que todo funcionara bien. – robintw