1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
[project]
name = "cross-web"
version = "0.4.1"
description = "A library for working with web frameworks"
readme = "README.md"
license = "MIT"
authors = [{ name = "Patrick Arminio", email = "patrick.arminio@gmail.com" }]
requires-python = ">=3.9"
keywords = ["web", "framework", "http", "request", "response", "asgi", "wsgi"]
dependencies = [
"typing-extensions>=4.14.0",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
"License :: OSI Approved :: MIT License",
]
[project.urls]
Homepage = "https://github.com/usecross/cross-web"
Repository = "https://github.com/usecross/cross-web"
Issues = "https://github.com/usecross/cross-web/issues"
Changelog = "https://github.com/usecross/cross-web/releases"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/cross_web"]
[dependency-groups]
dev = [
"pytest>=7.4.4",
"pytest-asyncio>=0.23.8",
"pytest-cov>=6.0.0",
"inline-snapshot>=0.20.10",
"coverage[toml]>=7.8.0",
"nox>=2024.10.9",
"ruff>=0.8.0",
"mypy>=1.13.0",
"pre-commit>=4.0.1",
]
integrations = [
"fastapi>=0.115.12",
"httpx>=0.28.1",
"python-multipart>=0.0.20",
"starlette>=0.46.1",
"django>=4.2",
"flask>=2.3",
"werkzeug>=2.3",
"sanic>=23.0",
"aiohttp>=3.9",
"yarl>=1.9",
"quart>=0.19",
"chalice>=1.29",
"litestar>=2.0",
"sanic-testing>=23.0",
]
[tool.inline-snapshot]
format-command = "ruff format --stdin-filename {filename}"
[tool.coverage.run]
source = ["src"]
parallel = true
[tool.coverage.report]
show_missing = true
sort = "-Cover"
exclude_lines = [
"pragma: no cover",
"raise NotImplementedError",
"if TYPE_CHECKING:",
"@abstractmethod",
]
[tool.coverage.html]
skip_covered = true
skip_empty = true
[tool.autopub]
plugins = ["autopub.plugins.github", "autopub.plugins.uv"]
[tool.mypy]
python_version = "3.9"
strict = true
warn_return_any = true
warn_unused_configs = true
[[tool.mypy.overrides]]
module = [
"django.*",
]
ignore_missing_imports = true
[tool.pytest.ini_options]
markers = [
"aiohttp: marks tests for aiohttp framework",
"chalice: marks tests for chalice framework",
"django: marks tests for django framework",
"fastapi: marks tests for fastapi framework",
"flask: marks tests for flask framework",
"litestar: marks tests for litestar framework",
"quart: marks tests for quart framework",
"sanic: marks tests for sanic framework",
"starlette: marks tests for starlette framework",
]
filterwarnings = [
"error", # Treat all warnings as errors
"ignore:websockets.legacy is deprecated:DeprecationWarning:websockets.legacy",
"ignore:Unclosed file:ResourceWarning", # Sanic internal file handling
]
|