schon/pyproject.toml
Egor fureunoir Gorbunov 8fb4ca3362 Features: 1) Add type annotations for various models and methods; 2) Introduce refined graphene resolvers to enhance permission handling; 3) Include type checking suppression with # type: ignore for unsupported cases.
Fixes: 1) Correct `urlsafe_base64_encode` decoding logic in tests; 2) Fix queryset access issues in resolvers; 3) Address missing or incorrect imports across multiple files.

Extra: Improve code readability with consistent naming and formatting; Add `# noinspection` annotations to suppress IDE warnings; Update `pyproject.toml` to exclude `drf.py` in MyPy checks.
2025-06-18 16:38:07 +03:00

117 lines
No EOL
3.6 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[tool.poetry]
name = "eVibes"
version = "2.8.9"
description = "eVibes is an open-source eCommerce backend service built with Django. Its designed for flexibility, making it ideal for various use cases and learning Django skills. The project is easy to customize, allowing for straightforward editing and extension."
authors = ["fureunoir <contact@fureunoir.com>"]
readme = "README.md"
package-mode = false
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.dependencies]
aiosmtpd = "1.4.6"
celery = { version = "5.5.2", optional = true }
celery-prometheus-exporter = { version = "1.7.0", optional = true }
colorlog = "6.9.0"
cryptography = "44.0.3"
django = "5.2"
django-cacheops = "7.2"
django-celery-beat = { version = "2.8.0", optional = true }
django-celery-results = { version = "2.6.0", optional = true }
django-constance = "4.3.2"
django-cors-headers = "4.7.0"
django-daisy = "1.0.23"
django-dbbackup = "4.2.1"
django-elasticsearch-dsl = "8.0"
django-elasticsearch-dsl-drf = "0.22.5"
django-extensions = "4.1"
django-filter = "25.1"
django-health-check = "3.19.1"
django-hosts = "6.0"
django-json-widget = "2.0.1"
django-mailbox = "4.10.1"
django-model-utils = "5.0.0"
django-modeltranslation = "0.19.14"
django-mptt = "0.17.0"
django-prometheus = "^2.3.1"
django-redis = "5.4.0"
django-ratelimit = "4.1.0"
django-storages = "1.14.6"
django-stubs = "5.2.0"
django-widget-tweaks = "1.5.0"
django-md-field = "0.1.0"
djangorestframework = "3.16.0"
djangorestframework-camel-case = "1.4.2"
djangorestframework-recursive = "0.1.2"
djangorestframework-simplejwt = { extras = ["crypto"], version = "5.5.0" }
djangorestframework-stubs = "3.16.0"
djangorestframework-xml = "2.0.0"
djangorestframework-yaml = "2.0.0"
drf-spectacular = { extras = ["sidecar"], version = "0.28.0" }
elasticsearch-dsl = "8.18.0"
filetype = "1.2.0"
graphene-django = "3.2.3"
graphene-file-upload = "1.3.0"
gunicorn = "23.0.0"
httpx = "0.28.1"
jupyter = { version = "1.1.1", optional = true }
mypy = "1.16.1"
openai = { version = "1.77.0", optional = true }
paramiko = "3.5.1"
pillow = "11.2.1"
polib = "1.2.0"
poetry-core = "2.1.3"
python = ">=3.12,<3.13"
psutil = "6.1.1"
psycopg2 = "2.9.10"
pygraphviz = { version = "1.14", optional = true, markers = "sys_platform != 'win32'" }
pymdown-extensions = "10.15"
redis = "6.0.0"
requests = "2.32.3"
ruff = "0.11.8"
sentry-sdk = { extras = ["django", "celery", "opentelemetry", "redis"], version = "2.27.0" }
six = "1.17.0"
swapper = "1.4.0"
zeep = "4.3.1"
[tool.poetry.group.dev.dependencies]
black = "25.1.0"
celery-stubs = "0.1.3"
isort = "5.13.2"
flake8 = "7.2.0"
mypy-extensions = "1.1.0"
pytest = "8.4.1"
pytest-django = "4.11.1"
coverage = "7.8.2"
pre-commit = "4.2.0"
safety = "3.5.2"
bandit = "1.2.0"
[tool.poetry.extras]
graph = ["pygraphviz"]
worker = ["celery", "django-celery-beat", "django-celery-results", "celery-prometheus-exporter"]
openai = ["openai"]
jupyter = ["jupyter"]
docs = ["sphinx", "sphinx-rtd-theme", "m2r2"]
testing = ["pytest", "pytest-django", "coverage"]
linting = ["black", "isort", "flake8", "bandit"]
[tool.mypy]
disable_error_code = ["import-untyped", "misc"]
exclude = ["*/migrations/*", "./evibes/settings/drf.py"]
[tool.ruff]
line-length = 120
target-version = "py38"
exclude = ["migrations", "media", "static", "storefront"]
[tool.ruff.lint]
select = ["E", "W", "F", "B", "I", "RUF", "UP", "N", "A", "COM", "C4", "DJ001", "RSE", "SIM", "ISC", "TID252", "PGH004"]
ignore = ["B904", "RUF001", "RUF002", "RUF003", "RUF005", "RUF012", "A003", "A002", "COM812", "S603"]
per-file-ignores = { "__init__.py" = ["E402", "F401"] }
[tool.ruff.format]
quote-style = "double"
indent-style = "space"