自动将 .ini/.cfg 文件转换为 TOML 等价物
项目描述
ini2toml
描述
此项目的原始目的是帮助迁移 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 将尝试根据可用的已安装依赖项猜测使用哪种风味。如果您需要更确定性的结果,请考虑使用 LiteTranslator 和 FullTranslator,或者在构造函数中显式指定 ini_loads_fn 和 toml_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-upgrade 和 setuptools-py2cfg [1]。
一旦您有了 `setup.cfg`,您就可以使用 `ini2toml` [2]。
提示
如果您考虑为此项目贡献力量,请查看我们的 贡献指南。
注意
本项目最初是在 PyScaffold 的背景下创建的,目的是帮助将现有项目迁移到在 `setuptools` 上提供 `PEP 621` 风格配置时。有关 PyScaffold 的详细信息和使用说明,请参阅 https://pyscaffold.org/。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。