ProHoster > Blog > administração > Fazendo amizade entre Python e Bash: lançamento das bibliotecas python-shell e smart-env v. 1.0.1
Fazendo amizade entre Python e Bash: lançamento das bibliotecas python-shell e smart-env v. 1.0.1
Bom dia a todos!
29 fevereiro 2020 anos ocorreu o micro-lançamento oficial de bibliotecas ambiente inteligente и python-shell. Para quem não sabe, sugiro que leia primeiro primeiro post.
Resumindo, as mudanças incluem conclusão de comandos, recursos expandidos para execução de comandos, algumas refatorações e correções de bugs.
Para obter detalhes, consulte gato.
O que há de novo no python-shell?
Vou começar imediatamente com a sobremesa.
Conclusão do comando
Concordo - é conveniente quando o editor/IDE/terminal solicita o nome do comando e, às vezes, até os parâmetros de chamada? Portanto, o python-shell está gradualmente progredindo no fornecimento de funcionalidades semelhantes. Devido ao fato de que os campos da classe Shell subjacentes não são de fato seus campos (o onipresente __getattr__), o preenchimento automático também foi criado do zero (sobrecarregando o método __dir__, respectivamente). O preenchimento automático atualmente funciona em ambientes BPython e IPython. Claro, eu gostaria de ver a integração com produtos mais veneráveis como o PyCharm, e possibilidades de implementação estão sendo estudadas nessa direção.
Adicionando propriedades
Como parte do lançamento, a classe Shell recebeu uma nova propriedade last_command. A necessidade surgiu porque quando um ShellException foi lançado por um comando com um código de retorno diferente de zero, o objeto Command não foi retornado da chamada __call__() para o objeto de comando. Agora há uma oportunidade para fazer isso:
A lista de propriedades do objeto Command também foi expandida. Adicionado um campo de erros que retorna a saída do comando para o fluxo de erros.
Executando comandos com nomes Python inválidos
Quase todo sistema possui pelo menos um programa cujo nome não é adequado como identificador em Python (por exemplo, o conhecido utilitário 2to3). Ligue para ela com
Shell.2to3()
Se não funcionar, o intérprete não deixará passar.
A solução é chamar o comando de forma indireta:
Shell("2to3") # возвращает объект команды
Vale ressaltar que da mesma forma você pode executar comandos válidos do ponto de vista do intérprete, o que deixa a oportunidade de criar scripts flexíveis como
Foram implementados os métodos __repr__() e __str__() do objeto da classe Command, que agora produzem valores intuitivos (um comando com parâmetros e sua saída stdout, respectivamente).
Pequenas correções de código.
Adicionar cobertura de testes, bem como reorganizar as existentes.
Adicionando as classes Subprocess e Process, cujo objetivo é criar um nível adicional de abstração ao trabalhar com o módulo subprocesso. Principalmente necessário para eliminar a duplicação de código ao trabalhar com Python 2/3, mas também pode fornecer outros bônus.
O que há de novo no ambiente inteligente?
Ao contrário do python-shell, houve menos alterações na biblioteca smart-env. A razão para isso é simples: falta de tempo livre, durante o qual algumas melhorias potenciais (por exemplo, preenchimento automático de variáveis de ambiente) foram movidas para a próxima versão.
Na verdade, as seguintes alterações foram feitas na biblioteca:
Pequenas correções de código.
Reestruturação.
Reorganização e refinamento de testes existentes.
Planos para próximos lançamentos
biblioteca python-shell
Adicionando suporte para chamadas de comando sem bloqueio (paralelização de execução).
biblioteca de ambiente inteligente
Implementação de preenchimento automático de variáveis de ambiente na classe ENV.
Suporte para o operador in para verificar a existência de uma variável env.
Implementação de suporte às funções str() e repr() para a classe ENV.
As datas dos próximos lançamentos serão divulgadas posteriormente nos seguintes canais de comunicação: