Skip to content

Commit e452db0

Browse files
committed
feat: drop support for python 3.9 and upgrade minimum library version
1 parent 7f7b279 commit e452db0

File tree

2 files changed

+996
-287
lines changed

2 files changed

+996
-287
lines changed

pyproject.toml

Lines changed: 60 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "taskiq-ydb"
3-
version = "0.3.1"
3+
version = "0.4.0"
44
description = "YDB integration for taskiq"
55
readme = "README.md"
66
license = "MIT"
@@ -14,7 +14,6 @@ classifiers = [
1414
"Programming Language :: Python",
1515
"Programming Language :: Python :: 3",
1616
"Programming Language :: Python :: 3 :: Only",
17-
"Programming Language :: Python :: 3.9",
1817
"Programming Language :: Python :: 3.10",
1918
"Programming Language :: Python :: 3.11",
2019
"Programming Language :: Python :: 3.12",
@@ -31,10 +30,10 @@ keywords = ["taskiq", "tasks", "distributed", "async", "ydb"]
3130
authors = [
3231
{name = "Anfimov Dima", email = "lovesolaristics@gmail.com"}
3332
]
34-
requires-python = ">=3.9"
33+
requires-python = ">=3.10"
3534
dependencies = [
36-
"taskiq>=0.11.16",
37-
"ydb>=3.20.1",
35+
"taskiq>=0.11.18",
36+
"ydb>=3.21.12",
3837
]
3938

4039
[project.urls]
@@ -43,13 +42,36 @@ dependencies = [
4342

4443
[dependency-groups]
4544
dev = [
46-
"pytest>=8.3.5",
47-
"pytest-asyncio==0.26.0",
48-
"pytest-cov>=6.1.1",
45+
{include-group = "lint"},
46+
{include-group = "test"},
47+
{include-group = "docs"},
48+
"prek>=0.2.8",
49+
]
50+
lint = [
51+
"ruff>=0.14.0",
52+
"bandit>=1.8.6",
53+
"codespell>=2.4.1",
54+
"zizmor>=1.15.2",
55+
# type check
56+
"mypy>=1.18.1",
57+
]
58+
test = [
59+
"pytest>=8.4.2",
60+
"pytest-asyncio>=1.1.0",
61+
"pytest-cov>=7.0.0",
4962
"pytest-report>=0.2.1",
50-
"ruff>=0.11.7",
51-
"mypy>=1.15.0",
5263
]
64+
docs = [
65+
"mkdocs-material>=9.6.22",
66+
"mkdocstrings-python>=1.18.2",
67+
]
68+
69+
[build-system]
70+
requires = ["uv_build>=0.8.14,<0.9.0"]
71+
build-backend = "uv_build"
72+
73+
[tool.uv.build-backend]
74+
module-name = "taskiq_ydb"
5375

5476
[tool.pytest.ini_options]
5577
pythonpath = [
@@ -60,7 +82,6 @@ asyncio_default_fixture_loop_scope = "function"
6082
markers = [
6183
"unit: marks unit tests",
6284
"integration: marks tests with real infrastructure env",
63-
"linting: marks tests as linter/static analyzers",
6485
]
6586
filterwarnings = [
6687
"ignore:The event_loop fixture provided by pytest-asyncio has been redefined:DeprecationWarning",
@@ -72,17 +93,19 @@ exclude_lines = [
7293
"def __repr__",
7394
"def __str__",
7495
"def __unicode__",
96+
"if tp.TYPE_CHECKING:",
7597
]
7698
show_missing = true
7799
skip_empty = true
78100
omit = [
79101
"*/__init__.py",
80-
"tests/*",
102+
"venv/*",
103+
"tests/*"
81104
]
82105

83106
[tool.ruff]
84107
line-length = 120
85-
target-version = "py39"
108+
target-version = "py310"
86109

87110
[tool.ruff.lint]
88111
select = ["ALL"]
@@ -94,6 +117,7 @@ ignore = [
94117
# Conflicted rules
95118
"D203", # with D211
96119
"D212", # with D213
120+
"D413",
97121
]
98122

99123
[tool.ruff.lint.per-file-ignores]
@@ -111,12 +135,17 @@ ignore = [
111135
"S101", # assert usage
112136
"S311", # pseudo-random generators are not suitable for cryptographic purposes
113137
]
114-
"tests/test_linting.py" = [
115-
"S603", # subprocess usage
138+
"examples/*" = [
139+
"D",
140+
"T201", # print usage
141+
"INP001",
116142
]
117143

144+
[tool.ruff.lint.pydocstyle]
145+
convention = "google"
146+
118147
[tool.ruff.lint.isort]
119-
known-local-folder = ["taskiq_aiopg"]
148+
known-local-folder = ["taskiq_ydb"]
120149
lines-after-imports = 2
121150

122151
[tool.ruff.lint.flake8-quotes]
@@ -128,8 +157,19 @@ inline-quotes = "single"
128157
quote-style = "single"
129158

130159
[tool.mypy]
131-
check_untyped_defs = true
132-
disallow_incomplete_defs = true
133-
disallow_untyped_defs = true
160+
python_version = "3.10"
161+
modules = "taskiq_ydb"
162+
exclude_gitignore = true
163+
platform = "linux"
164+
follow_imports = "normal"
134165
ignore_missing_imports = false
135-
no_implicit_optional = true
166+
mypy_path = "stubs"
167+
disallow_untyped_defs = true
168+
warn_return_any = true
169+
warn_unreachable = true
170+
warn_no_return = true
171+
warn_unused_ignores = true
172+
warn_redundant_casts = true
173+
174+
[tool.bandit]
175+
skips = ["B608"]

0 commit comments

Comments
 (0)