11[project ]
22name = " confdantic"
3- version = " 0.1.4 "
3+ version = " 0.1.5 "
44description = " Generate user-friendly configuration files from Pydantic models"
55authors = [{ name = " zigai" , email = " ziga.ivansek@gmail.com" }]
66license = { file = " LICENSE" }
77readme = " README.md"
88requires-python = " >=3.10"
99dependencies = [
1010 " json-with-comments>=1.0.0" ,
11- " objinspect>=0.4.0 " ,
11+ " objinspect>=0.4.2 " ,
1212 " pydantic>=2.12.3" ,
1313 " ruamel-yaml>=0.18.6" ,
1414 " toml>=0.10.2" ,
@@ -54,8 +54,17 @@ keywords = [
5454]
5555
5656[project .optional-dependencies ]
57- test = [" pytest" , " coverage" ]
58- dev = [" pytest" , " coverage" , " ruff" , " pre-commit" , " mypy" , " codespell" ]
57+ test = [" pytest>=9.0.2" , " coverage>=7.13.5" ]
58+ dev = [
59+ " pytest>=9.0.2" ,
60+ " coverage>=7.13.5" ,
61+ " ruff==0.15.8" ,
62+ " pre-commit>=4.5.1" ,
63+ " mypy>=1.19.1" ,
64+ " codespell>=2.4.2" ,
65+ " rattle-lint>=1.0.4" ,
66+ " rattle-blank-lines>=0.2.4" ,
67+ ]
5968
6069[project .urls ]
6170Repository = " https://github.com/zigai/confdantic"
@@ -109,86 +118,126 @@ warn_unused_configs = true
109118strict_equality = true
110119ignore_missing_imports = true
111120
121+ [tool .codespell ]
122+ skip = ' .git,uv.lock'
123+
124+ [tool .rattle ]
125+ root = true
126+ enable = [" rattle_blank_lines.rules" ]
127+ disable = [" rattle.rules" ]
128+
112129[tool .ruff ]
113130line-length = 100
114131
115132[tool .ruff .lint ]
116- select = [
117- " F" , # Pyflakes
118- " E" , # Pycodestyle (Error)
119- ' I' , # isort
120- ' D' , # pydocstyle
121- ' D213' , # pydocstyle
122- ' UP' , # pyupgrade
123- ' YTT' , # flake8-2020
124- ' B' , # flake8-bugbear
125- " PLE" , # pylint
126- ' PYI006' ,
127- ' PYI019' ,
128- ' PYI024' ,
129- ' PYI030' ,
130- ' PYI062' ,
131- ' PYI063' ,
132- ' PYI066' ,
133- " RUF001" ,
134- " RUF002" ,
135- " RUF003" ,
136- " RUF005" ,
137- " RUF006" ,
138- " RUF012" ,
139- " RUF013" ,
140- " RUF016" ,
141- " RUF017" ,
142- " RUF018" ,
143- " RUF019" ,
144- " RUF020" ,
145- " RUF021" ,
146- " RUF024" ,
147- " RUF026" ,
148- " RUF030" ,
149- " RUF032" ,
150- " RUF033" ,
151- " RUF034" ,
152- " TRY002" ,
153- " TRY004" ,
154- " TRY201" ,
155- " TRY300" ,
156- " TRY301" ,
157- " TRY400" ,
158- " PERF101" ,
159- " RET503" ,
160- " LOG001" ,
161- " LOG002" ,
162- ]
133+ select = [" ALL" ]
163134ignore = [
135+ " ERA" ,
136+ " FBT002" ,
137+ " COM" ,
138+ " CPY" ,
139+ " DJ" ,
140+ " ANN003" ,
141+ " FIX" ,
164142 " D100" ,
165143 " D101" ,
166144 " D102" ,
167145 " D103" ,
168146 " D104" ,
169- ' D105' ,
170- ' D106' ,
171- ' D107' ,
172- ' D205' ,
147+ " D105" ,
148+ " D106" ,
149+ " D107" ,
150+ " D205" ,
151+ " D203" ,
173152 " D212" ,
174- ' D415' ,
175- ' E501' ,
176- ' B011' ,
177- ' B028' ,
178- ' B904' ,
179- ' PIE804' ,
180- " N802" ,
181- " N803" ,
153+ " E501" ,
154+ " PIE804" ,
155+ " S101" ,
156+ " EM101" ,
157+ " PYI041" ,
158+ " PYI051" ,
159+ " PYI046" ,
160+ " PYI047" ,
161+ " PYI049" ,
162+ " PYI053" ,
163+ " PYI054" ,
164+ " RET501" ,
165+ " SIM910" ,
166+ " N812" ,
167+ " PLC0415" ,
168+ " PLR0904" ,
169+ " PLR0913" ,
170+ " PLR2004" ,
171+ " PLR1711" ,
172+ " TRY003" ,
173+ " T20" ,
174+ " SIM105" ,
175+ " RET504" ,
176+ " PLR0912" ,
177+ " PLR0915" ,
178+ " SIM105" ,
179+ " TD" ,
180+ " TC001" ,
181+ " TC002" ,
182+ " TC003" ,
183+ " TC006" ,
184+ " PLW0603" ,
185+ " EM102" ,
186+ " PLW2901" ,
187+ " RSE102" ,
188+ " PGH004" ,
182189 " N806" ,
183- " UP007 " ,
190+ " FBT001 " ,
184191]
185- exclude = [" build" , " tests/** " ]
192+ exclude = [" build" ]
186193
187194[tool .ruff .lint .per-file-ignores ]
188195"__init__.py" = [
189196 " F401" , # Unused import
190197 " E402" , # Module import not at top of file
191198]
199+ "**/tests/**/*.py" = [
200+ " S104" ,
201+ " S105" ,
202+ " S106" ,
203+ " TRY004" ,
204+ " RUF003" ,
205+ " RUF012" ,
206+ " UP031" ,
207+ " SLF001" ,
208+ " ARG" ,
209+ " N806" ,
210+ " ANN001" ,
211+ " ANN201" ,
212+ " ANN202" ,
213+ " ANN204" ,
214+ " ANN401" ,
215+ " S" ,
216+ " SLF001" ,
217+ " INP001" ,
218+ " PLW0108" ,
219+ " EM102" ,
220+ " FBT001" ,
221+ " SIM300" ,
222+ ]
223+ "examples/*.py" = [" INP001" ]
224+
225+ [tool .ruff .lint .pep8-naming ]
226+ classmethod-decorators = [
227+ " pydantic.validator" ,
228+ " declared_attr" ,
229+ " expression" ,
230+ " comparator" ,
231+ ]
232+
233+ [tool .ruff .lint .flake8-builtins ]
234+ ignorelist = [" id" , " input" ]
235+
236+ [tool .ruff .lint .flake8-type-checking ]
237+ runtime-evaluated-base-classes = [
238+ " pydantic.BaseModel" ,
239+ " sqlalchemy.orm.DeclarativeBase" ,
240+ ]
192241
193242[tool .ruff .format ]
194243quote-style = " double"
@@ -201,6 +250,3 @@ known-first-party = ["confdantic", "tests"]
201250
202251[tool .ruff .lint .pydocstyle ]
203252convention = " google"
204-
205- [tool .codespell ]
206- skip = ' .git,uv.lock'
0 commit comments