111 lines
3.1 KiB
TOML
111 lines
3.1 KiB
TOML
[project]
|
|
name = "visaapply"
|
|
version = "0.1.0"
|
|
description = "Watches Visametric (Belgrade) German-Schengen visa appointment slots and notifies Telegram when slots appear. Notify-only — does not book."
|
|
readme = "README.md"
|
|
requires-python = ">=3.13"
|
|
authors = [{ name = "Pavel Kirilin", email = "s3riussan@gmail.com" }]
|
|
dependencies = [
|
|
"pydantic-settings>=2.15.0",
|
|
"requests>=2.34.2",
|
|
"solvecaptcha-python>=1.0.2",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"mypy>=2.3.1",
|
|
"ruff>=0.16.9",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["uv_build>=0.12.20,<0.13.0"]
|
|
build-backend = "uv_build"
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
strict = true
|
|
plugins = ["pydantic.mypy"]
|
|
ignore_missing_imports = true
|
|
disallow_untyped_calls = false
|
|
disallow_subclassing_any = false
|
|
pretty = true
|
|
implicit_reexport = true
|
|
allow_untyped_decorators = true
|
|
warn_return_any = false
|
|
warn_unused_ignores = false
|
|
|
|
[tool.ruff]
|
|
target-version = "py310"
|
|
exclude = [".venv/"]
|
|
line-length = 88
|
|
# List of enabled rulsets.
|
|
# See https://docs.astral.sh/ruff/rules/ for more information.
|
|
lint.select = [
|
|
"E", # Error
|
|
"F", # Pyflakes
|
|
"W", # Pycodestyle
|
|
"C90", # McCabe complexity
|
|
"I", # Isort
|
|
"N", # pep8-naming
|
|
"D", # Pydocstyle
|
|
"ANN", # Pytype annotations
|
|
"S", # Bandit
|
|
"B", # Bugbear
|
|
"COM", # Commas
|
|
"C4", # Comprehensions
|
|
"ISC", # Implicit string concat
|
|
"PIE", # Unnecessary code
|
|
"T20", # Catch prints
|
|
"PYI", # validate pyi files
|
|
"Q", # Checks for quotes
|
|
"RSE", # Checks raise statements
|
|
"RET", # Checks return statements
|
|
"SLF", # Self checks
|
|
"SIM", # Simplificator
|
|
"PTH", # Pathlib checks
|
|
"ERA", # Checks for commented out code
|
|
"PL", # PyLint checks
|
|
"RUF", # Specific to Ruff checks
|
|
"FA102", # Future annotations
|
|
"UP", # Pyupgrade
|
|
"G", # flake8-logging-format
|
|
]
|
|
lint.ignore = [
|
|
"D105", # Missing docstring in magic method
|
|
"D107", # Missing docstring in __init__
|
|
"D212", # Multi-line docstring summary should start at the first line
|
|
"D401", # First line should be in imperative mood
|
|
"D104", # Missing docstring in public package
|
|
"D100", # Missing docstring in public module
|
|
"ANN401", # typing.Any are disallowed in `**kwargs
|
|
"PLR0913", # Too many arguments for function call
|
|
"PLR0917", # Too many positional arguments
|
|
"D106" # Missing docstring in public nested class
|
|
]
|
|
lint.mccabe = { max-complexity = 10 }
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/**/*" = [
|
|
"S101", # Use of assert detected
|
|
"S301", # Use of pickle detected
|
|
"D103", # Missing docstring in public function
|
|
"SLF001", # Private member accessed
|
|
"S311", # Standard pseudo-random generators are not suitable for security/cryptographic purposes
|
|
"D101", # Missing docstring in public class
|
|
"D102", # Missing docstring in public method
|
|
"PLR2004" # Magic value
|
|
]
|
|
|
|
[tool.ruff.lint.flake8-bugbear]
|
|
extend-immutable-calls = ["taskiq_dependencies.Depends", "taskiq.TaskiqDepends"]
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "pep257"
|
|
ignore-decorators = ["typing.overload"]
|
|
|
|
[tool.ruff.lint.pylint]
|
|
allow-magic-value-types = ["int", "str", "float"]
|
|
|
|
[tool.uv.build-backend]
|
|
module-root = ""
|