建立 Python 和 Bash 友谊:发布 python-shell 和 smart-env v 库。 1.0.1

所有美好的一天!

二月29 2020年 图书馆的官方微发布发生了 智能环境 и 蟒蛇壳。 不了解的朋友建议先阅读一下 第一篇文章.

简而言之,这些变化包括命令完成、运行命令的扩展功能、一些重构和错误修复。

详情请见猫。

python-shell 有什么新功能?

我马上开始吃甜点。

命令完成

同意 - 当编辑器/IDE/终端提示您输入命令名称,有时甚至是调用参数时,这很方便吗? 所以 python-shell 在提供类似的功能方面正在逐渐取得进展。 由于 Shell 类的字段实际上不是它的字段(无处不在的 __getattr__ ),因此自动补全也是从头开始创建的(分别通过重载 __dir__ 方法)。 自动补全目前适用于 BPython 和 IPython 环境。 当然,我希望看到与 PyCharm 等更古老的产品的集成,并且正在朝这个方向研究实现的可能性。

添加属性

作为该版本的一部分,Shell 类收到了一个新的last_command 属性。 之所以需要它,是因为当具有非零返回代码的命令引发 ShellException 时,对命令对象的 __call__() 调用不会返回 Command 对象。 现在有机会这样做:

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

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

使用无效的 Python 名称运行命令

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

Shell.2to3()

如果不起作用,口译员将不会让其通过。
解决办法是迂回调用命令:

Shell("2to3")  # возвращает объект команды

值得注意的是,以同样的方式,您可以运行从解释器的角度来看有效的命令,这使得有机会创建灵活的脚本,例如

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

小改动

  • Command 类对象的 __repr__() 和 __str__() 方法已实现,现在可以生成直观的值(分别是带有参数的命令及其 stdout 输出)。
  • 较小的代码修复。
  • 添加测试覆盖范围,并重组现有的测试覆盖范围。
  • 添加 Subprocess 和 Process 类,其目的是在使用 subprocess 模块时创建额外的抽象级别。 主要是为了消除使用 Python 2/3 时的代码重复,但也可能提供其他好处。

smart-env 有什么新功能?

与 python-shell 不同,smart-env 库的变化较少。 原因很简单 - 缺乏空闲时间,在此期间一些潜在的改进(例如,环境变量的自动完成)被移至下一个版本。

事实上,该库已进行以下更改:

  • 较小的代码修复。
  • 重构。
  • 现有测试的重组和细化。

下一个版本的计划

python-shell 库

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

智能环境库

  • ENV 类中环境变量自动完成的实现。
  • 支持 in 运算符来检查环境变量是否存在。
  • 实现对 ENV 类的 str() 和 repr() 函数的支持。

下一个版本的日期将通过以下沟通渠道进一步公布:

来源: habr.com

添加评论