@@ -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,19 +86,26 @@ 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# ###############################################################################
130106# END OF BOILERPLATE ScreenPyHQ CONFIGURATIONS #
131107# ###############################################################################
132- [tool .ruff .lint .flake8-builtins ]
133- builtins-allowed-modules = [" select" ]
108+
134109
135110[tool .poetry ]
136111name = " screenpy_selenium"
@@ -145,11 +120,11 @@ readme = "README.md"
145120classifiers = [
146121 " Operating System :: OS Independent" ,
147122 " Programming Language :: Python :: 3 :: Only" ,
148- " Programming Language :: Python :: 3.8" ,
149123 " Programming Language :: Python :: 3.9" ,
150124 " Programming Language :: Python :: 3.10" ,
151125 " Programming Language :: Python :: 3.11" ,
152126 " Programming Language :: Python :: 3.12" ,
127+ " Programming Language :: Python :: 3.13" ,
153128 " Development Status :: 5 - Production/Stable" ,
154129 " Intended Audience :: Developers" ,
155130 " Topic :: Software Development :: Quality Assurance" ,
@@ -168,20 +143,19 @@ classifiers = [
168143# so we dont have two different sets of package versions to update.
169144
170145[tool .poetry .dependencies ]
171- python = " ^3.8 "
146+ python = " ^3.9 "
172147
173148screenpy = " >=4.0.2"
174149screenpy_pyotp = " >=4.0.0"
175150selenium = " >=4.1.0"
176151pydantic = " *"
177152pydantic-settings = " *"
178- importlib_metadata = {version = " *" , python = " 3.8.*" }
179153
180154# convenience packages for development
181- black = {version = " 24.8 " , optional = true }
155+ black = {version = " * " , optional = true }
182156coverage = {version = " *" , optional = true }
183157cruft = {version = " *" , optional = true }
184- mypy = {version = " 1.14.1 " , optional = true }
158+ mypy = {version = " * " , optional = true }
185159pre-commit = {version = " *" , optional = true }
186160pytest = {version = " *" , optional = true }
187161pytest-mock = {version = " *" , optional = true }
0 commit comments