我们将Python和Bash结合在一起:python-shell和smart-env v库的发布。1.0.1

祝大家有美好的一天!

2020年2月29日,举行了smart-envpython-shell库的官方微发布对于那些不认识的人,我建议您先阅读第一篇文章

简而言之,更改包括命令的自动完成,扩展了运行命令的功能,一些重构和错误修复。

我要求猫下提供详细信息。

python-shell的新功能是什么?


我马上开始甜点。

团队完成


同意-当编辑器/ IDE /终端提示命令名称,有时调用参数时,这很方便?因此,python-shell在提供此类功能方面取得了一些进展。由于事实上的Shell类的字段不是其字段(无处不在的__getattr__),因此也自动创建了自动补全(分别通过重载__dir__方法)。自动完成当前正在BPython和IPython环境上运行。当然,我希望看到与更古老的产品(例如PyCharm)的集成,并且在这个方向上,我们正在探索实现的可能性。

添加属性


作为发行版的一部分,Shell类收到了一个新的last_command属性。由于以下事实引起了对它的需要:当具有非零返回码的命令抛出ShellException时,Command对象不是从该命令对象的__call __()调用返回的。现在有机会这样做:

try:
    command = Shell.touch('/foo.txt')
except ShellException:
    command = Shell.last_command

还扩展了Command对象的属性列表。添加了errors字段,该字段将命令的输出返回到错误流。

使用Python无效名称运行命令


几乎任何系统都至少有一个程序的名称不适合Python中的标识符(例如,众所周知的实用程序2to3)。给她打电话

Shell.2to3()

失败-解释器不会跳过。
解决方案是在解决方法中调用该命令:

Shell("2to3")  #   

值得注意的是,以相同的方式可以运行从解释器的角度来看有效的命令,这使得创建诸如

cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)

小改动


  • 实现了Command对象的__repr __()和__str __()方法,它们现在产生直观的值(分别带有参数的命令及其标准输出)。
  • 通过代码进行较小的更正。
  • 增加测试范围并重组现有范围。
  • 添加Subprocess和Process类,其目的是在使用subprocess模块​​时创建附加的抽象级别。在大多数情况下,使用Python 2/3时有必要消除代码重复,但它可能会带来其他好处。

smart-env的新功能是什么?


与python-shell不同,smart-env库中的更改较少。这样做的原因很简单-缺乏空闲时间,在此期间,一些潜在的改进(例如,环境变量的完成)被转移到了下一版本中。

实际上,对该库进行了以下更改:

  • 通过代码进行较小的更正。
  • 重构
  • 重组和完善现有测试。

下一个发行计划


Python-shell库


  • 添加对非阻塞命令调用的支持(并行执行)。

智能环境库


  • 在ENV类中实现环境变量的自完成。
  • 支持in运算符,以验证是否存在env变量。
  • 为ENV类实现str()和repr()函数。

下一个发行日期将通过以下交流渠道另行宣布:


All Articles