# SPDX-FileCopyrightText: 2026 Dennis Fink # # SPDX-License-Identifier: BSD-3-Clause [project] name = "webmentions-ssg" dynamic = ["version"] description = "A web service that implements webmentions receiver/sender for static site generators." license = "BSD-3-Clause" license-files = ["LICENSES/BSD-3-Clause.txt"] authors = [ {name = "Dennis Fink", email = "me+coding@dennisfink.me"}, ] readme = "README.md" requires-python = ">=3.14" dependencies = [ "beautifulsoup4>=4.15.0", "bootstrap-flask>=2.5.0", "coloredlogs>=15.0.1", "dnspython>=2.8.0", "flask>=3.1.3", "flask-login>=0.6.3", "flask-migrate>=4.1.0", "flask-sqlalchemy>=3.1.1", "flask-wtf>=1.3.0", "httpx>=0.28.1", "huey>=3.1.0", "mf2py>=2.0.1", "rfc3987>=1.3.8", "xxhash>=3.8.1", ] [project.urls] Repository = "https://codeberg.org/metalgamer/webmentions-ssg" Issues = "https://codeberg.org/metalgamer/webmentions-ssg/issues" [dependency-groups] dev = [ "pyright>=1.1.411", "python-dotenv>=1.2.2", "types-wtforms>=3.2.1.20260518", ] test = [ "pytest>=9.1.1", "pytest-cov>=7.1.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.version] path = "webmentions_ssg/__init__.py" [tool.hatch.build.targets.wheel] packages = ["webmentions_ssg"] [tool.hatch.build.targets.sdist] include = [ "webmentions_ssg/", "LICENSES/", "README.md", "pyproject.toml" ] [tool.pytest.ini_options] pythonpath = ["."] testpaths = ["tests"] addopts = [ "-ra", "--strict-config", "--strict-markers", "--cov=webmentions_ssg", "--cov-report=html", ] filterwarnings = [ "ignore:codecs\\.open\\(\\) is deprecated\\. Use open\\(\\) instead\\.:DeprecationWarning:mf2py\\.backcompat", ] [tool.uv] default-groups = ["dev", "test"] [tool.ruff.format] skip-magic-trailing-comma = true