generated from python-project-templates/python-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pyproject.toml
113 lines (94 loc) · 5.1 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# * `pyproject.toml` 文件是用来定义 Python 项目的配置和元数据的文件。它的作用包括但不限于以下几个方面:
# * 1. **项目构建配置:** 它可以指定项目的构建系统和所需的构建工具。通过定义 `[build-system]` 部分,可以确保项目在构建时使用正确的工具和插件,以及符合相应的构建规范。
# * 2. **项目元数据:** `pyproject.toml` 文件中的 `[project]` 部分包含了项目的基本信息,如名称、版本、作者、描述、许可证等。这些元数据对于项目的识别和管理非常重要。
# * 3. **依赖管理:** 在 `[dependencies]` 和 `[project.optional-dependencies]` 部分,可以列出项目的依赖项和可选依赖项。这些信息可以被构建系统用来安装项目所需的依赖库,以及在开发或测试过程中可能需要的额外库。
# * 4. **工具配置:** `pyproject.toml` 文件还可以包含各种工具的配置选项,如代码格式化工具、静态代码分析工具、测试运行器等。这些配置可以确保项目在开发、测试和部署过程中保持一致的行为和规范。
# * 5. **项目链接和文档:** 通过 `[project.urls]` 部分,可以指定项目的代码仓库链接和项目主页链接。这些链接可以帮助其他开发者找到项目的源代码和文档。
# 这部分指定了构建系统的配置,指定了项目构建所需的工具和后端。
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
# `project` 部分定义了项目的基本信息,包括项目名称、作者、描述、许可证、版本号、所需 Python 版本和关键字。
[project]
name = "python_template"
authors = [{ name = "Chen Zhengda", email = "[email protected]" }]
description = "A pure-python project template"
readme = "README.md"
license = { text = "Apache-2.0" }
version = "0.1.0"
requires-python = ">=3.8"
keywords = ["some", "keywords"]
# classifiers 部分指定了该项目的分类信息,例如开发状态、支持的 Python 版本等。
classifiers = [
"Development Status :: 3 - Alpha",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
# dependencies 部分列出了项目的依赖项,这些是项目运行所需的外部库。
dependencies = ["numpy"]
# project.urls 部分包含了项目相关的网址链接,如仓库链接和主页链接。
[project.urls]
Repository = "https://github.com/python-project-templates/python"
Homepage = "https://github.com/python-project-templates/python"
# project.optional-dependencies 部分包含了项目开发和测试时可选的依赖项。
[project.optional-dependencies]
develop = [
"bump2version",
"check-manifest",
"isort",
"mypy",
"pytest",
"pytest-cov",
"ruff",
"semgrep",
"Sphinx",
"sphinx-markdown-builder",
"twine",
"wheel",
]
test = ["pytest", "pytest-cov"]
# tool.check-manifest 部分是关于 check-manifest 工具的配置,该工具用于检查项目清单文件是否包含了所有需要的文件。在这里,ignore 字段为空,表示不忽略任何文件。
[tool.check-manifest]
ignore = []
# tool.isort 部分包含了对 isort 工具的配置,该工具用于对 Python 代码进行 import 排序和格式化。
# 这里的设置包括了是否合并 import 语句、是否包含逗号、行长度等。default_section 和 sections 指定了分组规则,known_first_party 指定了第一方库的名称。
[tool.isort]
combine_as_imports = true
include_trailing_comma = true
line_length = 120
profile = "black"
default_section = "THIRDPARTY"
sections = "FUTURE,THIRDPARTY,FIRSTPARTY,LOCALFOLDER"
known_first_party = "python_template"
# tool.mypy 部分包含了对 mypy 工具的配置,该工具用于进行静态类型检查。这里指定了所使用的 Python 版本。
[tool.mypy]
python_version = "3.10"
show_error_codes = true
follow_imports = "silent"
strict_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
disallow_any_generics = true
check_untyped_defs = true
no_implicit_reexport = true
warn_unused_configs = true
disallow_subclassing_any = true
disallow_incomplete_defs = true
disallow_untyped_decorators = true
disallow_untyped_calls = true
# tool.pytest.ini_options 部分包含了对 pytest 工具的配置,asyncio_mode 设置了异步模式,testpaths 指定了测试文件的路径。
[tool.pytest.ini_options]
asyncio_mode = "strict"
testpaths = "python_template/tests"
# tool.ruff 部分包含了对 ruff 工具的配置,该工具用于代码风格检查。line-length 指定了每行的最大长度。
# tool.ruff.lint.per-file-ignores 部分定义了特定文件的忽略规则,这里指定了 __init__.py 文件忽略 F401 错误。
[tool.ruff]
line-length = 120
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]