Un Webcast de Miguel Grinberg sobre como evitar Dependencias Circulares en una aplicación Python / Flask.
My Metadata
- Descripción: Un webcast de 1h en el que se refactoriza una aplicación Flask que empieza con un único fichero a varios paquetes y módulos.
- Calificación: 3 sobre 5
- Día de Visualización: 2020-06-28
- Año de publicación: 2018
- Duración: 68 minutos
- Velocidad de reproducción recomendada: 1.75
- Etiquetas: python; flask; dependencies; refactoring
Lecciones aprendidas
- Mantener el entry point tan limpio como sea posible. Incluso con un único import.
- El módulo que es ejecutado inicialmente por Python adquiere el nombre de
__main__
a nivel interno, por ello los «nombres» que se definan en este módulo, no se identificarán inicialmente a efectos de dependencias comomyfile.myvar
si no como__main__.myvar
, lo que es más fácil que genere un error de dependencias circulares - No usar los __init__.py como mecanismo para acortar los imports. Hay tantas opiniones a favor como en contra sobre el tema. A mi me ha generado más problemas que soluciones.
- Usar imports desde la «raíz»
from myapp.models.user import User
y no estilofrom user import User
. - No pasa nada por no poner los
import
al inicio del fichero cuando tenga sentido que sea de otra forma, por ejemplo para evitar dependencias circulares. Usar# noqa
para que no pite el linter en estos casos es aceptable.