dissolve-python 0.3.0

A tool to dissolve deprecated calls in Python codebases
Documentation
[build-system]
requires = ["setuptools>=61.2", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "dissolve"
description = "Automatically replace use of deprecated APIs"
readme = "README.md"
authors = [{name = "Jelmer Vernooij", email = "jelmer@jelmer.uk"}]
license = {text = "Apachev2 or later"}
classifiers = [
    "Development Status :: 4 - Beta",
    "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
    "Operating System :: POSIX",
]
urls = {Homepage = "https://github.com/jelmer/dissolve/"}
requires-python = ">=3.9"
dependencies = ["packaging"]
dynamic = ["version"]


[tool.setuptools]
include-package-data = true

[tool.setuptools.packages]
find = {namespaces = false}

[tool.setuptools.package-data]
dissolve = ["py.typed"]

[tool.setuptools.dynamic]
version = {attr = "dissolve.__version__"}

[project.optional-dependencies]
testing = ["pytest", "pytest-asyncio"]
dev = [
    "ruff==0.11.11",
    "mypy==1.15.0"
]
tool = []

[project.scripts]
dissolve = "dissolve.cli:main"

[tool.ruff.lint]
select = [
    "ANN",
    "D",
    "E",
    "F",
    "I",
    "PIE",
    "UP",
    "RSE",
    "RUF",
]
ignore = [
    "ANN001",
    "ANN002",
    "ANN003",
    "ANN201",
    "ANN202",
    "ANN204",
    "ANN205",
    "ANN206",
    "ANN401",
    "D100",
    "D101",
    "D102",
    "D103",
    "D104",
    "D105",
    "D107",
    "D204",
    "D205",
    "D417",
    "E501",  # line too long
]

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.mypy]
strict = true
warn_redundant_casts = true
warn_unused_ignores = true
disallow_any_generics = true
check_untyped_defs = true
no_implicit_reexport = true
disallow_untyped_defs = true

[[tool.mypy.overrides]]
module = "dissolve.tests.*"
disallow_untyped_defs = false
check_untyped_defs = false
disallow_untyped_calls = false
no_strict_optional = true

[[tool.mypy.overrides]]
module = "pytest"
ignore_missing_imports = true

[tool.pytest.ini_options]
testpaths = ["dissolve/tests"]