mardiros/fastlife

View on GitHub
pyproject.toml

Summary

Maintainability
Test Coverage
[tool.poetry]
authors = ["Guillaume Gauvrit <guillaume@gauvr.it>"]
description = "High-level web framework"
name = "fastlifeweb"
license = "BSD-derived"
packages = [{ include = "fastlife", from = "src" }]
homepage = "https://github.com/mardiros/fastlife"
repository = "https://github.com/mardiros/fastlife"
readme = "README.md"
classifiers = [
    "Development Status :: 4 - Beta",
    "Framework :: AsyncIO",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: BSD License",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Internet :: WWW/HTTP",
]
version = "0.18.0"

[tool.poetry.dependencies]
python = "^3.11"
babel = "^2.16.0"
beautifulsoup4 = { version = "^4.12.2", optional = true }
fastapi = { version = "^0.115.0", extras = ["standard"] }
itsdangerous = "^2.1.2"
jinjax = "^0.44"
markupsafe = "^2.1.3"
multidict = "^6.0.5"
pydantic = "^2.5.3"
pydantic-settings = "^2.0.3"
python-multipart = "^0.0.9"
sphinx = { version = "^7.0.1", optional = true }
venusian = "^3.0.0"

[tool.poetry.group.dev]
optional = true

[tool.poetry.extras]
testing = ["beautifulsoup4"]
doc = ["sphinx"]

[tool.poetry.group.dev.dependencies]
beautifulsoup4 = "^4.12.2"
behave = "^1.2.6"
heroicons = "^2.7.0"
httpx = "^0.25.0"
mypy = "^1.4.0"
pytest = "^8.2.0"
pytest-asyncio = "^0.21.0"
pytest-cov = "^4.1.0"
sphinx = "^7.0.1"
types-beautifulsoup4 = "^4.12.0.6"
isort = "^5.12.0"
email-validator = "^2.0.0.post2"
hypercorn = "^0.14.4"
pytest-playwright = "^0.4.3"
pytailwindcss = "^0.2.0"

[tool.poetry.group.doc]
optional = true

[tool.poetry.group.doc.dependencies]
furo = "^2024.5.6"
myst-parser = "^4.0.0"
sphinx = "^7.0.1"
sphinx-autodoc2 = "^0.5.0"
linkify-it-py = "^2.0.3"

[tool.pyright]
include = ["src"]
typeCheckingMode = "strict"
reportMissingTypeStubs = false

[[tool.mypy.overrides]]
module = "fastlife.*"
disallow_any_generics = true
disallow_untyped_defs = true

[[tool.mypy.overrides]]
module = ["behave", "venusian", "docutils"]
ignore_missing_imports = true

[tool.ruff]
line-length = 88
target-version = "py311"

[tool.ruff.lint]
select = [
    "B",   # bug bear security warning
    "I",   # isort import order
    "F",   # pyflakes
    "UP",  # alter when better syntax is available
    "RUF", #  the ruff devleoper's own rules
]

[tool.isort]
profile = "black"

[tool.pytest.ini_options]
asyncio_mode = "auto"
filterwarnings = [
    "error",                                                                           # setuptools
    'ignore:.*pkg_resources is deprecated as an API.*:DeprecationWarning',
    'ignore:.*Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning', # venusian
    'ignore:.*find_module\(\) is deprecated.*:DeprecationWarning',
    'ignore:.*FileFinder.find_loader\(\) is deprecated.*:DeprecationWarning',
    'ignore:.*Pydantic serializer warnings.*:UserWarning',
]
testpaths = ["tests"]

[tool.coverage.report]
exclude_lines = ["# coverage: ignore", "\\s+\\.\\.\\.$"]

[build-system]
build-backend = "poetry.core.masonry.api"
requires = ["poetry-core"]