O PANOPTISCH verifica seu arquivo ou módulo Python para encontrar suas importações (também conhecido como dependências) e o faz recursivamente para todas as dependências e sub-dependências. Em seguida, gera uma árvore de dependência no JSON para você analisar e aplicar políticas de importação. As importações são resolvidas imitando o sistema de importação do Python. É completamente estático além da importação de módulos para encontrar a localização de seus arquivos de origem. O Panoptisch também possui uma caixa de areia mínima para evitar efeitos colaterais ao importar dependências. Observe que a caixa de areia não é à prova de falhas!
Existem limitações e questões conhecidas nesta fase. Por favor, leia isso antes de usar o Panoptisch.
Veja: LIMITATIONS.md LINK.
Não consegui encontrar um scanner de dependência adequado para o Python. A Panoptisch nasceu da necessidade de verificar com precisão o uso de dependência, acumulando um projeto inteiro.
O objetivo é gerar um relatório JSON que pode ser analisado e avaliado para afirmar políticas de importação .
Por exemplo, você pode querer restringir as importações os , socket , sys e importlib para pacotes selecionados.
Panoptisch no mesmo ambiente virtual do seu projeto, isso é 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.
Uma corrida típica pode ser
$ panoptisch <module or file> --max-depth 5 --omit-not-found
$ more out.json
--show-stdlib-dir para ver se o Panoptisch pode resolver automaticamente seu diretório de biblioteca padrão, tipicamente /usr/local/lib/python3.x nas instalações do Linux. Então você pode excluí -lo usando $ panoptisch <module or file> --auto-stdlib-dir
Se a Panoptisch não puder resolver automaticamente o seu diretório de biblioteca padrão, você pode encontrá-lo e fornecê-lo como um argumento para stdlib-dir
$ panoptisch <module or file> --stdlib-dir /the/path/to/your/standardlibrary/
Todo o trabalho está licenciado sob a Licença Pública Geral da GNU versão 3.
Feedback, contribuições e questões são bem -vindas.