保持TOML配置集中化和可定制
项目描述
drytoml
保持您的TOML配置集中化和可定制。
通过drytoml
,TOML文件可以引用来自另一个TOML文件中的任何内容。引用支持相对/绝对路径和URL,可以指向整个文件、特定的表或任何可以通过一系列getitem
调用访问的内容,如["tool", "poetry", "source", 0, "url"]
。drytoml
会为您处理内容嵌入。
受flakehell和nitpick的启发,drytoml
背后的主要动机是让多个项目共享一个共同的、集中的配置来定义编码风格,但在需要时仍然允许细粒度控制。
这与nitpick有意识的区别,它作为linters运行,确保您的本地文件具有正确的内容。
使用方法
drytoml
有两种主要用法
-
使用文件作为引用并“构建”生成的文件
# 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?$'
-
使用包含的包装器,允许您在当前配置中使用引用而无需更改任何文件
考虑上面示例中的原始
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
包含一组包装器,- 创建一个嵌入的临时文件,相当于上面示例中的结果
pyproject.toml
。 - 配置包装工具(在本例中为
black
)使用临时文件 - 运行
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.Parser
的extend_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
运行pytestsphinx-build docs/src docs/build
...等等
-
本地地,使用act(已安装在devcontainer中)
例如,要模拟PR运行测试工作流程
act -W .github/workflows/tests.yml pull_request
待办事项
查看当前开发此处
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建版本
drytoml-0.2.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ea50bb980c5fc426dd3fff735e603fd94d4500e496c24d102273b7d01041ed8 |
|
MD5 | 75d1b7c7010c8e366604a989142cc613 |
|
BLAKE2b-256 | bbf9480817a01ffd1b47679b9542291c475d6cabc6f805ec23f8940a82b2ff8f |
drytoml-0.2.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7d1231cb1cad3ab0650498a9b214b85e5d7cf314ab982bd6be1018f770d6cbe |
|
MD5 | 55f90c3cfd036736d1a592a57b14d000 |
|
BLAKE2b-256 | e3009659c2823f0f6634a21536d0050456dc009e2dadea0b3e460882cefd5b02 |