[tool.poetry]
name = "django-cqrs"
version = "27.0.0"
description = "Django CQRS data synchronisation"
authors = ["CloudBlue LLC"]
license = "Apache-2.0"
packages = [
    { include = "dj_cqrs" }
]
readme = "./README.md"
homepage = "https://django-cqrs.readthedocs.org"
repository = "https://github.com/cloudblue/django-cqrs"
classifiers = [
    'Development Status :: 5 - Production/Stable',
    'Framework :: Django :: 3.2',
    'Framework :: Django :: 4.0',
    'Framework :: Django :: 4.1',
    'Framework :: Django :: 4.2',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: Apache Software License',
    'Operating System :: Unix',
    'Programming Language :: Python :: 3.8',
    'Programming Language :: Python :: 3.9',
    'Programming Language :: Python :: 3.10',
    'Programming Language :: Python :: 3.11',
    'Topic :: Communications',
    'Topic :: Database',
]
keywords = [
    "django",
    "cqrs",
    "sql",
    "mixin",
    "amqp",
]

[tool.poetry.dependencies]
python = ">=3.8,<4"
django = ">=3.2"
pika = ">=1.0.0"
kombu = ">=4.6.*"
ujson = ">=5.4.0"
django-model-utils = ">=4.0.0"
python-dateutil = ">=2.4"
watchfiles = "^0.18.1"

[tool.poetry.group.test.dependencies]
black = ">=23.3"
pytest = ">=7.2.0,<8"
pytest-cov = ">=2.10.1,<5"
pytest-mock = "^3.10"
pytest-django = ">=4.4.0"
pytest-randomly = ">=3.12"
pytest-deadfixtures = "^2.2.1"
coverage = {extras = ["toml"], version = ">=5.3,<7"}
flake8 = ">=3.8,<6"
flake8-black = ">=0.3"
flake8-bugbear = ">=20,<23"
flake8-cognitive-complexity = "^0.1"
flake8-commas = "~2.1"
flake8-future-import = "~0.4"
flake8-isort = "^6.0"
flake8-broken-line = ">=0.3,<0.7"
flake8-comprehensions = "^3.10.1"
flake8-debugger = "^4.1.2"
flake8-eradicate = "^1.4.0"
flake8-string-format = "^0.3.0"
flake8-pyproject = "^1.2.3"
djangorestframework = ">=3.12"
isort = "^5.10"
django-mptt = "^0.14.0"
importlib-metadata = "<5"

[tool.poetry.group.docs.dependencies]
mkdocs = ">=1.4"
mkdocs-material = ">=9"
mkdocs-glightbox = "^0.3.1"
mkdocs-macros-plugin = "^0.7.0"
mkdocstrings = ">=0.19.1"
mkdocstrings-python = "^0.8.3"

[tool.pytest.ini_options]
testpaths = ["tests"]
log_cli = false
addopts = "--ignore=integration_tests/ -p no:cacheprovider --reuse-db --nomigrations --junitxml=tests/reports/out.xml --cov=dj_cqrs --cov-report xml:tests/reports/coverage.xml"
junit_family = "xunit2"
python_files = "test_*.py"
DJANGO_SETTINGS_MODULE = "tests.dj.settings"
django_find_project = false
pythonpath = [".", "src"]

[tool.coverage.xml]
output = "tests/reports/coverage.xml"

[tool.isort]
src_paths = ["*", "./examples/demo_project/replica_service/app"]
sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
group_by_package = true
multi_line_output = 3
force_grid_wrap = 4
combine_as_imports = true
use_parentheses = true
include_trailing_comma = true
line_length = 100
lines_after_imports = 2

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

[tool.flake8]
exclude = [
    ".idea",
    ".vscode",
    ".git",
    "pg_data",
    "venv",
    "*.eggs",
    "*.egg",
    "*.egg-info",
    "examples/*migrations/*",
]
show-source = true
max-line-length = 100
max-cognitive-complexity = 20
select = "B"
ignore = ["FI1", "W503", "W605"]

[tool.black]
line_length = 100
skip-string-normalization = true