-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
145 lines (125 loc) · 3.95 KB
/
pyproject.toml
File metadata and controls
145 lines (125 loc) · 3.95 KB
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pythonnative"
version = "0.13.1"
description = "Cross-platform native UI toolkit for Android and iOS"
authors = [
{ name = "Owen Carey" }
]
readme = "README.md"
requires-python = ">=3.10"
license = { file = "LICENSE" }
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: User Interfaces",
]
dependencies = [
"requests>=2.31.0",
]
[project.optional-dependencies]
ios = [
"rubicon-objc>=0.4.6,<0.5.0",
]
docs = [
"mkdocs>=1.5",
"mkdocs-material[imaging]>=9.5",
"mkdocstrings[python]>=0.24",
"mkdocs-autorefs>=1.0",
"pymdown-extensions>=10.7",
]
dev = [
"black>=24.0",
"ruff>=0.5",
"mypy>=1.10",
"pytest>=8.0",
]
ci = [
"black>=24.0",
"ruff>=0.5",
"mypy>=1.10",
"pytest>=8.0",
]
[project.scripts]
pn = "pythonnative.cli.pn:main"
[project.urls]
Homepage = "https://github.com/pythonnative/pythonnative"
Repository = "https://github.com/pythonnative/pythonnative"
Issues = "https://github.com/pythonnative/pythonnative/issues"
Documentation = "https://docs.pythonnative.com/"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools]
license-files = ["LICENSE*"]
# Include template directories inside the package so importlib.resources can find them
[tool.setuptools.package-data]
pythonnative = [
"templates/**",
]
[tool.ruff]
target-version = "py39"
line-length = 120
extend-exclude = [
"experiments",
"apps",
"templates",
"docs",
]
[tool.ruff.lint]
# Docstring (D) rules use the Google convention; see [tool.ruff.lint.pydocstyle].
# Selectively enabled so tests/examples/templates aren't penalized.
select = ["E", "F", "I", "D"]
# D107 (missing __init__ docstring): mkdocstrings is configured to merge
# __init__ into the class docstring, so the class docstring is the source of truth.
# D105 (magic method docstring): most are self-explanatory (__repr__, __eq__, etc.).
# D203/D213: conflict with Google convention defaults; ruff auto-suppresses
# these via `convention = "google"`, but we list them defensively.
ignore = ["D107", "D105", "D203", "D213"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["D"]
"examples/**/*.py" = ["D"]
"src/pythonnative/templates/**/*.py" = ["D"]
"setup.py" = ["D"]
"conftest.py" = ["D"]
# Platform handler subclasses implement the ViewHandler ABC defined in
# native_views/base.py, which carries the canonical docstrings for the
# protocol. The concrete classes are internal (registered by name in
# NativeViewRegistry, never imported by users), so requiring per-method
# docstrings would only add boilerplate that repeats the ABC.
"src/pythonnative/native_views/android.py" = ["D101", "D102"]
"src/pythonnative/native_views/ios.py" = ["D101", "D102"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.black]
line-length = 120
target-version = ['py39']
# ── Semantic Release ────────────────────────────────────────────────
[tool.semantic_release]
version_toml = ["pyproject.toml:project.version"]
version_variables = ["src/pythonnative/__init__.py:__version__"]
commit_message = "chore(release): v{version}"
tag_format = "v{version}"
major_on_zero = false
[tool.semantic_release.branches.main]
match = "main"
prerelease = false
[tool.semantic_release.changelog]
changelog_file = "CHANGELOG.md"
exclude_commit_patterns = [
"^chore\\(release\\):",
]
[tool.semantic_release.commit_parser_options]
allowed_tags = [
"build", "chore", "ci", "docs", "feat", "fix",
"perf", "refactor", "revert", "style", "test",
]
minor_tags = ["feat"]
patch_tags = ["fix", "perf"]