贡献指南
欢迎贡献!
重大变化
请打开一个新议题来讨论或提出一个重大变更。讨论大想法不仅有趣,而且我们可能会节省彼此的时间。也许你正在考虑的一些工作已经在开发分支中完成了一半。
代码风格
我们使用PEP8,black用于代码格式化,ruff用于其他所有内容。这些程序的设置位于pyproject.toml中。拉取请求应遵循风格指南。我们与“black”风格的一个不同之处是,显示给用户的字符串始终使用双引号("),而内部使用的字符串使用单引号(')。
测试
新功能应附带测试以确认其正确性。
新依赖项
如果您提出的更改需要新的依赖项,我们更倾向于使用Debian或Red Hat已经打包的依赖项。这会使我们的下游包维护者的生活更加轻松。仅在PyPI或GitHub上可用且未广泛打包的包可能不会被接受。
我们不太可能接受对CUDA或其他基于GPU的库的依赖,因为这些库在许多系统上仍然难以打包和安装。我们建议将这些更改实现为插件。
Python依赖项也必须与许可证兼容。GPLv3或AGPLv3可能与项目的许可证不兼容,但LGPLv3是兼容的。
新的非Python依赖
OCRmyPDF 使用多个外部程序(如 Tesseract、Ghostscript 等)来实现其功能。一般来说,我们倾向于避免添加新的外部程序,如果必须添加外部程序,我们更倾向于选择那些已经被 Debian 或 Red Hat 打包的程序。
插件
一些新功能可能适合作为插件。插件是一种向OCRmyPDF添加功能的方式,而无需将它们添加到核心程序中。插件是与OCRmyPDF分开安装的。它们是用Python编写的,可以从PyPI安装。请参阅插件文档。
我们很高兴能从文档中链接用户到您的插件。
风格指南:是OCRmyPDF还是ocrmypdf?
程序/项目是OCRmyPDF,可执行文件或库的名称是ocrmypdf。
版权和许可
对于超过10行代码的贡献,请将您的名字添加到该文件的版权持有者列表中。核心程序根据MPL-2.0许可,测试文件和文档根据CC-BY-SA 4.0许可,杂项文件根据MIT许可,有少数例外。请仅贡献您拥有或有权根据这些许可贡献的内容。