PanoPtisch escanea su archivo o módulo de Python para encontrar sus importaciones (también conocidas como dependencias) y lo hace de manera recursiva para todas las dependencias y subdependencias. Luego genera un árbol de dependencia en JSON para que analices y aplique políticas de importación. Las importaciones se resuelven mediante la imitación del sistema de importación de Python. Es completamente estático además de la importación de módulos para encontrar la ubicación de sus archivos fuente. Panooptisch también cuenta con una caja de arena mínima para evitar efectos secundarios al importar dependencias. ¡Tenga en cuenta que el sandbox no es infalible!
Hay limitaciones y problemas conocidos en esta etapa. Lea esto antes de usar PanoPtisch.
Ver: LIMITATIONS.md Link.
No pude encontrar un escáner de dependencia adecuado para Python. Panoptisch nació de la necesidad de verificar con precisión el uso de dependencia en un proyecto completo.
Su objetivo es generar un informe JSON que pueda analizarse y evaluarse para afirmar las políticas de importación .
Por ejemplo, es posible que desee restringir os , socket , sys y las importaciones importlib a los paquetes seleccionados.
Panoptisch en el mismo entorno virtual que su proyecto, ¡esto es importante! pip install panoptisch
usage: panoptisch <module>
positional arguments:
module Name of module or file you wish to scan.
options:
-h, --help show this help message and exit.
--show-stdlib-dir Prints the automatically resolved stdlib directory.
--max-depth MAX_DEPTH
Maximum dependency depth.
--out OUT File to output report.
--auto-stdlib-dir Ignore stdlib modules by automatically resolving their path. MAY BE BUGGY. Try running panoptisch <module_name> --show-stdlib-dir to see the directory before using this.
--stdlib-dir STDLIB_DIR Ignore stdlib modules by providing their path.
--omit-not-found Do not include modules that could not be resolved in report.
--no-sandbox Ignore the minimal sandbox implementation.
Una carrera típica puede ser
$ panoptisch <module or file> --max-depth 5 --omit-not-found
$ more out.json
--show-stdlib-dir para ver si PanoPtisch puede resolver automáticamente su directorio de biblioteca estándar, típicamente /usr/local/lib/python3.x en instalaciones de Linux. Entonces puedes excluirlo usando $ panoptisch <module or file> --auto-stdlib-dir
Si PanoPtisch no puede resolver automáticamente su directorio de biblioteca estándar, puede encontrarlo usted mismo y proporcionarlo como argumento a stdlib-dir
$ panoptisch <module or file> --stdlib-dir /the/path/to/your/standardlibrary/
Todo el trabajo tiene licencia bajo la Licencia Pública General de GNU Versión 3.
Los comentarios, las contribuciones y los problemas son bienvenidos.