719ee251f2
Check Cross-Plugin Imports / check (push) Has been cancelled
- RCE: move _check_dangerous_imports() BEFORE exec_module() in plugins.py - verify_ws_origin: reject empty Origin header when CORS configured - Test: ai_app fixture with permission_registry init for ai_assistant - Test: login_client sets CSRF token + Origin as client default headers - Test: SESSION_COOKIE_SECURE=false override + get_settings.cache_clear() - Test: asyncio_default_test_loop_scope=session fixes event loop closed - Test: fix 15 assertions (paths, variables, auth expectations) - Frontend: integrate SavedFilterBar in ContactsList, Mail, Calendar - Frontend: integrate TagSelector in ContactsList, Mail, Calendar - Event Bus: add 4 subscribers in system_notif (conversation/participant/reaction) - Docs: update all analysis reports and FIX-PLAN-V2 to current state
61 lines
1.3 KiB
TOML
61 lines
1.3 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "crm-system"
|
|
version = "1.0.0"
|
|
description = "Self-hosted CRM for small sales teams"
|
|
requires-python = ">=3.11"
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "session"
|
|
asyncio_default_test_loop_scope = "session"
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
addopts = [
|
|
"-ra",
|
|
"--strict-markers",
|
|
"--tb=short",
|
|
]
|
|
filterwarnings = [
|
|
"ignore::DeprecationWarning:passlib.*",
|
|
"ignore::DeprecationWarning:jose.*",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["app"]
|
|
branch = true
|
|
concurrency = ["greenlet"]
|
|
omit = [
|
|
"app/__init__.py",
|
|
"app/*/__init__.py",
|
|
"app/plugins/builtins/test_sample.py",
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
precision = 2
|
|
show_missing = true
|
|
skip_covered = false
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
extend-exclude = [".venv", "alembic/versions"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "I", "B", "UP", "N", "ASYNC"]
|
|
ignore = ["E501", "B008"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
strict = true
|
|
ignore_missing_imports = true
|
|
warn_unused_ignores = true
|
|
warn_return_any = true
|
|
disallow_untyped_defs = false
|
|
files = ["app"]
|