ProHoster > Blog > Administración > Facendo Python e Bash Friendship: Lanzamento das bibliotecas python-shell e smart-env v. 1.0.1
Facendo Python e Bash Friendship: Lanzamento das bibliotecas python-shell e smart-env v. 1.0.1
Bo día a todos!
Febreiro 29 2020 anos tivo lugar o micro-lanzamento oficial das bibliotecas intelixente-env и python-shell. Para aqueles que non estean ao tanto, recoméndolles que o lean primeiro primeiro post.
En resumo, os cambios inclúen completar comandos, capacidades ampliadas para executar comandos, refactorización e corrección de erros.
Para máis detalles ver cat.
Que hai de novo en python-shell?
Vou comezar de inmediato coa sobremesa.
Finalización do comando
De acordo: é conveniente cando o editor/IDE/terminal che solicite o nome do comando e, ás veces, mesmo os parámetros de chamada? Polo tanto, python-shell está progresando gradualmente para proporcionar unha funcionalidade similar. Debido ao feito de que os campos da clase Shell baixo o capó son de facto non os seus campos (o omnipresente __getattr__), o autocompletado tamén se creou desde cero (ao sobrecargar o método __dir__, respectivamente). O autocompletado funciona actualmente en ambientes BPython e IPython. Por suposto, gustaríame ver a integración con produtos máis venerables como PyCharm, e as posibilidades de implementación estanse estudando nesta dirección.
Engadindo propiedades
Como parte da versión, a clase Shell recibiu unha nova propiedade last_command. A necesidade xurdiu porque cando un comando lanzou unha excepción ShellException cun código de retorno distinto de cero, o obxecto Command non se devolveu desde a chamada __call__() ao obxecto comando. Agora hai unha oportunidade de facelo:
Tamén se ampliou a lista de propiedades do obxecto Command. Engadiuse un campo de erros que devolve a saída do comando ao fluxo de erros.
Execución de comandos con nomes de Python non válidos
Case todos os sistemas teñen polo menos un programa cuxo nome non é adecuado como identificador en Python (por exemplo, a coñecida utilidade 2to3). Chámaa con
Shell.2to3()
Se non funciona, o intérprete non o deixará pasar.
A solución é chamar ao comando dun xeito indirecto:
Shell("2to3") # возвращает объект команды
Cabe destacar que do mesmo xeito pode executar comandos válidos desde o punto de vista do intérprete, o que deixa a posibilidade de crear scripts flexibles como
Implementáronse os métodos __repr__() e __str__() do obxecto da clase Command, que agora producen valores intuitivos (un comando con parámetros e a súa saída stdout, respectivamente).
Correccións de código menores.
Engadindo cobertura de proba, así como reorganizando as existentes.
Engadindo as clases Subprocess e Process, cuxo propósito é crear un nivel adicional de abstracción cando se traballa co módulo de subprocesos. Necesítase principalmente para eliminar a duplicación de código cando se traballa con Python 2/3, pero tamén pode proporcionar outros bonos.
Que hai de novo en smart-env?
A diferenza de python-shell, houbo menos cambios na biblioteca smart-env. A razón disto é simple: falta de tempo libre, durante o cal algunhas melloras potenciais (por exemplo, o autocompletado de variables de ambiente) foron trasladadas á seguinte versión.
De feito, realizáronse os seguintes cambios na biblioteca:
Correccións de código menores.
Refactorización.
Reorganización e perfeccionamento das probas existentes.
Plans para os próximos lanzamentos
biblioteca python-shell
Engadindo soporte para chamadas de comandos non bloqueantes (paralelización da execución).
biblioteca smart-env
Implantación do autocompletado de variables de ambiente na clase ENV.
Soporte para o operador in para comprobar a existencia dunha variable env.
Implementación do soporte para as funcións str() e repr() para a clase ENV.
As datas dos próximos lanzamentos anunciaranse ademais nas seguintes canles de comunicación: