[pyar] circular imports: they are everywhere.
Fabian Ezequiel Gallina
galli.87 en gmail.com
Vie Sep 10 00:43:52 ART 2010
Hola lista,
Les cuento que ando laburando en un proyecto en donde me encuentro con
cosas de este estilo:
def funcion_loca():
from otra.app import Algo
return Algo()
Lo primero que a uno se le viene a la cabeza es que eso no es pep8
compliant ni porque a Guido se lo amenace con hacerle escribir XML a
mano de por vida.
Lo segundo que uno hace es mover ese import al principio del archivo:
from otra.app import Algo
def funcion_loca():
return Algo()
Lo tercero que sucede es: cannot import name Algo
La razón: imports circulares.
Primer solución: Refactorizar todo el codebase para que no sea tan
horrible y mal enfocado.
El problema: Mucho tiempo y no me van a dar el visto bueno.
Segunda solución: Lazy Imports, es decir que el módulo realmente se
importe a la hora de que se use.
El problema: las implementaciones que encontré de bzr y mercurial se
ven muy específicas a su problema y no me termino de decidir cuál
toquetear.
Entonces, qué estoy buscando con este mail?
Una manera que me recomienden para hacer lazy imports y embellecer un
poco más este codebase algo baqueteado (y dejar de importar cosas cada
vez que se llama a una función maldita).
Gracias de antemano,
--
Fabián E. Gallina
http://www.from-the-cloud.com
More information about the pyar
mailing list