@@ -5,10 +5,6 @@ requires = [
55 " versioningit<4" ,
66]
77
8- [tool .versioningit .vcs ]
9- method = " git"
10- default-tag = " 0.0.0"
11-
128[project ]
139name = " linksmith"
1410description = " A program for processing Hyperlinks, Sphinx references, and inventories."
@@ -88,57 +84,119 @@ dependencies = [
8884 " tabulate<0.10" ,
8985 " verlib2==0.2.0" ,
9086]
91- [project .optional-dependencies ]
92- develop = [
87+ optional-dependencies.develop = [
9388 " black<25" ,
9489 " mypy<1.15" ,
9590 " poethepoet<1" ,
9691 " pyproject-fmt<3" ,
9792 " ruff<0.9" ,
9893 " validate-pyproject<0.19" ,
9994]
100- docs = [
95+ optional-dependencies. docs = [
10196 " furo==2024.8.6" ,
10297 " sphinx<8.1" ,
10398 " sphinx-autobuild==2024.2.4" ,
10499 " sphinx-copybutton<0.6" ,
105100 " sphinx-design-elements<0.5" ,
106101]
107- release = [
102+ optional-dependencies. release = [
108103 " build<2" ,
109104 " keyring" ,
110105 " twine<7" ,
111106]
112- test = [
107+ optional-dependencies. test = [
113108 " pytest<9" ,
114109 " pytest-cov<7" ,
115- " sphinx_pytest <0.3" ,
110+ " sphinx-pytest <0.3" ,
116111]
117- [project .urls ]
118- changelog = " https://github.com/tech-writing/linksmith/blob/main/CHANGES.md"
119- documentation = " https://linksmith.readthedocs.io/"
120- homepage = " https://linksmith.readthedocs.io/"
121- repository = " https://github.com/tech-writing/linksmith"
122- [project .scripts ]
123- anansi = " linksmith.sphinx.community.anansi:cli"
124- linksmith = " linksmith.cli:cli"
112+ urls.changelog = " https://github.com/tech-writing/linksmith/blob/main/CHANGES.md"
113+ urls.documentation = " https://linksmith.readthedocs.io/"
114+ urls.homepage = " https://linksmith.readthedocs.io/"
115+ urls.repository = " https://github.com/tech-writing/linksmith"
116+ scripts.anansi = " linksmith.sphinx.community.anansi:cli"
117+ scripts.linksmith = " linksmith.cli:cli"
118+
119+ [tool .setuptools .packages .find ]
120+ namespaces = false
125121
126122[tool .black ]
127123line-length = 120
128124
125+ [tool .ruff ]
126+ line-length = 120
127+
128+ lint.select = [
129+ # flake8-unused-arguments
130+ " ARG" ,
131+ # pyupgrade
132+ # "UP",
133+ # flake8-commas
134+ " COM" ,
135+ # Pycodestyle
136+ " E" ,
137+ # eradicate
138+ " ERA" ,
139+ # Pyflakes
140+ " F" ,
141+ # isort
142+ " I" ,
143+ # flake8-quotes
144+ " Q" ,
145+ # return
146+ " RET" ,
147+ # Bandit
148+ " S" ,
149+ # print
150+ " T20" ,
151+ # future-annotations
152+ # "FA",
153+ # flake8-type-checking
154+ " TCH" ,
155+ " W" ,
156+ # flake8-2020
157+ " YTT" ,
158+ # flake8-use-pathlib
159+ # "PTH"
160+ ]
161+
162+ lint.extend-ignore = [
163+ # Unnecessary variable assignment before `return` statement
164+ " RET504" ,
165+ # Unnecessary `elif` after `return` statement
166+ " RET505" ,
167+ ]
168+
169+ lint.per-file-ignores."docs/conf.py" = [ " ERA001" ] # Allow commented-out code.
170+ lint.per-file-ignores."linksmith/cli.py" = [ " T201" ] # Allow `print`.
171+ lint.per-file-ignores."tests/*" = [ " S101" ] # Allow use of `assert`.
172+
173+ [tool .pytest .ini_options ]
174+ addopts = " -rA --verbosity=3 --cov --cov-report=term-missing --cov-report=xml"
175+ minversion = " 2.0"
176+ log_level = " DEBUG"
177+ log_cli_level = " DEBUG"
178+ log_format = " %(asctime)-15s [%(name)-36s] %(levelname)-8s: %(message)s"
179+ testpaths = [
180+ " linksmith" ,
181+ " tests" ,
182+ ]
183+ xfail_strict = true
184+ markers = [
185+ ]
186+
129187[tool .coverage .run ]
130188branch = false
131189omit = [
132190 " tests/*" ,
133191]
134- source = [" linksmith" ]
192+ source = [ " linksmith" ]
135193
136194[tool .coverage .report ]
137195fail_under = 0
138196show_missing = true
139197
140198[tool .mypy ]
141- packages = [" linksmith" ]
199+ packages = [ " linksmith" ]
142200exclude = [
143201]
144202ignore_missing_imports = true
@@ -152,73 +210,9 @@ strict_equality = true
152210warn_unused_ignores = true
153211warn_redundant_casts = true
154212
155- [tool .pytest .ini_options ]
156- addopts = " -rA --verbosity=3 --cov --cov-report=term-missing --cov-report=xml"
157- minversion = " 2.0"
158- log_level = " DEBUG"
159- log_cli_level = " DEBUG"
160- log_format = " %(asctime)-15s [%(name)-36s] %(levelname)-8s: %(message)s"
161- testpaths = [
162- " linksmith" ,
163- " tests" ,
164- ]
165- xfail_strict = true
166- markers = [
167- ]
168-
169- [tool .ruff ]
170- line-length = 120
171-
172- lint.select = [
173- # Pycodestyle
174- " E" ,
175- " W" ,
176- # Pyflakes
177- " F" ,
178- # isort
179- " I" ,
180- # Bandit
181- " S" ,
182- # flake8-quotes
183- " Q" ,
184- # eradicate
185- " ERA" ,
186- # flake8-2020
187- " YTT" ,
188- # print
189- " T20" ,
190- # return
191- " RET" ,
192- # pyupgrade
193- # "UP",
194- # flake8-commas
195- " COM" ,
196- # future-annotations
197- # "FA",
198- # flake8-type-checking
199- " TCH" ,
200- # flake8-unused-arguments
201- " ARG" ,
202- # flake8-use-pathlib
203- # "PTH"
204- ]
205-
206- lint.extend-ignore = [
207- # Unnecessary variable assignment before `return` statement
208- " RET504" ,
209- # Unnecessary `elif` after `return` statement
210- " RET505" ,
211- ]
212-
213-
214- [tool .ruff .lint .per-file-ignores ]
215- "tests/*" = [" S101" ] # Allow use of `assert`.
216- "docs/conf.py" = [" ERA001" ] # Allow commented-out code.
217- "linksmith/cli.py" = [" T201" ] # Allow `print`.
218-
219- [tool .setuptools .packages .find ]
220- namespaces = false
221-
213+ [tool .versioningit .vcs ]
214+ method = " git"
215+ default-tag = " 0.0.0"
222216
223217# ===================
224218# Tasks configuration
@@ -232,10 +226,10 @@ check = [
232226]
233227
234228docs-autobuild = [
235- { cmd = " sphinx-autobuild --open-browser --watch=docs docs docs/_build" }
229+ { cmd = " sphinx-autobuild --open-browser --watch=docs docs docs/_build" },
236230]
237231docs-html = [
238- { cmd = " sphinx-build -W --keep-going docs docs/_build" }
232+ { cmd = " sphinx-build -W --keep-going docs docs/_build" },
239233]
240234
241235format = [
0 commit comments