Bom Dia a todos!Em 29 de fevereiro de 2020, foi realizada a micro-liberação oficial das bibliotecas smart-env e python-shell . Para quem não conhece, sugiro que você leia primeiro o primeiro post .Em resumo, as alterações incluem a conclusão automática de comandos, expandindo a capacidade de executar comandos, um pouco de refatoração e correções de bugs.Peço detalhes sob gato.O que há de novo no python-shell?
Vou começar imediatamente com a sobremesa.Conclusão da equipe
Concordo - é conveniente quando o editor / IDE / terminal solicita o nome do comando e, às vezes, chama parâmetros? Portanto, o python-shell está progredindo um pouco no fornecimento dessa funcionalidade. Como os campos da classe Shell, sob o capô de fato, não são seus campos (onipresente __getattr__), o preenchimento automático também foi criado do zero (sobrecarregando o método __dir__, respectivamente). O preenchimento automático está atualmente em execução nos ambientes BPython e IPython. Claro, quero ver a integração com produtos mais veneráveis como o PyCharm, e nessa direção estamos explorando as possibilidades de implementação.Adicionando propriedades
Como parte do lançamento, a classe Shell recebeu uma nova propriedade last_command. A necessidade disso surgiu devido ao fato de que quando uma ShellException era lançada por um comando com um código de retorno diferente de zero, o objeto Command não era retornado da chamada __call __ () do objeto de comando. Agora há uma oportunidade de fazer isso:try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_command
Também expandiu a lista de propriedades do objeto Command. Adicionado o campo de erros, que retorna a saída do comando para o fluxo de erros.Executando comandos com nomes inválidos do Python
Quase qualquer sistema possui pelo menos um programa cujo nome não se encaixa como identificador no Python (por exemplo, o conhecido utilitário 2to3). Ligue para ela comShell.2to3()
falha - o intérprete não pula.A solução é chamar o comando em uma solução alternativa:Shell("2to3")
Vale ressaltar que, da mesma maneira, é possível executar comandos válidos do ponto de vista do intérprete, o que permite criar scripts flexíveis comocmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)
Pequenas alterações
- Os métodos __repr __ () e __str __ () do objeto Command são implementados, que agora produzem valores intuitivos (um comando com parâmetros e seu escape stdout, respectivamente).
- Pequenas correções por código.
- Adicionando cobertura de teste e reorganizando as existentes.
- Incluindo as classes Subprocesso e Processo, cujo objetivo é criar um nível adicional de abstração ao trabalhar com o módulo de subprocesso. Na maioria das vezes, é necessário eliminar repetições de código ao trabalhar com o Python 2/3, mas isso pode potencialmente dar outros bônus.
O que há de novo no smart-env?
Ao contrário do python-shell, há menos alterações na biblioteca smart-env. A razão para isso é simples - falta de tempo livre, durante o qual algumas melhorias em potencial (por exemplo, a conclusão de variáveis de ambiente) foram transferidas para o próximo release.De fato, as seguintes alterações foram feitas na biblioteca:- Pequenas correções por código.
- Reestruturação
- Reorganização e aprimoramento de testes existentes.
Planos de lançamento seguinte
Biblioteca Python-shell
- Adicionando suporte para chamadas de comando sem bloqueio (execução paralela).
Biblioteca Smart-Env
- Implementação de autopreenchimento de variáveis de ambiente na classe ENV.
- Suporte para o operador in para verificar a existência de uma variável env.
- Implementando funções str () e repr () para a classe ENV.
As datas dos próximos lançamentos serão anunciadas adicionalmente nos seguintes canais de comunicação: