@@ -57,7 +57,6 @@ optional-dependencies.dev = [
5757 " dirty-equals==0.11" ,
5858 " doc8==1.1.1" ,
5959 " doccmd==2026.1.25" ,
60- " docformatter==1.7.7" ,
6160 " docker==7.1.0" ,
6261 " enum-tools[sphinx]==0.13.0" ,
6362 " freezegun==1.5.5" ,
@@ -66,6 +65,7 @@ optional-dependencies.dev = [
6665 " mypy[faster-cache]==1.19.1" ,
6766 " mypy-strict-kwargs==2026.1.12" ,
6867 " prek==0.3.0" ,
68+ " pydocstringformatter==0.7.3" ,
6969 " pydocstyle==6.3" ,
7070 " pylint[spelling]==4.0.4" ,
7171 " pylint-per-file-ignores==3.2.0" ,
@@ -152,8 +152,8 @@ lint.select = [
152152lint.ignore = [
153153 # Ruff warns that this conflicts with the formatter.
154154 " COM812" ,
155- # Allow our chosen docstring line-style - no one-line summary.
156- " D200 " ,
155+ # Allow our chosen docstring line-style - pydocstringformatter handles formatting
156+ # but doesn't enforce D205 (blank line after summary) or D212 (summary on first line).
157157 " D205" ,
158158 " D212" ,
159159 " D415" ,
@@ -298,9 +298,6 @@ spelling-private-dict-file = 'spelling_private_dict.txt'
298298# --spelling-private-dict-file option instead of raising a message.
299299spelling-store-unknown-words = ' no'
300300
301- [tool .docformatter ]
302- make-summary-multi-line = true
303-
304301[tool .check-manifest ]
305302
306303ignore = [
@@ -403,6 +400,12 @@ enableTypeIgnoreComments = false
403400reportUnnecessaryTypeIgnoreComment = true
404401typeCheckingMode = " strict"
405402
403+ [tool .pydocstringformatter ]
404+ write = true
405+ split-summary-body = false
406+ max-line-length = 75
407+ linewrap-full-docstring = true
408+
406409[tool .interrogate ]
407410fail-under = 100
408411omit-covered-files = true
0 commit comments