@@ -19,7 +19,7 @@ build-backend = "poetry.core.masonry.api"
1919
2020
2121[tool .black ]
22- target-version = [' py312 ' ]
22+ target-version = [' py313 ' ]
2323extend-exclude = '''
2424# A regex preceded with ^/ will apply only to files and directories
2525# in the root of the project.
@@ -36,7 +36,7 @@ extend-exclude = '''
3636
3737
3838[tool .ruff ]
39- target-version = " py38 " # minimum supported version
39+ target-version = " py39 " # minimum supported version
4040line-length = 88 # same as Black.
4141output-format = " concise"
4242extend-exclude = [
@@ -45,57 +45,25 @@ extend-exclude = [
4545
4646[tool .ruff .lint ]
4747select = [
48- " A" , # flake8-builtins
49- " ANN" , # flake8-annotations
50- " ARG" , # flake8-unused-arguments
51- " B" , # flake8-bugbear
52- " BLE" , # flake8-blind-except
53- " C4" , # flake8-comprehensions
54- " D" , # pydocstyle
55- " E" , # pycodestyle error
56- " EM" , # flake8-errmsg
57- " ERA" , # eradicate
58- " F" , # Pyflakes
59- " FA" , # flake8-future-annotations
60- " FBT" , # flake8-boolean-trap
61- " FIX" , # flake8-fixme
62- " FLY" , # flynt
63- " I" , # isort
64- " ICN" , # flake8-import-conventions
65- " ISC" , # flake8-implicit-str-concat
66- " PGH" , # pygrep-hooks
67- " PIE" , # flake8-pie
68- " PL" , # pylint
69- " PT" , # flake8-pytest-style
70- " Q" , # flake8-quotes
71- " RET" , # flake8-return
72- " RSE" , # flake8-raise
73- " RUF" , # ruff specific
74- " SIM" , # flake8-simplify
75- " T10" , # flake8-debugger
76- " T20" , # flake8-print
77- " TCH" , # flake8-type-checking
78- " TRY" , # tryceratops
79- " UP" , # python upgrade
80- " W" , # pycodestyle warning
81- " YTT" , # flake8-2020
82-
83- # we would like these someday, but not yet
84- # "FURB", # refurb
48+ " ALL" , # let's get all the new hotness and ignore as we need!
8549]
8650ignore = [
87- " D107" , # missing __init__ docstring, we do that in the class docstring.
88- " D203" , # one blank line before class docstring, no thanks!
89- " D212" , # multi line summary first line, we want a one line summary.
51+ " COM812" , # we prefer black's logic for trailing commas
52+ " D107" , # missing __init__ docstring, we do that in the class docstring.
53+ " D203" , # one blank line before class docstring, no thanks!
54+ " D212" , # multi line summary first line, we want a one line summary.
55+ " E501" , # black handles our line limits.
56+ " N818" , # we like our conventions with readable error classes.
57+ " S608" , # we will not have SQL injection concerns. :P
9058]
9159
9260extend-safe-fixes = [
93- " EM101" , " EM102" ,
94- " TCH001" , " TCH002" , " TCH003" , " TCH004" ,
9561 " C419" ,
9662 " D200" , " D205" , " D415" ,
63+ " EM101" , " EM102" ,
9764 " PT003" , " PT006" , " PT018" ,
9865 " RET504" ,
66+ " TCH001" , " TCH002" , " TCH003" , " TCH004" ,
9967 " UP006" , " UP007" ,
10068 " W291" ,
10169]
@@ -118,12 +86,20 @@ split-on-trailing-comma = false
11886
11987[tool .ruff .lint .per-file-ignores ]
12088"tests/**" = [
121- " D" , # we don't need public-API-polished docstrings in tests.
122- " FBT" , # using a boolean as a test object is useful!
123- " PLR" , # likewise using specific numbers and strings in tests.
124- " A" , # import __doc__ is shadowing python builtin
89+ " A" , # import __doc__ is shadowing python builtin
90+ " D" , # we don't need public-API-polished docstrings in tests.
91+ " FBT" , # using a boolean as a test object is useful!
92+ " N802" , # we are intentional about our capitalization!
93+ " N803" , # we like our standards for variable names in tests.
94+ " N806" , # we are intentional about our capitalization!
95+ " PLR" , # using specific numbers and strings in tests is useful!
96+ " PYI034" , # our Fake-ables need to be... weird.
97+ " S101" , # we want to assert in tests!
98+ " SLF001" , # we need to access private methods in tests.
99+ ]
100+ "__version__.py" = [
101+ " D" , # we don't need public-API-polished docstrings in version.
125102]
126- "__version__.py" = [" D" ]
127103
128104
129105# ###############################################################################
@@ -149,11 +125,11 @@ readme = "README.md"
149125classifiers = [
150126 " Operating System :: OS Independent" ,
151127 " Programming Language :: Python :: 3 :: Only" ,
152- " Programming Language :: Python :: 3.8" ,
153128 " Programming Language :: Python :: 3.9" ,
154129 " Programming Language :: Python :: 3.10" ,
155130 " Programming Language :: Python :: 3.11" ,
156131 " Programming Language :: Python :: 3.12" ,
132+ " Programming Language :: Python :: 3.13" ,
157133 " Development Status :: 5 - Production/Stable" ,
158134 " Intended Audience :: Developers" ,
159135 " Topic :: Software Development :: Quality Assurance" ,
@@ -172,9 +148,9 @@ classifiers = [
172148# so we dont have two different sets of package versions to update.
173149
174150[tool .poetry .dependencies ]
175- python = " ^3.8 "
151+ python = " ^3.9 "
176152
177- importlib_metadata = {version = " *" , python = " 3.8 .*" }
153+ importlib_metadata = {version = " *" , python = " 3.9 .*" }
178154pydantic = " *"
179155pydantic-settings = " *"
180156PyHamcrest = " >=2.0.0"
0 commit comments