@@ -38,13 +38,13 @@ optional-dependencies.dev = [
3838 " deptry==0.24.0" ,
3939 " doc8==2.0.0" ,
4040 " doccmd==2026.1.23.4" ,
41- " docformatter==1.7.7" ,
4241 " freezegun==1.5.5" ,
4342 " furo==2025.12.19" ,
4443 " interrogate==1.7.0" ,
4544 " mypy[faster-cache]==1.19.1" ,
4645 " mypy-strict-kwargs==2026.1.12" ,
4746 " prek==0.3.0" ,
47+ " pydocstringformatter==0.7.3" ,
4848 " pylint[spelling]==4.0.4" ,
4949 " pylint-per-file-ignores==3.2.0" ,
5050 " pyproject-fmt==2.11.1" ,
@@ -112,8 +112,8 @@ lint.select = [
112112lint.ignore = [
113113 # Ruff warns that this conflicts with the formatter.
114114 " COM812" ,
115- # Allow our chosen docstring line-style - no one-line summary.
116- " D200 " ,
115+ # Allow our chosen docstring line-style - pydocstringformatter handles formatting
116+ # but doesn't enforce D205 (blank line after summary) or D212 (summary on first line).
117117 " D205" ,
118118 " D212" ,
119119 # Ruff warns that this conflicts with the formatter.
@@ -124,6 +124,9 @@ lint.ignore = [
124124]
125125
126126lint.per-file-ignores."doccmd_*.py" = [
127+ # Allow our chosen docstring line-style - pydocstringformatter handles
128+ # formatting but docstrings in docs may not match this style.
129+ " D200" ,
127130 # Allow asserts in docs.
128131 " S101" ,
129132]
@@ -264,9 +267,6 @@ spelling-private-dict-file = 'spelling_private_dict.txt'
264267# --spelling-private-dict-file option instead of raising a message.
265268spelling-store-unknown-words = ' no'
266269
267- [tool .docformatter ]
268- make-summary-multi-line = true
269-
270270[tool .check-manifest ]
271271
272272ignore = [
@@ -331,6 +331,12 @@ enableTypeIgnoreComments = false
331331reportUnnecessaryTypeIgnoreComment = true
332332typeCheckingMode = " strict"
333333
334+ [tool .pydocstringformatter ]
335+ write = true
336+ split-summary-body = false
337+ max-line-length = 75
338+ linewrap-full-docstring = true
339+
334340[tool .interrogate ]
335341fail-under = 100
336342omit-covered-files = true
0 commit comments