跳转到主要内容

自动将 .ini/.cfg 文件转换为 TOML 等价物

项目描述

Built Status ReadTheDocs Coveralls PyPI-Server Project generated with PyScaffold

ini2toml

自动将 .ini/.cfg 文件转换为 TOML

描述

此项目的原始目的是帮助迁移 setup.cfg 文件到 PEP 621,但通过扩展,它也可以用于将任何兼容的 .ini/.cfg 文件转换为 TOML

请注意,提供的 .ini/.cfg 文件应遵循与 Python 的 ConfigParser 库相同的语法(此处称为 INI 语法),并且更具体地遵守 ConfigUpdater 限制(例如,不允许插值或重复字段)。

使用方法

ini2toml 有两种版本:“精简版”“完整版”。精简版将创建一个不包含原始 .ini/.cfg 文件中任何注释的 TOML 文档。另一方面,完整版将额外努力将这些注释翻译成 TOML 等价物(请注意,有时这种翻译并不完美,因此始终建议在之后检查 TOML 文档)。

要开始使用,您需要安装该软件包,这可以通过使用 pipx 轻松完成。

$ pipx install 'ini2toml[lite]'
# OR
$ pipx install 'ini2toml[full]'

现在您可以将 ini2toml 作为命令行工具使用。

# in you terminal
$ ini2toml --help
$ ini2toml path/to/ini/or/cfg/file

您还可以在您的 Python 脚本或项目中使用 ini2toml

# in your python code
from ini2toml.api import Translator

profile_name = "setup.cfg"
toml_str = Translator().translate(original_contents_str, profile_name)

为此,别忘了将其添加到您的 虚拟环境 或将其指定为 项目依赖项

请注意,类 Translator 将尝试根据可用的已安装依赖项猜测使用哪种风味。如果您需要更确定性的结果,请考虑使用 LiteTranslatorFullTranslator,或者在构造函数中显式指定 ini_loads_fntoml_dumps_fn 关键字参数。

有关 ini2toml 和其 Python API 的更多详细信息,请参阅 我们的文档

限制

ini2toml 将尽力将 .ini/.cfg 文件转换为高质量翻译为 .toml 文件。然而,该工具附带一些已知的限制。

  • 尽管 ini2toml 尝试保持与原始信息书写相同的顺序/序列,但有时这与 TOML 语法不兼容,因此某些内容会稍微移动一下。

  • ini2toml 使用 ConfigParser + tomli-w 实现了 “轻量级” 风味,并使用 ConfigUpdater + tomlkit 实现了 “完整” 风味。因此,它继承了这些库的限制(请参阅它们的文档以获取更多信息)。例如

    • ConfigUpdater 将难以解析插值和相关转义序列(在这一点上,它更类似于 RawConfigParser 而不是 ConfigParser)。

    • tomli-w 在格式化方面不是很灵活,并且难以处理多行字符串。

  • ini2toml 假定输入是有效的,并且不会对提供的文档进行广泛的检查。如果输出中的某些内容不符合您的预期,那么检查输入可能是一个好主意。

  • .ini/.cfg 文件在许多用例中使用,并且不可能在单个代码库中涵盖所有这些用例。即使在考虑 setup.cfg 的情况下,也有许多软件包定义了文档中的不同部分,除了 setuptools 的基本定义之外。因此,ini2toml 采取了一种“尽力而为”的方法,这可能不符合您的预期。如果是这种情况,请考虑贡献或创建您自己的 插件

  • 翻译过程仅分析给定的输入。如果原始 .ini/.cfg 文件包含对其他文件的引用,或者根据其他文件和目录的存在/存在而表现不同,则翻译将不考虑这些。

因此,建议在使用 .toml 文件进行生产之前,双重检查输出并修复任何问题。

ini2toml 也可以将 setup.py 翻译成 pyproject.toml 吗?

处理 `.py` 文件不属于 `ini2toml` 项目的范围,因此此功能尚未实现。

然而,您可能在 PyPI 上找到一些将 `setup.py` 转换为 `setup.cfg` 的工具,例如 setup-py-upgradesetuptools-py2cfg [1]

一旦您有了 `setup.cfg`,您就可以使用 `ini2toml` [2]

注意

本项目最初是在 PyScaffold 的背景下创建的,目的是帮助将现有项目迁移到在 `setuptools` 上提供 `PEP 621` 风格配置时。有关 PyScaffold 的详细信息和使用说明,请参阅 https://pyscaffold.org/

项目详情


下载文件

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

源分发

ini2toml-0.15.tar.gz (109.2 kB 查看散列值)

上传时间

构建分发

ini2toml-0.15-py3-none-any.whl (55.7 kB 查看散列值)

上传时间 Python 3

由以下支持