用于将外部文件中的元数据锚定到源代码的系统

spor的Python项目详细描述


Python versionBuild Status

孢子

用于将外部文件中的元数据锚定到源代码的系统。

spor允许您为源代码的元素定义元数据。这个 元数据与源代码保存在一个单独的文件中,这意味着 你不需要在源文件中添加额外的信息 编码成注释。在处理事实的同时做到这一点 源代码随着时间的推移而改变,spor使用了各种“锚定” 保持元数据与源代码同步的技术(或 知道他们何时变得难以控制的不同步)。

快速启动

在使用spor将元数据定位到文件之前,需要初始化 使用init命令的存储库:

$ spor init

这在精神上与git init非常相似。它在 当前目录名为.spor,这是spor将保存 它需要的信息。

现在您可以创建锚定。假设您有一个文件example.py,如 这个:

# example.pydeffunc(x):returnx*2

通过如下指定起始偏移量和锚定宽度,可以将元数据锚定到第4行(函数定义):

$ echo "{\"meta\": \"data\"}" | spor add example.py 32 12 10
You don’t have to pipe the metadata into the ^{tt5}$ command. If you don’t, spor will pop up an editor so that you can enter the metadata there.

结尾的10指定锚定代码周围“上下文”的大小 我们用来更新锚。

这将把字典{meta: data}与代码return x * 2相关联。你可以看到 使用list命令获得此元数据:

$ spor list example.py
example.py:32 => {'meta': 'data'}

元数据可以是任何有效的json。spor根本不看数据,所以 一切都由你决定。

动机

我使用这个工具的主要动机来自我对突变的研究 测试工具Cosmic Ray。 CR用户需要能够指定其源代码的哪些部分 不应该变异,或者只应该以特定的方式变异。 而不是让它们将这些处理指令嵌入到源代码中 代码,我想用一个 单独的元数据文件。

功能

spor需要支持以下功能:

  1. 向源文件中的特定文本区域添加/编辑/删除元数据
  2. 查询现有元数据
  3. 可能时自动更新元数据,或在 不
  4. 提供“更新”元数据的工具 锚定数据

设计需要对两个用户都敏感(即 可能需要不时地手动处理元数据)。 作为编程用户。我相信设计会随着我们的发展而发展,所以我 一开始要尽量简单明了。

理想情况下,spor可以处理任何编程语言(实际上,任何 文本文档),但它的初始目标将是python源代码。

发展

spor很新很小,我们可以做一些有趣的事情,比如试用新工具。 我们使用的不是setuptools等,而是poetry。所以如果你想为spor做贡献, 你需要做的第一件事是install poetry

要安装软件包,请使用:

poetry install

测试

上面的安装命令将安装所有的测试依赖项 好。要运行所有测试,请运行^{tt8}$

tox

要运行pytests单元测试,请运行:

poetry run pytest tests/unittests

要运行radish测试,请运行:

poetry run radish tests/e2e/features -b tests/e2e/radish

注释

“锚定”领域并不是新的,我们有一些现有的工作。 需要注意:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Windows 7 64位上运行Jive Dev Enrivoment的java   Java/C/C++/C#/PHP到Pascal的转换器?   java将字符串列表转换为单个对象   java SimpleAdapter,spinner中的文本和图像   java当客户端返回时,有状态会话bean如何恢复状态?   JavaWebLogic。jdbc。包装纸。无法将数组\u oracle\u sql\u数组强制转换为oracle。sql。大堆   java MySQL/Hibernate检索列映射为LocalTime的错误数据   java如何检测页面中是否包含句子(模糊)?   java如何在springboot框架中验证wsdl   JTextPane中的java双列表项插入   java根据窗口大小调整JScrollPane的大小   sql如何在java中映射VARCHAR2(5)的类型表?   用于生成Cron表达式的java类型转换   如何将基于spring注释的Hibernate代码迁移到JavaEE   java对象作为参数?   JavaSeleniumWebDriver:在许多输入中设置值的更快方法