[tool.poetry] name = "eVibes" version = "2.9.3" description = "eVibes is an open-source eCommerce backend service built with Django. It’s 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 "] readme = "README.md" package-mode = false [tool.poetry.dependencies] aiosmtpd = "1.4.6" celery = { version = "5.5.3", optional = true } celery-prometheus-exporter = { version = "1.7.0", optional = true } colorlog = "6.9.0" click = "8.2.1" cryptography = "45.0.4" django = "5.2" django-cacheops = "7.2" django-celery-beat = { version = "2.8.1", optional = true } django-celery-results = { version = "2.6.0", optional = true } django-constance = "4.3.2" django-cors-headers = "4.7.0" django-dbbackup = "4.3.0" django-elasticsearch-dsl = "8.0" django-elasticsearch-dsl-drf = "0.22.5" django-extensions = "4.1" django-filter = "25.1" django-health-check = "3.20.0" django-hosts = "6.0" django-jazzmin = "3.0.1" django-json-widget = "2.0.1" django-mailbox = "4.10.1" django-model-utils = "5.0.0" django-modeltranslation = "0.19.15" django-mptt = "0.17.0" django-prometheus = "2.3.1" django-redis = "6.0.0" django-ratelimit = "4.1.0" django-storages = "1.14.6" django-stubs = "5.2.1" django-summernote = "0.8.20.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" docutils = "0.21.2" drf-spectacular = { extras = ["sidecar"], version = "0.28.0" } elasticsearch = "8.18.1" elasticsearch-dsl = "8.18.0" filelock = "3.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.88.0", optional = true } paramiko = "3.5.1" pillow = "11.2.1" polib = "1.2.0" poetry-core = "2.1.3" PyJWT = "2.9.0" python = ">=3.12,<3.13" python-slugify = "8.0.4" psutil = "6.1.1" psycopg2 = "2.9.10" pydantic = "2.9.2" pygraphviz = { version = "1.14", optional = true, markers = "sys_platform != 'win32'" } pymdown-extensions = "10.15" redis = "6.2.0" requests = "2.32.4" ruff = "0.12.0" sentry-sdk = { extras = ["django", "celery", "opentelemetry", "redis"], version = "2.27.0" } six = "1.17.0" swapper = "1.4.0" yapf = "0.43.0" zeep = "4.3.1" [tool.poetry.group.dev.dependencies] black = "25.1.0" celery-stubs = "0.1.3" isort = "6.0.1" flake8 = "7.2.0" mypy-extensions = "1.1.0" pytest = "8.4.1" pytest-django = "4.11.1" coverage = "7.9.1" pre-commit = "4.2.0" bandit = "1.8.5" [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 = ["no-redef", "import-untyped"] exclude = ["*/migrations/*", "storefront/*"] plugins = ["mypy_django_plugin.main", "mypy_drf_plugin.main"] [tool.django-stubs] django_settings_module = "evibes.settings" [tool.ruff] line-length = 120 target-version = "py312" exclude = ["media", "static", "storefront"] [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "B", "Q"] ignore = ["RUF012", "A002", "A003"] [tool.ruff.format] quote-style = "double" indent-style = "space"