跳转到主要内容

保持TOML配置集中化和可定制

项目描述

drytoml

保持您的TOML配置集中化和可定制。


PyPI PyPI - Python Version


ReadTheDocs


Format Lint Test codecov


VSCode Ready-to-Code License: Unlicense


通过drytoml,TOML文件可以引用来自另一个TOML文件中的任何内容。引用支持相对/绝对路径和URL,可以指向整个文件、特定的表或任何可以通过一系列getitem调用访问的内容,如["tool", "poetry", "source", 0, "url"]drytoml会为您处理内容嵌入。

flakehellnitpick的启发,drytoml背后的主要动机是让多个项目共享一个共同的、集中的配置来定义编码风格,但在需要时仍然允许细粒度控制。

这与nitpick有意识的区别,它作为linters运行,确保您的本地文件具有正确的内容。

使用方法

drytoml有两种主要用法

  1. 使用文件作为引用并“构建”生成的文件

    # contents of pyproject.dry.toml
    ...
    [tool.black]
    __extends = "../../common/black.toml"
    target-version = ['py37']
    include = '\.pyi?$'
    ...
    
    # contents of ../../common/black.toml
    [tool.black]
    line-length = 100
    
    $ dry export --file=pyproject.dry.toml > pyproject.toml
    
    # contents of pyproject.toml
    [tool.black]
    line-length = 100
    target-version = ['py37']
    include = '\.pyi?$'
    
  2. 使用包含的包装器,允许您在当前配置中使用引用而无需更改任何文件

    考虑上面示例中的原始pyproject.dry.toml,下面展示了drytoml的另一种使用方法。而不是这个

    $ black .
    All done! ✨ 🍰 ✨
    14 files left unchanged.
    

    您会运行这个

    $ dry black
    reformatted /path/to/cwd/file_with_potentially_long_lines.py
    reformatted /path/to/cwd/another_file_with_potentially_long_lines.py
    All done! ✨ 🍰 ✨
    2 files reformatted, 12 files left unchanged.
    

    刚才发生了什么?drytoml包含一组包装器,

    1. 创建一个嵌入的临时文件,相当于上面示例中的结果pyproject.toml
    2. 配置包装工具(在本例中为black)使用临时文件
    3. 运行black,并在退出时删除文件。

目前,以下包装器可用(更多即将到来,欢迎贡献力量)

进行中

  • docformatter
  • pytest

注意事项

尽管flakehell项目已被归档,但我们从这里保持了一个分支,作为pypi上的flakeheaven可用。

设置

先决条件

  • 兼容的python >3.6.9
  • [推荐] virtualenv
  • 最新的pip

安装

使用pip、poetry等常规方式安装

  • pip install drytoml
  • poetry add drytoml(你可能希望使用poetry add --dev drytoml代替)

使用方法

对于任何命令,运行--help以查找标志和用法。以下列出了其中一些最常用的

  • 使用提供的任何包装器作为子命令,例如使用dry black而不是black
  • 使用dry -q export并将输出重定向到文件,以生成包含转义内容的新文件
  • 使用dry cache来管理远程引用的缓存。

常见问题解答

问题:我想使用不同的键来触发转义

答案:在cli模式下(使用dry命令),你可以传递--key标志来更改它。在api模式下(从python代码),使用自定义值初始化drytoml.parser.Parserextend_key参数。

问题:我已更改了上游的引用(例如在github上),但仍然得到相同的结果。

答案:运行dry cache clear --help以查看可用选项。

贡献

首先创建一个问题,分叉项目并创建一个Pull Request。

设置开发环境

如果你有docker,最简单的方法是在vscode中使用提供的devcontainer,它已经预先安装了一切。你必须使用remote-containers扩展打开克隆的目录。只需运行poetry shell或将任何命令前缀为poetry run即可确保命令在虚拟环境中运行。

或者,你可以使用poetry: poetry install -E dev

以下步骤假设你已经激活了venv。

提交

  • 每个分支的提交都必须遵循常规提交。发布是自动完成的,并且需要符合常规提交消息。

  • 要验证提交,你可以安装pre-commit钩子

    pre-commit install --hook-type commit-msg
    
  • 在venv激活后,你可以使用cz commit而不是git commit来提交,以确保符合要求。

运行检查

你可以查看.github/workflows中定义的不同操作。有三种方式来检查你的代码

  • 远程地,通过推送到一个公开的PR。你将在PR页面上看到结果。

  • 手动执行,在venv内部执行检查

    例如,要生成文档,检查.github/workflows/docs。要运行“使用Sphinx构建”步骤

    sphinx-build docs/src docs/build
    

    或者从.github/workflows/tests.yml运行pytest

    sphinx-build docs/src docs/build
    

    ...等等

  • 本地地,使用act(已安装在devcontainer中)

例如,要模拟PR运行测试工作流程

act -W .github/workflows/tests.yml pull_request

待办事项

查看当前开发此处

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息

源代码分发

drytoml-0.2.8.tar.gz (19.2 kB 查看哈希值)

上传时间 源代码

构建版本

drytoml-0.2.8-py3-none-any.whl (18.5 kB 查看哈希值)

上传时间 Python 3

由以下提供支持