Revision 39d77a5b424fb17b3775e37c51bbcfc869dbafc8 authored by Jochen Kupperschmidt on 04 September 2025, 12:52:37 UTC, committed by Jochen Kupperschmidt on 04 September 2025, 12:56:03 UTC
1 parent 0c5df40
pyproject.toml
[project]
name = "BYCEPS"
version = "0.0"
description = "LAN party web platform"
readme = "README.rst"
authors = [
{ name = "Jochen Kupperschmidt", email = "homework@nwsnet.de" },
]
license = { text = "Revised BSD License" }
keywords = ["lanparty"]
classifiers = [
"Environment :: Web Environment",
"Framework :: Flask",
"Intended Audience :: Developers",
"Intended Audience :: Other Audience",
"License :: OSI Approved :: BSD License",
"Natural Language :: English",
"Natural Language :: German",
"Programming Language :: JavaScript",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Communications",
"Topic :: Games/Entertainment",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary",
]
requires-python = ">=3.11"
dependencies = [
"babel>=2.17.0",
"bbcode==1.1.0",
"blinker>=1.9.0",
"bpython>=0.25",
"click>=8.2.1",
"flask-babel==4.0.0",
"flask-sqlalchemy==3.1.1",
"flask>=3.1.2",
"hiredis>=3.2.1",
"httpx[http2]>=0.28.1",
"itsdangerous==2.2.0",
"jinja2>=3.1.6",
"markupsafe==3.0.2",
"mistletoe==1.4.0",
"paypal-checkout-serversdk==1.0.3",
"paypalhttp==1.0.1",
"pillow>=11.3.0",
"psycopg[binary]>=3.2.9",
"py-moneyed==3.0",
"pydantic>=2.11.7",
"python-dotenv>=1.1.1",
"qrcode>=8.2",
"redis>=6.4.0",
"rq-dashboard>=0.8.4",
"rq>=2.5.0",
"rtoml==0.12.0",
"schwifty>=2025.6.0",
"secret-type>=0.3.0",
"sentry-sdk[flask,httpx,rq,sqlalchemy]>=2.33.2",
"sqlalchemy>=2.0.43",
"stripe==5.4.0",
"structlog>=25.4.0",
"tenacity>=9.1.2",
"uuid6>=2025.0.1",
"werkzeug>=3.1.3",
"wtforms==3.2.1",
]
[dependency-groups]
dev = [
"flask-debugtoolbar==0.16.0",
"mypy>=1.15.0",
"ruff>=0.11.7",
"types-freezegun==1.1.10",
"types-redis==4.6.0.20241004",
]
docs = [
"furo>=2025.7.19",
"sphinx>=8.2.3",
]
test = [
"coverage>=7.10.6",
"freezegun>=1.5.5",
"pyfakefs>=5.9.3",
"pytest>=8.4.1",
"respx>=0.22.0",
]
[project.optional-dependencies]
wsgiserver = [
"uwsgi>=2.0.30",
]
[project.scripts]
byceps = "byceps.cli.cli:cli"
[project.urls]
Homepage = "https://byceps.nwsnet.de/"
Documentation = "https://byceps.readthedocs.io/"
Repository = "https://github.com/byceps/byceps"
[build-system]
requires = ["uv_build>=0.8.11,<0.9.0"]
build-backend = "uv_build"
[tool.mypy]
python_version = "3.11"
plugins = "sqlalchemy.ext.mypy.plugin"
ignore_missing_imports = true
no_implicit_optional = true
[tool.pytest.ini_options]
addopts = "-vv -ra"
testpaths = ["tests/unit", "tests/integration"]
[tool.ruff]
line-length = 80
[tool.ruff.format]
quote-style = "single"
line-ending = "lf"
[tool.ruff.lint]
select = [
"B",
"E",
"EXE",
"F",
"G",
"ICN",
"ISC",
"PLE",
"PLW",
"PTH",
"PYI",
"Q",
"RSE",
"S",
"TID",
"UP",
"W",
"YTT",
]
ignore = [
"E501", # Line too long
"ISC001", # Conflict with Ruff's formatter
"Q001", # Conflict with Ruff's formatter
"W291", # Trailing whitespace (because of email signature, `-- `)
]
[tool.ruff.lint.flake8-quotes]
inline-quotes = "single"
multiline-quotes = "single"
[tool.ruff.lint.isort]
combine-as-imports = true
force-sort-within-sections = true
forced-separate = ["tests"]
lines-after-imports = 2
order-by-type = false
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "S105", "S106", "S107"]
[tool.uv]
default-groups = []
required-version = ">=0.8.11"
[tool.uv.build-backend]
module-name = "byceps"
module-root = ""

Computing file changes ...