schon/pyproject.toml
Egor fureunoir Gorbunov eef774c3a3 feat(markdown): integrate markdown rendering and editor support
Replace WYSIWYG editor with Markdown editor across all relevant models and admin fields. Add utilities for rendering and stripping markdown. Adjust serializers, views, and templates to support markdown content. Introduce `PastedImage` model and upload endpoint for handling inline image uploads in markdown.

This change simplifies content formatting while enhancing flexibility with markdown support.
2026-02-27 23:36:51 +03:00

156 lines
3.8 KiB
TOML

[project]
name = "schon"
version = "2026.1"
description = "Schon — your store without the extra baggage. Everything works out of the box: storefront, product catalog, cart, and orders. Minimal complexity, maximum flexibility — install, adjust to your needs, and start selling."
authors = [{ name = "fureunoir", email = "contact@fureunoir.com" }]
readme = "README.md"
requires-python = ">=3.12,<=3.13"
dependencies = [
"aiogram==3.25.0",
"aiosmtpd==1.4.6",
"channels==4.3.2",
"channels-redis==4.3.0",
"colorlog==6.10.1",
"coverage==7.13.4",
"click==8.3.1",
"cryptography==46.0.5",
"django==5.2.11",
"django-cacheops==7.2",
"django-constance==4.3.4",
"django-cors-headers==4.9.0",
"django-dbbackup==5.2.0",
"django-elasticsearch-dsl==8.2",
"django-extensions==4.1",
"django-filter==25.2",
"django-health-check==4.0.6",
"django-import-export[all]==4.4.0",
"django-json-widget==2.1.1",
"django-model-utils==5.0.0",
"django-md-field==0.1.0",
"django-modeltranslation==0.19.19",
"django-mptt==0.18.0",
"django-redis==6.0.0",
"django-ratelimit==4.1.0",
"django-storages==1.14.6",
"django-unfold==0.81.0",
"django-unfold-markdown==0.1.2",
"django-debug-toolbar==6.2.0",
"django-widget-tweaks==1.5.1",
"djangorestframework==3.16.1",
"djangorestframework-recursive==0.1.2",
"djangorestframework-simplejwt[crypto]==5.5.1",
"djangorestframework-xml==2.0.0",
"djangorestframework-yaml==2.0.0",
"djangoql==0.19.1",
"docutils==0.22.4",
"drf-spectacular==0.29.0",
"drf-spectacular-websocket==1.3.1",
"drf-orjson-renderer==1.8.0",
"elasticsearch-dsl==8.18.0",
"filelock==3.24.3",
"filetype==1.2.0",
"graphene-django==3.2.3",
"graphene-file-upload==1.3.0",
"httpx==0.28.1",
"markdown==3.10.2",
"opentelemetry-instrumentation-django==0.60b1",
"paramiko==4.0.0",
"pillow==12.1.1",
"pip==26.0.1",
"polib==1.2.0",
"PyJWT==2.11.0",
"pytest==9.0.2",
"pytest-django==4.12.0",
"python-slugify==8.0.4",
"psutil==7.2.2",
"psycopg[binary]==3.3.3",
"redis==7.2.1",
"requests==2.32.5",
"sentry-sdk[django,celery,opentelemetry]==2.53.0",
"six==1.17.0",
"swapper==1.4.0",
"uvicorn==0.41.0",
"zeep==4.3.2",
"websockets==16.0",
"whitenoise==6.12.0",
]
[project.optional-dependencies]
worker = [
"celery==5.6.2",
"django-celery-beat==2.8.1",
"django-celery-results==2.6.0",
]
linting = [
"ty==0.0.16",
"ruff==0.15.4",
"celery-types==0.24.0",
"django-stubs==5.2.9",
"djangorestframework-stubs==3.16.8",
"types-requests==2.32.4.20260107",
"types-redis==4.6.0.20241004",
"types-paramiko==4.0.0.20250822",
"types-psutil==7.2.2.20260130",
"types-pillow==10.2.0.20240822",
"types-docutils==0.22.3.20260223",
"types-six==1.17.0.20251009",
]
openai = ["openai==2.24.0"]
jupyter = ["jupyter==1.1.1"]
[tool.uv]
package = false
[tool.uv.pip]
python-version = "3.13"
[tool.ruff]
line-length = 88
target-version = "py312"
exclude = [
"Dockerfiles",
"monitoring",
"scripts",
"static",
"storefront",
"tmp",
"media",
]
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F", "B", "Q", "I"]
ignore = ["RUF012", "A002", "A003"]
[tool.ruff.lint.isort]
known-first-party = ["schon", "engine"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.ty.src]
exclude = [
"Dockerfiles/**",
"monitoring/**",
"scripts/**",
"static/**",
"storefront/**",
"tmp/**",
"media/**",
]
[tool.ty.environment]
python-version = "3.12"
[tool.ty.terminal]
output-format = "concise"
[tool.ty.rules]
possibly-unresolved-reference = "warn"
possibly-missing-attribute = "warn"
possibly-missing-import = "warn"
unsupported-base = "warn"
[tool.django-stubs]
django_settings_module = "schon.settings.__init__"