134 lines
3.0 KiB
TOML
134 lines
3.0 KiB
TOML
[tool.poetry]
|
|
name = "deeprisk-backend"
|
|
version = "0.1.0"
|
|
description = "税务风控审查系统后端"
|
|
authors = ["Development Team <dev@deeprisk.com>"]
|
|
readme = "README.md"
|
|
license = {text = "MIT"}
|
|
keywords = ["tax", "risk-control", "audit", "fastapi"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Financial and Insurance Industry",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3.11",
|
|
]
|
|
requires-python = ">=3.11"
|
|
|
|
[tool.poetry.dependencies]
|
|
python = "^3.11"
|
|
fastapi = "^0.110.0"
|
|
uvicorn = {extras = ["standard"], version = "^0.29.0"}
|
|
pydantic = "^2.5.0"
|
|
pydantic-settings = "^2.1.0"
|
|
sqlalchemy = {version = "^2.0.25", features = ["asyncio"]}
|
|
asyncpg = "^0.29.0"
|
|
alembic = "^1.13.0"
|
|
redis = "^5.0.1"
|
|
celery = "^5.3.4"
|
|
apscheduler = "^3.10.4"
|
|
python-jose = {extras = ["cryptography"], version = "^3.3.0"}
|
|
passlib = {extras = ["bcrypt"], version = "^1.7.4"}
|
|
pandas = "^2.2.0"
|
|
openpyxl = "^3.1.2"
|
|
reportlab = "^4.0.8"
|
|
python-multipart = "^0.0.9"
|
|
loguru = "^0.7.2"
|
|
python-decouple = "^3.8"
|
|
email-validator = "^2.1.0"
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
pytest = "^8.0.0"
|
|
pytest-asyncio = "^0.23.0"
|
|
pytest-httpx = "^0.27.0"
|
|
httpx = "^0.27.0"
|
|
black = "^24.2.0"
|
|
isort = "^5.13.0"
|
|
mypy = "^1.7.0"
|
|
coverage = "^7.4.0"
|
|
factory-boy = "^3.3.0"
|
|
faker = "^22.0.0"
|
|
|
|
[build-system]
|
|
requires = ["poetry-core"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.poetry.group.runtime.dependencies]
|
|
python-dotenv = "^1.0.0"
|
|
|
|
[tool.black]
|
|
line-length = 88
|
|
target-version = ['py311']
|
|
include = '\.pyi?$'
|
|
extend-exclude = '''
|
|
/(
|
|
# directories
|
|
\.eggs
|
|
| \.git
|
|
| \.hg
|
|
| \.mypy_cache
|
|
| \.tox
|
|
| \.venv
|
|
| build
|
|
| dist
|
|
)/
|
|
'''
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
line_length = 88
|
|
multi_line_output = 3
|
|
include_trailing_comma = true
|
|
force_grid_wrap = 0
|
|
use_parentheses = true
|
|
ensure_newline_before_comments = true
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
check_untyped_defs = true
|
|
disallow_untyped_decorators = true
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_no_return = true
|
|
warn_unreachable = true
|
|
strict_equality = true
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["app/tests"]
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
asyncio_mode = "auto"
|
|
addopts = "-v --strict-markers --strict-config --cov=app --cov-report=term-missing --cov-report=html"
|
|
markers = [
|
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
"integration: marks tests as integration tests",
|
|
"unit: marks tests as unit tests",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["app"]
|
|
omit = [
|
|
"app/tests/*",
|
|
"alembic/*",
|
|
"*/__pycache__/*",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"if self.debug:",
|
|
"if settings.DEBUG",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if 0:",
|
|
"if __name__ == .__main__.:",
|
|
"class .*\\bProtocol\\):",
|
|
"@(abc\\.)?abstractmethod",
|
|
]
|