diff --git a/.dockerignore b/.dockerignore index a7be18aa..f5cb53a0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -81,4 +81,5 @@ media/ .env # Host's scripts -scripts \ No newline at end of file +scripts/Windows +scripts/Unix \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1aaf0db6..c5fa23ed 100644 --- a/.gitignore +++ b/.gitignore @@ -60,7 +60,6 @@ htmlcov/ .tox/ .nox/ .scrapy -.coverage.* .cover .pybuilder/ diff --git a/Dockerfiles/Dockerfile.app b/Dockerfiles/Dockerfile.app new file mode 100644 index 00000000..52042174 --- /dev/null +++ b/Dockerfiles/Dockerfile.app @@ -0,0 +1,49 @@ +# syntax=docker/dockerfile:1 +FROM python:3.12-bookworm +LABEL authors="fureunoir" + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + LANG=C.UTF-8 \ + DEBIAN_FRONTEND=noninteractive \ + PATH="/root/.local/bin:$PATH" + +WORKDIR /app + +RUN set -eux; \ + sed -i 's|https://deb.debian.org/debian|https://ftp.uk.debian.org/debian|g' /etc/apt/sources.list.d/debian.sources; \ + apt-get update; \ + apt-get install -y --no-install-recommends wget gnupg; \ + wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -; \ + echo "deb http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" \ + > /etc/apt/sources.list.d/pgdg.list; \ + apt-get update; \ + apt-get install -y --no-install-recommends --fix-missing \ + build-essential \ + libpq-dev \ + gettext \ + libgettextpo-dev \ + graphviz-dev \ + libgts-dev \ + libpq5 \ + graphviz \ + binutils \ + libproj-dev \ + postgresql-client-17 \ + gdal-bin; \ + rm -rf /var/lib/apt/lists/*; \ + pip install --upgrade pip; \ + curl -sSL https://install.python-poetry.org | python3 + +COPY pyproject.toml pyproject.toml +COPY poetry.lock poetry.lock + +RUN poetry config virtualenvs.create false +RUN poetry install --extras="graph worker openai testing" --no-interaction --no-ansi + +COPY ./scripts/Docker/app-entrypoint.sh /usr/local/bin/app-entrypoint.sh +RUN chmod +x /usr/local/bin/app-entrypoint.sh + +COPY . . + +ENTRYPOINT ["app-entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile b/Dockerfiles/Dockerfile.beat similarity index 84% rename from Dockerfile rename to Dockerfiles/Dockerfile.beat index caf9f172..84410630 100644 --- a/Dockerfile +++ b/Dockerfiles/Dockerfile.beat @@ -39,6 +39,11 @@ COPY pyproject.toml pyproject.toml COPY poetry.lock poetry.lock RUN poetry config virtualenvs.create false -RUN poetry install -E graph -E worker -E AI --no-interaction --no-ansi +RUN poetry install --extras="worker openai" --no-interaction --no-ansi -COPY . . \ No newline at end of file +COPY ./scripts/Docker/beat-entrypoint.sh /usr/local/bin/beat-entrypoint.sh +RUN chmod +x /usr/local/bin/beat-entrypoint.sh + +COPY . . + +ENTRYPOINT ["beat-entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfiles/Dockerfile.worker b/Dockerfiles/Dockerfile.worker new file mode 100644 index 00000000..b34fcaf3 --- /dev/null +++ b/Dockerfiles/Dockerfile.worker @@ -0,0 +1,49 @@ +# syntax=docker/dockerfile:1 +FROM python:3.12-bookworm +LABEL authors="fureunoir" + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + LANG=C.UTF-8 \ + DEBIAN_FRONTEND=noninteractive \ + PATH="/root/.local/bin:$PATH" + +WORKDIR /app + +RUN set -eux; \ + sed -i 's|https://deb.debian.org/debian|https://ftp.uk.debian.org/debian|g' /etc/apt/sources.list.d/debian.sources; \ + apt-get update; \ + apt-get install -y --no-install-recommends wget gnupg; \ + wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -; \ + echo "deb http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" \ + > /etc/apt/sources.list.d/pgdg.list; \ + apt-get update; \ + apt-get install -y --no-install-recommends --fix-missing \ + build-essential \ + libpq-dev \ + gettext \ + libgettextpo-dev \ + graphviz-dev \ + libgts-dev \ + libpq5 \ + graphviz \ + binutils \ + libproj-dev \ + postgresql-client-17 \ + gdal-bin; \ + rm -rf /var/lib/apt/lists/*; \ + pip install --upgrade pip; \ + curl -sSL https://install.python-poetry.org | python3 + +COPY pyproject.toml pyproject.toml +COPY poetry.lock poetry.lock + +RUN poetry config virtualenvs.create false +RUN poetry install --extras="worker openai" --no-interaction --no-ansi + +COPY ./scripts/Docker/worker-entrypoint.sh /usr/local/bin/worker-entrypoint.sh +RUN chmod +x /usr/local/bin/worker-entrypoint.sh + +COPY . . + +ENTRYPOINT ["worker-entrypoint.sh"] \ No newline at end of file diff --git a/README.md b/README.md index 87478feb..79fe6115 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,8 @@ ![LOGO](core/docs/images/evibes-big.png) eVibes is an 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. +cases and learning Django skills. The project is straightforward to customize, allowing for straightforward editing and +extension. ## Table of Contents @@ -20,7 +21,7 @@ cases and learning Django skills. The project is easy to customize, allowing for ## Features -- **Modular Architecture**: Easily extend and customize the backend to fit your needs. +- **Modular Architecture**: Extend and customize the backend to fit your needs. - **Dockerized Deployment**: Quick setup and deployment using Docker and Docker Compose. - **Asynchronous Task Processing**: Integrated Celery workers and beat scheduler for background tasks. - **GraphQL and REST APIs**: Supports both GraphQL and RESTful API endpoints. @@ -32,7 +33,7 @@ cases and learning Django skills. The project is easy to customize, allowing for ### Prerequisites -- Docker and Docker Compose installed on your machine - that's it! +- Docker and Docker Compose are installed on your machine. ### Installation @@ -49,7 +50,7 @@ cases and learning Django skills. The project is easy to customize, allowing for git checkout storefront- ``` -3. Generate your .env file. Check and confirm the contents afterwards. +3. Generate your .env file. Check and confirm the contents afterward. - Windows ```powershell @@ -85,29 +86,29 @@ cases and learning Django skills. The project is easy to customize, allowing for 6. Bring to production. Include `nginx` file to your nginx configuration, you really want to install and - run [Certbot](https://certbot.eff.org/) afterwards! + run [Certbot](https://certbot.eff.org/) afterward! ## Configuration ### Dockerfile -Don't forget to change the +Remember to change the `RUN sed -i 's|https://deb.debian.org/debian|https://ftp..debian.org/debian|g' /etc/apt/sources.list.d/debian.sources` before running installment scripts ### nginx -Please comment-out SSL-related lines, then apply needed configurations, run `certbot --cert-only --nginx`, +Please comment-out SSL-related lines, then apply necessary configurations, run `certbot --cert-only --nginx`, decomment previously commented lines and enjoy eVibes over HTTPS! ### .env -After .env file generation, you may want to edit some of it's values such as macroservices' API keys, database password, +After .env file generation, you may want to edit some of its values, such as macroservices' API keys, database password, redis password, etc. ## Usage -- Add needed subdomains to DNS-settings of your domain, those are: +- Add necessary subdomains to DNS-settings of your domain, those are: 1. @.your-domain.com 2. www.your-domain.com diff --git a/blog/admin.py b/blog/admin.py index 9685db91..7ff9129d 100644 --- a/blog/admin.py +++ b/blog/admin.py @@ -35,9 +35,10 @@ class PostAdmin(admin.ModelAdmin): def preview_html(self, obj): html = obj.content.html or "{}".format(_("(no content yet)")) + # noinspection DjangoSafeString return mark_safe(html) - preview_html.short_description = _("rendered HTML") + preview_html.short_description = _("rendered HTML") # type: ignore @admin.register(PostTag) diff --git a/blog/locale/ar_AR/LC_MESSAGES/django.mo b/blog/locale/ar_AR/LC_MESSAGES/django.mo index 9a93c2d0..8865ce3d 100644 Binary files a/blog/locale/ar_AR/LC_MESSAGES/django.mo and b/blog/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ar_AR/LC_MESSAGES/django.po b/blog/locale/ar_AR/LC_MESSAGES/django.po index cfa02d31..1f86c0e2 100644 --- a/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: ar-AR\n" +"Language: ar-ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(لا يوجد محتوى بعد)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "تم تقديمه بتنسيق HTML" @@ -25,47 +25,52 @@ msgstr "تم تقديمه بتنسيق HTML" msgid "blog" msgstr "المدونة" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "عنوان المنشور" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "العنوان" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "المنشور" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "المنشورات" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"ملفات تخفيض السعر غير مدعومة Yer - استخدم محتوى تخفيض السعر بدلاً من ذلك!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "يجب توفير ملف ترميز أو محتوى ترميز مخفض - متنافيان" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "معرّف العلامة الداخلي لعلامة المنشور" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "اسم العلامة" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "اسم سهل الاستخدام لعلامة المنشور" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "اسم عرض العلامة" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "علامة المشاركة" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "علامات المشاركة" diff --git a/blog/locale/cs_CZ/LC_MESSAGES/django.mo b/blog/locale/cs_CZ/LC_MESSAGES/django.mo index 0749d0bb..4e56582c 100644 Binary files a/blog/locale/cs_CZ/LC_MESSAGES/django.mo and b/blog/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/blog/locale/cs_CZ/LC_MESSAGES/django.po b/blog/locale/cs_CZ/LC_MESSAGES/django.po index 4e658f9f..3fb0c0df 100644 --- a/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: cs-CZ\n" +"Language: cs-cz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(zatím bez obsahu)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Vykreslené HTML" @@ -25,49 +25,54 @@ msgstr "Vykreslené HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Název příspěvku" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Název" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Příspěvek" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Příspěvky" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Soubory Markdown nejsou podporovány - místo toho použijte obsah Markdown!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "musí být poskytnut soubor markdown nebo obsah markdown - vzájemně se " "vylučují." -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "interní identifikátor tagu pro tag příspěvku" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Název štítku" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Uživatelsky přívětivý název pro značku příspěvku" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Označení příspěvku" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Štítky příspěvků" diff --git a/blog/locale/da_DK/LC_MESSAGES/django.mo b/blog/locale/da_DK/LC_MESSAGES/django.mo index fe9362cb..1297540d 100644 Binary files a/blog/locale/da_DK/LC_MESSAGES/django.mo and b/blog/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/blog/locale/da_DK/LC_MESSAGES/django.po b/blog/locale/da_DK/LC_MESSAGES/django.po index e4cf4be4..7d6bc7c5 100644 --- a/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/blog/locale/da_DK/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: da-DK\n" +"Language: da-dk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(intet indhold endnu)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Rendered HTML" @@ -25,48 +25,52 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Indlæggets titel" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titel" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Indlæg" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Indlæg" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "Markdown-filer understøttes ikke - brug markdown-indhold i stedet!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "en markdown-fil eller markdown-indhold skal leveres - gensidigt udelukkende" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "intern tag-identifikator for indlægs-tagget" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Tag-navn" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Brugervenligt navn til posttagget" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Navn på tag-visning" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Tag til indlæg" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tags til indlæg" diff --git a/blog/locale/de_DE/LC_MESSAGES/django.mo b/blog/locale/de_DE/LC_MESSAGES/django.mo index 6fc4654f..3c2c3adb 100644 Binary files a/blog/locale/de_DE/LC_MESSAGES/django.mo and b/blog/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/blog/locale/de_DE/LC_MESSAGES/django.po b/blog/locale/de_DE/LC_MESSAGES/django.po index 08db5171..3ef59878 100644 --- a/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/blog/locale/de_DE/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: de-DE\n" +"Language: de-de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(noch kein Inhalt)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Gerendertes HTML" @@ -25,49 +25,55 @@ msgstr "Gerendertes HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Titel des Beitrags" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titel" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Beitrag" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Beiträge" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Markdown-Dateien werden nicht unterstützt - verwenden Sie stattdessen " +"Markdown-Inhalte!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "eine Markdown-Datei oder ein Markdown-Inhalt muss bereitgestellt werden - " "beide schließen sich gegenseitig aus" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "interner Tag-Bezeichner für den Post-Tag" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Tag name" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Benutzerfreundlicher Name für das Post-Tag" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Tag-Anzeigename" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Tag eintragen" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tags eintragen" diff --git a/blog/locale/en_GB/LC_MESSAGES/django.mo b/blog/locale/en_GB/LC_MESSAGES/django.mo index a9988a4d..2a5bad92 100644 Binary files a/blog/locale/en_GB/LC_MESSAGES/django.mo and b/blog/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/blog/locale/en_GB/LC_MESSAGES/django.po b/blog/locale/en_GB/LC_MESSAGES/django.po index a01bf651..9918e3dc 100644 --- a/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/blog/locale/en_GB/LC_MESSAGES/django.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "(no content yet)" msgstr "(no content yet)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Rendered HTML" @@ -29,48 +29,52 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Post's title" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Title" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Post" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Posts" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "Markdown files are not supported yer - use markdown content instead!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "a markdown file or markdown content must be provided - mutually exclusive" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "internal tag identifier for the post tag" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Tag name" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "User-friendly name for the post tag" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Tag display name" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Post tag" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/en_US/LC_MESSAGES/django.mo b/blog/locale/en_US/LC_MESSAGES/django.mo index 4b08da75..e2d65c75 100644 Binary files a/blog/locale/en_US/LC_MESSAGES/django.mo and b/blog/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/blog/locale/en_US/LC_MESSAGES/django.po b/blog/locale/en_US/LC_MESSAGES/django.po index a1e8742c..7e6df399 100644 --- a/blog/locale/en_US/LC_MESSAGES/django.po +++ b/blog/locale/en_US/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: en-US\n" +"Language: en-us\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(no content yet)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Rendered HTML" @@ -25,48 +25,52 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Post's title" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Title" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Post" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Posts" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "Markdown files are not supported yer - use markdown content instead!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "a markdown file or markdown content must be provided - mutually exclusive" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "internal tag identifier for the post tag" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Tag name" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "User-friendly name for the post tag" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Tag display name" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Post tag" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/es_ES/LC_MESSAGES/django.mo b/blog/locale/es_ES/LC_MESSAGES/django.mo index 2b5394e2..3a716439 100644 Binary files a/blog/locale/es_ES/LC_MESSAGES/django.mo and b/blog/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/blog/locale/es_ES/LC_MESSAGES/django.po b/blog/locale/es_ES/LC_MESSAGES/django.po index 369c3c56..194f7445 100644 --- a/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/blog/locale/es_ES/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: es-ES\n" +"Language: es-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(sin contenido aún)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML renderizado" @@ -25,49 +25,54 @@ msgstr "HTML renderizado" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Título del mensaje" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Título" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Publicar en" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Puestos" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"No se admiten archivos Markdown - ¡utiliza contenido Markdown en su lugar!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "se debe proporcionar un archivo markdown o contenido markdown - mutuamente " "excluyentes" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "identificador interno de la etiqueta post" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nombre de la etiqueta" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Nombre fácil de usar para la etiqueta de la entrada" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Etiqueta postal" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Etiquetas" diff --git a/blog/locale/fr_FR/LC_MESSAGES/django.mo b/blog/locale/fr_FR/LC_MESSAGES/django.mo index fcf80c80..d96c045a 100644 Binary files a/blog/locale/fr_FR/LC_MESSAGES/django.mo and b/blog/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/fr_FR/LC_MESSAGES/django.po b/blog/locale/fr_FR/LC_MESSAGES/django.po index f57ad9ac..8253e72e 100644 --- a/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: fr-FR\n" +"Language: fr-fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(pas encore de contenu)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML rendu" @@ -25,49 +25,55 @@ msgstr "HTML rendu" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Titre du message" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titre" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Poste" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Postes" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Les fichiers Markdown ne sont pas pris en charge - utilisez plutôt du " +"contenu Markdown !" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -"un fichier markdown ou un contenu markdown doit être fourni - ils s'excluent " -"mutuellement" +"un fichier markdown ou un contenu markdown doit être fourni - ils s'excluent" +" mutuellement" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "identifiant interne de la balise post" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nom du jour" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Nom convivial pour la balise post" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Tag de poste" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tags de la poste" diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.mo b/blog/locale/hi_IN/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/blog/locale/hi_IN/LC_MESSAGES/django.mo and b/blog/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.po b/blog/locale/hi_IN/LC_MESSAGES/django.po index d41de6b2..78f4a5e6 100644 --- a/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -20,7 +20,7 @@ msgstr "" msgid "(no content yet)" msgstr "" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "" @@ -28,47 +28,51 @@ msgstr "" msgid "blog" msgstr "" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "" diff --git a/blog/locale/it_IT/LC_MESSAGES/django.mo b/blog/locale/it_IT/LC_MESSAGES/django.mo index 85f953ac..1e3686da 100644 Binary files a/blog/locale/it_IT/LC_MESSAGES/django.mo and b/blog/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/blog/locale/it_IT/LC_MESSAGES/django.po b/blog/locale/it_IT/LC_MESSAGES/django.po index c6be6212..60dc7545 100644 --- a/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/blog/locale/it_IT/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: it-IT\n" +"Language: it-it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(ancora senza contenuti)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML renderizzato" @@ -25,49 +25,53 @@ msgstr "HTML renderizzato" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Titolo del post" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titolo" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Posta" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Messaggi" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "I file Markdown non sono supportati: usa invece i contenuti Markdown!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "deve essere fornito un file markdown o un contenuto markdown - si escludono " "a vicenda" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "identificatore interno del tag post" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nome del tag" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Nome intuitivo per il tag del post" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Nome del tag" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Post tag" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tag dei post" diff --git a/blog/locale/ja_JP/LC_MESSAGES/django.mo b/blog/locale/ja_JP/LC_MESSAGES/django.mo index 3f8c0156..4dfd7fc2 100644 Binary files a/blog/locale/ja_JP/LC_MESSAGES/django.mo and b/blog/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ja_JP/LC_MESSAGES/django.po b/blog/locale/ja_JP/LC_MESSAGES/django.po index 3776f43d..94ddeb0c 100644 --- a/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: ja-JP\n" +"Language: ja-jp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(内容はまだありません)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "レンダリングされたHTML" @@ -25,49 +25,51 @@ msgstr "レンダリングされたHTML" msgid "blog" msgstr "ブログ" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "投稿タイトル" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "タイトル" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "ポスト" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "投稿" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "マークダウン・ファイルはサポートされていません - 代わりにマークダウン・コンテンツを使用してください!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" -msgstr "" -"マークダウン・ファイルまたはマークダウン・コンテンツを提供しなければならな" -"い。" +msgstr "マークダウン・ファイルまたはマークダウン・コンテンツを提供しなければならない。" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "投稿タグの内部タグ識別子" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "タグ名" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "投稿タグのユーザーフレンドリーな名前" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "タグ表示名" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "投稿タグ" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "投稿タグ" diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.mo b/blog/locale/kk_KZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/blog/locale/kk_KZ/LC_MESSAGES/django.mo and b/blog/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.po b/blog/locale/kk_KZ/LC_MESSAGES/django.po index d41de6b2..78f4a5e6 100644 --- a/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -20,7 +20,7 @@ msgstr "" msgid "(no content yet)" msgstr "" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "" @@ -28,47 +28,51 @@ msgstr "" msgid "blog" msgstr "" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "" diff --git a/blog/locale/nl_NL/LC_MESSAGES/django.mo b/blog/locale/nl_NL/LC_MESSAGES/django.mo index 7fc147d0..2592e787 100644 Binary files a/blog/locale/nl_NL/LC_MESSAGES/django.mo and b/blog/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/blog/locale/nl_NL/LC_MESSAGES/django.po b/blog/locale/nl_NL/LC_MESSAGES/django.po index ac5da0f9..d9f725ec 100644 --- a/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: nl-NL\n" +"Language: nl-nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(nog geen inhoud)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML weergeven" @@ -25,49 +25,55 @@ msgstr "HTML weergeven" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Titel van de post" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titel" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Plaats" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Berichten" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Markdown-bestanden worden niet ondersteund - gebruik in plaats daarvan " +"markdown-inhoud!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -"er moet een markdown-bestand of markdown-inhoud worden geleverd - wederzijds " -"exclusief" +"er moet een markdown-bestand of markdown-inhoud worden geleverd - wederzijds" +" exclusief" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "interne tagidentifier voor de posttag" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Tag naam" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Gebruiksvriendelijke naam voor de posttag" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Tag weergavenaam" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Post tag" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/pl_PL/LC_MESSAGES/django.mo b/blog/locale/pl_PL/LC_MESSAGES/django.mo index eafa0036..5c7921fc 100644 Binary files a/blog/locale/pl_PL/LC_MESSAGES/django.mo and b/blog/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/blog/locale/pl_PL/LC_MESSAGES/django.po b/blog/locale/pl_PL/LC_MESSAGES/django.po index 644ccaab..f13b6e84 100644 --- a/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: pl-PL\n" +"Language: pl-pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(brak treści)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Renderowany HTML" @@ -25,49 +25,54 @@ msgstr "Renderowany HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Tytuł postu" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Tytuł" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Post" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Posty" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Pliki Markdown nie są obsługiwane - zamiast tego użyj zawartości Markdown!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "należy dostarczyć plik markdown lub zawartość markdown - wzajemnie się " "wykluczające" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "wewnętrzny identyfikator tagu posta" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nazwa tagu" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Przyjazna dla użytkownika nazwa tagu posta" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Tag posta" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tagi postów" diff --git a/blog/locale/pt_BR/LC_MESSAGES/django.mo b/blog/locale/pt_BR/LC_MESSAGES/django.mo index 59889ebb..875b6f2e 100644 Binary files a/blog/locale/pt_BR/LC_MESSAGES/django.mo and b/blog/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/blog/locale/pt_BR/LC_MESSAGES/django.po b/blog/locale/pt_BR/LC_MESSAGES/django.po index c80e5744..67f81f35 100644 --- a/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: pt-BR\n" +"Language: pt-br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(ainda não há conteúdo)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML renderizado" @@ -25,48 +25,54 @@ msgstr "HTML renderizado" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Título da postagem" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Título" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Postar" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Publicações" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Os arquivos markdown não são suportados - use conteúdo markdown em vez " +"disso!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "um arquivo ou conteúdo de markdown deve ser fornecido - mutuamente exclusivo" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "identificador de tag interno para a tag de postagem" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nome da etiqueta" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Nome de fácil utilização para a tag de postagem" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Nome de exibição da tag" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Etiqueta de postagem" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Tags de postagem" diff --git a/blog/locale/ro_RO/LC_MESSAGES/django.mo b/blog/locale/ro_RO/LC_MESSAGES/django.mo index 0236ad61..3d9f6f22 100644 Binary files a/blog/locale/ro_RO/LC_MESSAGES/django.mo and b/blog/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ro_RO/LC_MESSAGES/django.po b/blog/locale/ro_RO/LC_MESSAGES/django.po index 890de019..8eb9796b 100644 --- a/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: ro-RO\n" +"Language: ro-ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(fără conținut încă)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "HTML redat" @@ -25,49 +25,55 @@ msgstr "HTML redat" msgid "blog" msgstr "Blog" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Titlul postului" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Titlul" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Post" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Mesaje" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Fișierele Markdown nu sunt acceptate - utilizați în schimb conținut " +"Markdown!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "trebuie furnizat un fișier markdown sau conținut markdown - se exclud " "reciproc" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "identificator intern de etichetă pentru eticheta postului" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Nume etichetă" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Nume ușor de utilizat pentru eticheta postului" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Nume afișare etichetă" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Etichetă post" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Etichete poștale" diff --git a/blog/locale/ru_RU/LC_MESSAGES/django.mo b/blog/locale/ru_RU/LC_MESSAGES/django.mo index 3ba9e4aa..59150ab2 100644 Binary files a/blog/locale/ru_RU/LC_MESSAGES/django.mo and b/blog/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/blog/locale/ru_RU/LC_MESSAGES/django.po b/blog/locale/ru_RU/LC_MESSAGES/django.po index 9658cdd6..ecb1ada2 100644 --- a/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -1,13 +1,13 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" -"Language: ru-RU\n" +"Language: ru-ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(пока без содержания)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "Рендеринг HTML" @@ -25,49 +25,55 @@ msgstr "Рендеринг HTML" msgid "blog" msgstr "Блог" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "Заголовок сообщения" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "Название" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "Пост" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "Посты" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "" +"Файлы в формате Markdown не поддерживаются - используйте вместо них " +"содержимое в формате Markdown!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "необходимо предоставить файл разметки или содержимое разметки - " "взаимоисключающие варианты" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "внутренний идентификатор тега для тега post" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "Название тега" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "Удобное для пользователя название тега поста" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "Отображаемое имя тега" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "Тэг поста" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "Тэги постов" diff --git a/blog/locale/zh_Hans/LC_MESSAGES/django.mo b/blog/locale/zh_Hans/LC_MESSAGES/django.mo index 98da2794..6b1380ad 100644 Binary files a/blog/locale/zh_Hans/LC_MESSAGES/django.mo and b/blog/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/blog/locale/zh_Hans/LC_MESSAGES/django.po b/blog/locale/zh_Hans/LC_MESSAGES/django.po index 7a3354b2..d2692367 100644 --- a/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ # msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" msgid "(no content yet)" msgstr "(暂无内容)" -#: blog/admin.py:40 +#: blog/admin.py:41 msgid "rendered HTML" msgstr "渲染的 HTML" @@ -25,47 +25,51 @@ msgstr "渲染的 HTML" msgid "blog" msgstr "博客" -#: blog/models.py:15 +#: blog/models.py:17 msgid "post title" msgstr "帖子标题" -#: blog/models.py:15 +#: blog/models.py:17 msgid "title" msgstr "标题" -#: blog/models.py:62 +#: blog/models.py:64 msgid "post" msgstr "职位" -#: blog/models.py:63 +#: blog/models.py:65 msgid "posts" msgstr "职位" -#: blog/models.py:67 +#: blog/models.py:69 +msgid "markdown files are not supported yet - use markdown content instead" +msgstr "不支持 Markdown 文件,请使用 Markdown 内容!" + +#: blog/models.py:71 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "必须提供标记符文件或标记符内容 - 相互排斥" -#: blog/models.py:78 +#: blog/models.py:82 msgid "internal tag identifier for the post tag" msgstr "职位标签的内部标签标识符" -#: blog/models.py:79 +#: blog/models.py:83 msgid "tag name" msgstr "标签名称" -#: blog/models.py:83 +#: blog/models.py:87 msgid "user-friendly name for the post tag" msgstr "方便用户使用的帖子标签名称" -#: blog/models.py:84 +#: blog/models.py:88 msgid "tag display name" msgstr "标签显示名称" -#: blog/models.py:92 +#: blog/models.py:96 msgid "post tag" msgstr "职位标签" -#: blog/models.py:93 +#: blog/models.py:97 msgid "post tags" msgstr "帖子标签" diff --git a/blog/models.py b/blog/models.py index 2bc80275..d47853e8 100644 --- a/blog/models.py +++ b/blog/models.py @@ -10,11 +10,13 @@ from core.abstract import NiceModel class Post(NiceModel): is_publicly_visible = True - author = ForeignKey(to="vibes_auth.User", on_delete=CASCADE, blank=False, null=False, related_name="posts") - title = CharField( + author: ForeignKey = ForeignKey( + to="vibes_auth.User", on_delete=CASCADE, blank=False, null=False, related_name="posts" + ) + title: CharField = CharField( unique=True, max_length=128, blank=False, null=False, help_text=_("post title"), verbose_name=_("title") ) - content = MarkdownField( + content: MarkdownField = MarkdownField( "content", extensions=[ TocExtension(toc_depth=3), @@ -51,9 +53,9 @@ class Post(NiceModel): blank=True, null=True, ) - file = FileField(upload_to="posts/", blank=True, null=True) - slug = AutoSlugField(populate_from="title", allow_unicode=True, unique=True, editable=False) - tags = ManyToManyField(to="blog.PostTag", blank=True, related_name="posts") + file: FileField = FileField(upload_to="posts/", blank=True, null=True) + slug: AutoSlugField = AutoSlugField(populate_from="title", allow_unicode=True, unique=True, editable=False) + tags: ManyToManyField = ManyToManyField(to="blog.PostTag", blank=True, related_name="posts") def __str__(self): return f"{self.title} | {self.author.first_name} {self.author.last_name}" @@ -63,6 +65,8 @@ class Post(NiceModel): verbose_name_plural = _("posts") def save(self, **kwargs): + if self.file: + raise ValueError(_("markdown files are not supported yet - use markdown content instead")) if not any([self.file, self.content]) or all([self.file, self.content]): raise ValueError(_("a markdown file or markdown content must be provided - mutually exclusive")) super().save(**kwargs) @@ -71,14 +75,14 @@ class Post(NiceModel): class PostTag(NiceModel): is_publicly_visible = True - tag_name = CharField( + tag_name: CharField = CharField( blank=False, null=False, max_length=255, help_text=_("internal tag identifier for the post tag"), verbose_name=_("tag name"), ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("user-friendly name for the post tag"), verbose_name=_("tag display name"), diff --git a/blog/widgets.py b/blog/widgets.py index bcb63b0e..f312b9a7 100644 --- a/blog/widgets.py +++ b/blog/widgets.py @@ -31,4 +31,5 @@ class MarkdownEditorWidget(forms.Textarea): }}); """ + # noinspection DjangoSafeString return mark_safe(textarea_html + init_js) diff --git a/core/abstract.py b/core/abstract.py index a539bd2c..7ddf3ae9 100644 --- a/core/abstract.py +++ b/core/abstract.py @@ -7,14 +7,14 @@ from django_extensions.db.fields import CreationDateTimeField, ModificationDateT class NiceModel(Model): id = None - uuid = UUIDField( + uuid: UUIDField = UUIDField( verbose_name=_("unique id"), help_text=_("unique id is used to surely identify any database object"), primary_key=True, default=uuid.uuid4, editable=False, ) - is_active = BooleanField( + is_active: BooleanField = BooleanField( default=True, verbose_name=_("is active"), help_text=_("if set to false, this object can't be seen by users without needed permission"), diff --git a/core/admin.py b/core/admin.py index 84da6298..6af8f80f 100644 --- a/core/admin.py +++ b/core/admin.py @@ -134,8 +134,8 @@ class CategoryAdmin(DraggableMPTTAdmin, BasicModelAdmin, TabbedTranslationAdmin) def indented_title(self, instance): return instance.name - indented_title.short_description = _("name") - indented_title.admin_order_field = "name" + indented_title.short_description = _("name") # type: ignore + indented_title.admin_order_field = "name" # type: ignore @admin.register(Brand) @@ -191,12 +191,12 @@ class ProductAdmin(BasicModelAdmin, TabbedTranslationAdmin): def price(self, obj): return obj.price - price.short_description = _("price") + price.short_description = _("price") # type: ignore def rating(self, obj): return obj.rating - rating.short_description = _("rating") + rating.short_description = _("rating") # type: ignore fieldsets = ( ( @@ -278,7 +278,7 @@ class OrderAdmin(BasicModelAdmin): def is_business(self, obj): return obj.is_business - is_business.short_description = _("is business") + is_business.short_description = _("is business") # type: ignore def get_queryset(self, request): qs = super().get_queryset(request) @@ -431,6 +431,6 @@ class ConstanceConfig: admin.site.unregister([Config]) # type: ignore admin.site.register([ConstanceConfig], ConstanceAdmin) # type: ignore -admin.site.site_title = f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]}" +admin.site.site_title = f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]}" # type: ignore admin.site.site_header = "eVibes" -admin.site.index_title = f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]}" +admin.site.index_title = f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]}" # type: ignore diff --git a/core/elasticsearch/__init__.py b/core/elasticsearch/__init__.py index adc46e65..d64dd82f 100644 --- a/core/elasticsearch/__init__.py +++ b/core/elasticsearch/__init__.py @@ -67,7 +67,7 @@ def process_query(query: str = ""): response = search.execute() # Collect results, guard against None values - results = {"products": [], "categories": [], "brands": [], "posts": []} + results: dict = {"products": [], "categories": [], "brands": [], "posts": []} for hit in response.hits: obj_uuid = getattr(hit, "uuid", None) or hit.meta.id obj_name = getattr(hit, "name", None) or getattr(hit, "title", None) or "N/A" diff --git a/core/filters.py b/core/filters.py index 2f5227e1..4a8fa804 100644 --- a/core/filters.py +++ b/core/filters.py @@ -335,20 +335,16 @@ class CategoryFilter(FilterSet): fields = ["uuid", "name", "parent_uuid", "slug", "tags", "level", "order_by", "whole"] def filter_whole_categories(self, queryset, _name, value): - has_own_products = Exists( - Product.objects.filter(category=OuterRef('pk')) - ) + has_own_products = Exists(Product.objects.filter(category=OuterRef("pk"))) has_desc_products = Exists( Product.objects.filter( is_active=True, - category__tree_id=OuterRef('tree_id'), - category__lft__gt=OuterRef('lft'), - category__rght__lt=OuterRef('rght'), + category__tree_id=OuterRef("tree_id"), + category__lft__gt=OuterRef("lft"), + category__rght__lt=OuterRef("rght"), ) ) - annotated = queryset.annotate( - has_products=has_own_products | has_desc_products - ) + annotated = queryset.annotate(has_products=has_own_products | has_desc_products) if value: return annotated.filter(has_products=True).distinct() return annotated.filter(has_products=False).distinct() diff --git a/core/graphene/mutations.py b/core/graphene/mutations.py index 819181dc..f3d9f64b 100644 --- a/core/graphene/mutations.py +++ b/core/graphene/mutations.py @@ -619,6 +619,7 @@ class ContactUs(BaseMutation): return ContactUs(received=False, error=str(e)) +# noinspection PyArgumentList class Search(BaseMutation): class Arguments: query = String(required=True) diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index af88edc8..2693e745 100644 Binary files a/core/locale/ar_AR/LC_MESSAGES/django.mo and b/core/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/core/locale/ar_AR/LC_MESSAGES/django.po b/core/locale/ar_AR/LC_MESSAGES/django.po index dae1036e..f5bc429e 100644 --- a/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/core/locale/ar_AR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -58,17 +58,16 @@ msgstr "تنشيط المحدد %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "إلغاء تنشيط %(verbose_name_plural)s المحددة" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "قيمة السمة" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "قيم السمات" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "الاسم" @@ -76,23 +75,23 @@ msgstr "الاسم" msgid "image" msgstr "الصورة" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "الصور" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "المخزون" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "الأسهم" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "السعر" @@ -108,11 +107,11 @@ msgstr "معلومات أساسية" msgid "important dates" msgstr "تواريخ مهمة" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "طلب المنتج" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "اطلب المنتجات" @@ -730,100 +729,108 @@ msgstr "إضافة أو إزالة الملاحظات على العلاقة بي msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "الاسم" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "الفئات" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "الفئات الرخويات" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "الوسوم" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "الحد الأدنى للسعر" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "ماكس برايس" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "نشط" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "العلامة التجارية" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "السمات" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "الكمية" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "سبيكة" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "هو رقمي" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "تضمين الفئات الفرعية" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "يجب أن يكون هناك category_uid لاستخدام علامة تضمين_الفئات_الفرعية" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "البحث (المعرف أو اسم المنتج أو رقم الجزء)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "تم الشراء بعد (شامل)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "تم الشراء من قبل (شامل)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "البريد الإلكتروني للمستخدم" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "معرّف المستخدم UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "الحالة" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "معرّف قابل للقراءة من قبل الإنسان" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "الوالدين" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "الفئة الكاملة (تحتوي على منتج واحد على الأقل أو لا)" + +#: core/filters.py:323 +msgid "Level" +msgstr "المستوى" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID المنتج" @@ -879,7 +886,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" @@ -931,7 +938,7 @@ msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" @@ -940,93 +947,101 @@ msgstr "{name} غير موجود: {uuid}" msgid "limit must be between 1 and 10" msgstr "يجب أن يكون الحد بين 1 و10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - يعمل مثل السحر" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "السمات" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "السمات المجمعة" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "الفئات" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "العلامات التجارية" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "الفئات" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "النسبة المئوية للترميز" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "العلامات الخاصة بهذه الفئة" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "المنتجات في هذه الفئة" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "البائعون" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "خط العرض (الإحداثي Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "خط الطول (الإحداثي X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "كيفية" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "قيمة التصنيف من 1 إلى 10، شاملة، أو 0 إذا لم يتم تعيينها." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "يمثل ملاحظات من المستخدم." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "الإشعارات" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "تحميل الرابط الخاص بمنتج الطلب هذا إن أمكن" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "قائمة بطلب المنتجات بهذا الترتيب" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "عنوان إرسال الفواتير" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1034,174 +1049,182 @@ msgstr "" "عنوان الشحن لهذا الطلب، اترك العنوان فارغًا إذا كان هو نفسه عنوان إرسال " "الفواتير أو إذا لم يكن منطبقًا" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "السعر الإجمالي لهذا الطلب" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "إجمالي كمية المنتجات بالترتيب" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "هل جميع المنتجات في الطلب رقمي" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "الطلبات" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "رابط الصورة" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "صور المنتج" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "الفئة" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "الملاحظات" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "العلامة التجارية" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "الكمية" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "عدد الملاحظات" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "المنتجات" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "الرموز الترويجية" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "العروض الترويجية" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "البائع" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "المنتج" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "قوائم التمنيات" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "المنتجات الموسومة" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "علامات المنتج" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "الفئات الموسومة" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "علامات الفئات" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "اسم المشروع" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "البريد الإلكتروني للشركة" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "اسم الشركة" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "عنوان الشركة" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "رقم هاتف الشركة" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" " المضيف" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "مستخدم البريد الإلكتروني المضيف" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "الحد الأقصى لمبلغ السداد" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "الحد الأدنى لمبلغ السداد" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "بيانات التحليلات" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "بيانات الإعلانات" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "التكوين" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "رمز اللغة" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "اسم اللغة" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "علم اللغة، إذا كان موجوداً :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "نتائج البحث عن المنتجات" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "نتائج البحث عن المنتجات" @@ -1270,7 +1293,7 @@ msgid "attribute's name" msgstr "اسم السمة" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "السمة" @@ -1282,8 +1305,8 @@ msgstr "سمة هذه القيمة" msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "المنتج المرتبط" @@ -1331,7 +1354,7 @@ msgstr "وصف الفئة" msgid "tags that help describe or group this category" msgstr "العلامات التي تساعد في وصف هذه الفئة أو تجميعها" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "علامات الفئة" @@ -1379,227 +1402,227 @@ msgstr "الفئات" msgid "category this product belongs to" msgstr "الفئة التي ينتمي إليها هذا المنتج" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "ربط هذا المنتج اختياريًا بعلامة تجارية" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "العلامات التي تساعد في وصف أو تجميع هذا المنتج" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "يشير إلى ما إذا كان هذا المنتج يتم تسليمه رقميًا أم لا" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "هل المنتج رقمي" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "توفير اسم تعريفي واضح للمنتج" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "اسم المنتج" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "وصف المنتج" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "رقم الجزء لهذا المنتج" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "رقم الجزء" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "تخزين بيانات الاعتماد ونقاط النهاية المطلوبة لاتصالات واجهة برمجة التطبيقات " "الخاصة بالمورّد" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "معلومات المصادقة" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "تحديد الترميز للمنتجات المسترجعة من هذا البائع" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "نسبة هامش الربح للبائع" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "اسم هذا البائع" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "اسم البائع" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "التعليقات المقدمة من المستخدمين حول تجربتهم مع المنتج" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "تعليقات على الملاحظات" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "منتجات الطلبات ذات الصلة" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "التصنيف المعين من قبل المستخدم للمنتج" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "تصنيف المنتج" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "الملاحظات" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "عنوان إرسال الفواتير المستخدم لهذا الطلب" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "الرمز الترويجي الاختياري المطبق على هذا الطلب" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "الرمز الترويجي المطبق" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "عنوان الشحن المستخدم لهذا الطلب" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "عنوان الشحن" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "الحالة الحالية للطلب في دورة حياته" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "حالة الطلب" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " "استخدام عرض الجدول" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "تمثيل JSON لسمات الطلب لهذا الطلب" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "المستخدم الذي قدم الطلب" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "المستخدم" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "الطابع الزمني عند الانتهاء من الطلب" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "وقت الشراء" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "معرّف يمكن قراءته بواسطة البشر للطلب" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "معرّف يمكن قراءته من قبل البشر" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "الطلب" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} غير موجود: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "العنوان غير موجود" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1607,200 +1630,200 @@ msgstr "" "لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" " الإلكتروني للعميل، رقم هاتف العميل" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "طريقة الدفع غير صالحة: {payment_method} من {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "التعليقات الداخلية" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "إشعارات المستخدم" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "ترتيب الوالدين" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "كمية المنتج" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "حالة خط الإنتاج" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "إجراء خاطئ محدد للتغذية الراجعة: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "لا يمكنك التعليق على طلب لم يتم استلامه" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "اسم العلامة" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "اسم عرض العلامة" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "علامة المنتج" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "علامة الفئة" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "النص البديل للصورة" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "صورة المنتج" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "أولوية العرض" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "صور المنتج" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "المستخدم المعين" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "الرمز الترويجي" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "الرموز الترويجية" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1808,196 +1831,196 @@ msgstr "" "يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" " أو لا هذا ولا ذاك." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "نسبة الخصم" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "اسم الترقية" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "وصف الترقية" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "المنتجات المشمولة" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "الترقية" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "البائع المرتبط" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "سعر البيع" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "ملف رقمي" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "إدخالات المخزون" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "قائمة الرغبات" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "تنزيل" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "التنزيلات" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "لا يمكنك تنزيل أصل رقمي لطلب غير مكتمل" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "فيلم وثائقي" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "لم يتم حلها" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "سطر العنوان للعميل" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "سطر العنوان" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "الشارع" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "المنطقة" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "المدينة" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "المنطقة" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "الرمز البريدي" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "البلد" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "العنوان" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "العناوين" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "يجب عليك تقديم تعليق، وتقييم، وطلب المنتج uuid لإضافة ملاحظاتك." @@ -2006,60 +2029,26 @@ msgstr "يجب عليك تقديم تعليق، وتقييم، وطلب المن msgid "error during promocode creation: {e!s}" msgstr "خطأ أثناء إنشاء الرمز الترويجي: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "التكوين" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "الحفظ" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "الصفحة الرئيسية" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "افتراضي" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "القيمة" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "تم تعديله" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "الملف الحالي" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "إعادة التعيين إلى الوضع الافتراضي" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "تأكيد الطلب" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "الشعار" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "مرحبًا %(order.user.first_name)s," @@ -2067,46 +2056,45 @@ msgstr "مرحبًا %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." " فيما يلي تفاصيل طلبك:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "الإجمالي" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "السعر الإجمالي" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "إذا كانت لديك أي أسئلة، فلا تتردد في الاتصال بدعمنا على " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "مع أطيب التحيات، فريق عمل %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "جميع الحقوق محفوظة" @@ -2122,23 +2110,32 @@ msgstr "مرحباً %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" -msgstr "لقد قمنا بمعالجة طلبك بنجاح №%(order_uuid)s! فيما يلي تفاصيل طلبك:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" +msgstr "لقد قمنا بمعالجة طلبك بنجاح №%(order_uuid)s__! فيما يلي تفاصيل طلبك:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "معلومات إضافية" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"معلومات إضافية\n" +" معلومات إضافية" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "القيمة" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "إذا كانت لديك أي أسئلة، فلا تتردد في الاتصال بدعمنا على %(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "مع أطيب التحيات، فريق عمل %(project_name)s" @@ -2147,29 +2144,38 @@ msgstr "مع أطيب التحيات، فريق عمل %(project_name)s" msgid "key" msgstr "المفتاح" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" -msgstr "شكراً على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" +msgstr "شكرًا لك على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "سعر الشحن" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "سيتم توصيل طلبك إلى العنوان التالي:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "مع أطيب تحياتي،
فريق عمل %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"جميع الحقوق\n" +" محفوظة" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "كل من البيانات والمهلة مطلوبة" @@ -2228,7 +2234,7 @@ msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "خطأ في الترميز الجغرافي: {e}" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 57f9379b..e7ed7abe 100644 Binary files a/core/locale/cs_CZ/LC_MESSAGES/django.mo and b/core/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.po b/core/locale/cs_CZ/LC_MESSAGES/django.po index 6b7b3a9d..90e09479 100644 --- a/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -60,17 +60,16 @@ msgstr "Aktivovat vybrané %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktivovat vybrané %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Hodnota atributu" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Hodnoty atributů" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Název" @@ -78,23 +77,23 @@ msgstr "Název" msgid "image" msgstr "Obrázek" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Obrázky" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Zásoby" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Cena" @@ -110,11 +109,11 @@ msgstr "Základní informace" msgid "important dates" msgstr "Důležitá data" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Objednat produkt" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Objednat produkty" @@ -755,101 +754,109 @@ msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt." msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Název" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Kategorie" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Kategorie Slimáci" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Štítky" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Minimální cena" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Je aktivní" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Značka" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Atributy" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Množství" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Slug" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Je digitální" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Zahrnout podkategorie" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Pro použití příznaku include_subcategories musí existovat category_uuid." -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Vyhledávání (ID, název produktu nebo číslo dílu)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Koupeno po (včetně)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Koupeno před (včetně)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "E-mail uživatele" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID uživatele" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Stav" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Lidsky čitelné ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Rodič" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Celá kategorie (má nebo nemá alespoň 1 produkt)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Úroveň" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID produktu" @@ -904,7 +911,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" @@ -958,7 +965,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" @@ -967,94 +974,102 @@ msgstr "{name} neexistuje: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limit musí být mezi 1 a 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funguje jako kouzlo" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Atributy" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Seskupené atributy" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Značky" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Procento přirážky" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "Které atributy a hodnoty lze použít pro filtrování této kategorie." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimální a maximální ceny produktů v této kategorii, pokud jsou k " "dispozici." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Štítky pro tuto kategorii" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produkty v této kategorii" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Prodejci" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Zeměpisná šířka (souřadnice Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Zeměpisná délka (souřadnice X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Jak na to" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Hodnota hodnocení od 1 do 10 včetně nebo 0, pokud není nastaveno." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Představuje zpětnou vazbu od uživatele." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Oznámení" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Stáhněte si url adresu pro tento objednaný produkt, pokud je to možné" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Seznam objednaných produktů v tomto pořadí" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Fakturační adresa" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1062,173 +1077,181 @@ msgstr "" "Dodací adresa pro tuto objednávku, pokud je stejná jako fakturační adresa " "nebo pokud není použitelná, ponechte prázdné." -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Celková cena této objednávky" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Celkové množství objednaných produktů" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Jsou všechny produkty v objednávce digitální" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Objednávky" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Adresa URL obrázku" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Obrázky produktu" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Zpětná vazba" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Značka" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Množství" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Počet zpětných vazeb" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Propagační kódy" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produkty v prodeji" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Propagační akce" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Prodejce" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Seznamy přání" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Produkty s příznakem" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Štítky produktu" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Kategorie s příznakem" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Štítky kategorií" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Název projektu" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "E-mail společnosti" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Název společnosti" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adresa společnosti" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Telefonní číslo společnosti" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', někdy se musí použít místo hodnoty hostitelského uživatele." -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Uživatel hostitelského e-mailu" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maximální částka pro platbu" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimální částka pro platbu" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytická data" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Reklamní údaje" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Konfigurace" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Kód jazyka" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Název jazyka" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Příznak jazyka, pokud existuje :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Získat seznam podporovaných jazyků" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Výsledky vyhledávání produktů" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Výsledky vyhledávání produktů" @@ -1297,7 +1320,7 @@ msgid "attribute's name" msgstr "Název atributu" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Atribut" @@ -1309,8 +1332,8 @@ msgstr "Atribut této hodnoty" msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Související produkt" @@ -1358,7 +1381,7 @@ msgstr "Popis kategorie" msgid "tags that help describe or group this category" msgstr "značky, které pomáhají popsat nebo seskupit tuto kategorii" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "štítky kategorií" @@ -1406,231 +1429,231 @@ msgstr "Kategorie" msgid "category this product belongs to" msgstr "Kategorie, do které tento produkt patří" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Volitelně přiřadit tento produkt ke značce" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Značky, které pomáhají popsat nebo seskupit tento produkt" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Označuje, zda je tento produkt dodáván digitálně" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Je produkt digitální" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Uveďte jasný identifikační název výrobku" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Název produktu" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Popis produktu" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Číslo dílu pro tento produkt" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Číslo dílu" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Ukládá pověření a koncové body potřebné pro komunikaci s rozhraním API " "dodavatele." -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informace o ověřování" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Definice přirážky pro produkty získané od tohoto dodavatele" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Procento přirážky prodejce" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Název tohoto prodejce" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Název prodejce" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Komentáře uživatelů o jejich zkušenostech s produktem" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Zpětná vazba" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Odkazuje na konkrétní produkt v objednávce, kterého se tato zpětná vazba " "týká." -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Související objednávka produktu" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Hodnocení produktu přidělené uživatelem" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Hodnocení produktu" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Zpětná vazba" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Fakturační adresa použitá pro tuto objednávku" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Volitelný promo kód použitý na tuto objednávku" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Použitý promo kód" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Dodací adresa použitá pro tuto objednávku" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Dodací adresa" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Aktuální stav zakázky v jejím životním cyklu" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Stav objednávky" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON struktura oznámení pro zobrazení uživatelům, v uživatelském rozhraní " "administrátora se používá tabulkové zobrazení." -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON reprezentace atributů objednávky pro tuto objednávku" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Uživatel, který zadal objednávku" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Uživatel" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Časové razítko, kdy byla objednávka dokončena." -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Kupte si čas" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Lidsky čitelný identifikátor objednávky" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "lidsky čitelné ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Objednávka" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Do objednávky, která není v procesu vyřizování, nelze přidat produkty." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} neexistuje: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "Nelze odebrat produkty z objednávky, která není nevyřízená." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "Fyzické produkty můžete zakoupit pouze se zadanou dodací adresou!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adresa neexistuje" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "V tuto chvíli nemůžete nakupovat, zkuste to prosím znovu za několik minut." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1638,199 +1661,199 @@ msgstr "" "bez registrace nelze nakupovat, uveďte prosím následující údaje: jméno " "zákazníka, e-mail zákazníka, telefonní číslo zákazníka." -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Neplatný způsob platby: {payment_method} z {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena, kterou zákazník zaplatil za tento produkt v době nákupu." -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Interní připomínky" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Oznámení uživatele" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Objednávka rodičů" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Množství produktu" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Stav produktové řady" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "špatně zadaná akce pro zpětnou vazbu: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "nelze poskytnout zpětnou vazbu na objednávku, která nebyla přijata" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Název štítku" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Štítek produktu" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "značka kategorie" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Text alt obrázku" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Obrázek produktu" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Priorita zobrazení" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Obrázky produktů" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Jedinečný kód, který uživatel použije k uplatnění slevy." -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuální sleva uplatněná v případě nevyužití pevné částky" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Procentuální sleva" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Časové razítko použití promokódu, prázdné, pokud ještě nebyl použit." -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Časové razítko použití" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Uživatel přiřazený k tomuto promokódu, je-li to relevantní" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Přiřazený uživatel" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Propagační kód" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Propagační kódy" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1838,196 +1861,196 @@ msgstr "" "Měl by být definován pouze jeden typ slevy (částka nebo procento), nikoli " "však oba typy slev nebo žádný z nich." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Procento slevy" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Název akce" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Popis propagace" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Zahrnuté produkty" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Propagace" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Přidružený prodejce" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Prodejní cena" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Množství na skladě" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU prodejce" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Digitální soubor spojený s touto zásobou, je-li to vhodné" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digitální soubor" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Zápisy do zásob" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Seznam přání" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Stáhnout" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Ke stažení na" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Digitální aktivum pro nedokončenou objednávku nelze stáhnout." -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Dokumentární film" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Dokumentární filmy" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Nevyřešené" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Adresní řádek pro zákazníka" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Adresní řádek" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Ulice" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Okres" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Město" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Země" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adresa" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresy" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2037,60 +2060,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Chyba při vytváření promokódu: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Konfigurace" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Uložit" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Home" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Výchozí" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Hodnota" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Je upraven" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Aktuální soubor" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Obnovení výchozího nastavení" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Potvrzení objednávky" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hello %(order.user.first_name)s," @@ -2098,47 +2087,46 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, " "že jsme Vaši objednávku převzali do práce. Níže jsou uvedeny údaje o vaší " "objednávce:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Celkem" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Celková cena" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "V případě dotazů se obraťte na naši podporu na adrese " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "S pozdravem,
tým %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Všechna práva vyhrazena" @@ -2154,26 +2142,35 @@ msgstr "Ahoj %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Úspěšně jsme zpracovali vaši objednávku №%(order_uuid)s! Níže jsou uvedeny " "podrobnosti vaší objednávky:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "další informace" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"další\n" +" informace" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Hodnota" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "V případě dotazů se můžete obrátit na naši podporu na adrese " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "S pozdravem,
tým %(project_name)s" @@ -2182,31 +2179,40 @@ msgstr "S pozdravem,
tým %(project_name)s" msgid "key" msgstr "Klíč" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže " "jsou uvedeny údaje o vaší objednávce:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Cena přepravy" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Vaše objednávka bude doručena na následující adresu:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "S pozdravem,
tým %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"všechna práva\n" +" vyhrazeno" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Jsou vyžadována data i časový limit" @@ -2266,7 +2272,7 @@ msgstr "Digitální aktivum můžete stáhnout pouze jednou" msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Chyba v zeměpisném kódování: {e}" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index 7e6b3c65..42466822 100644 Binary files a/core/locale/da_DK/LC_MESSAGES/django.mo and b/core/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/core/locale/da_DK/LC_MESSAGES/django.po b/core/locale/da_DK/LC_MESSAGES/django.po index 9098e95f..42811cd6 100644 --- a/core/locale/da_DK/LC_MESSAGES/django.po +++ b/core/locale/da_DK/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,17 +59,16 @@ msgstr "Aktivér udvalgte %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver udvalgte %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attributværdi" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Attributværdier" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Navn" @@ -77,23 +76,23 @@ msgstr "Navn" msgid "image" msgstr "Billede" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Billeder" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Lager" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Aktier" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Pris" @@ -109,11 +108,11 @@ msgstr "Grundlæggende information" msgid "important dates" msgstr "Vigtige datoer" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Bestil produkt" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Bestil produkter" @@ -757,101 +756,109 @@ msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation" msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Navn" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Kategorier" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Kategorier Snegle" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Min. pris" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Maks. pris" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Er aktiv" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Brand" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Egenskaber" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Mængde" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Snegl" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Er digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Inkluder underkategorier" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Der skal være en category_uuid for at bruge include_subcategories-flaget" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Søg (ID, produktnavn eller reservedelsnummer)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Købt efter (inklusive)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Købt før (inklusive)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Brugerens e-mail" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "Bruger UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Menneskeligt læsbart ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Forælder" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Hele kategorien (har mindst 1 produkt eller ej)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Niveau" + +#: core/filters.py:384 msgid "Product UUID" msgstr "Produkt UUID" @@ -906,7 +913,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" @@ -960,7 +967,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" @@ -969,98 +976,106 @@ msgstr "{name} findes ikke: {uuid}" msgid "limit must be between 1 and 10" msgstr "Grænsen skal være mellem 1 og 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en charme" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Egenskaber" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Grupperede attributter" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Grupper af attributter" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Kategorier" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Mærker" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Kategorier" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Markup-procentdel" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Hvilke attributter og værdier, der kan bruges til at filtrere denne " "kategori." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimums- og maksimumspriser for produkter i denne kategori, hvis de er " "tilgængelige." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags for denne kategori" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produkter i denne kategori" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Leverandører" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Længdegrad (X-koordinat)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Sådan gør du" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Vurderingsværdi fra 1 til 10, inklusive, eller 0, hvis den ikke er " "indstillet." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Repræsenterer feedback fra en bruger." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Meddelelser" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Download url for dette ordreprodukt, hvis det er relevant" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne ordre" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Faktureringsadresse" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1068,173 +1083,181 @@ msgstr "" "Leveringsadresse for denne ordre, lad den være tom, hvis den er den samme " "som faktureringsadressen, eller hvis den ikke er relevant" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Samlet pris for denne ordre" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Samlet antal produkter i ordren" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Er alle produkterne i ordren digitale?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Bestillinger" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Billed-URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Produktets billeder" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Kategori" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Tilbagemeldinger" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Attributgrupper" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Mængde" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Antal tilbagemeldinger" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produkter" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promokoder" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produkter til salg" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Kampagner" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Leverandør" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Ønskelister" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Mærkede produkter" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Produktmærker" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Tagged kategorier" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Kategoriernes tags" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Projektets navn" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Virksomhedens e-mail" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Virksomhedens navn" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Virksomhedens adresse" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Virksomhedens telefonnummer" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'e-mail fra', nogle gange skal den bruges i stedet for værtsbrugerværdien" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "E-mail-værtsbruger" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maksimalt beløb til betaling" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimumsbeløb for betaling" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytiske data" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Data om reklamer" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Sprogkode" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Sprogets navn" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Sprogflag, hvis det findes :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Få en liste over understøttede sprog" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Søgeresultater for produkter" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Søgeresultater for produkter" @@ -1303,7 +1326,7 @@ msgid "attribute's name" msgstr "Attributtens navn" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribut" @@ -1315,8 +1338,8 @@ msgstr "Attribut for denne værdi" msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Tilknyttet produkt" @@ -1364,7 +1387,7 @@ msgstr "Beskrivelse af kategori" msgid "tags that help describe or group this category" msgstr "tags, der hjælper med at beskrive eller gruppere denne kategori" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "Kategori-tags" @@ -1412,231 +1435,231 @@ msgstr "Kategorier" msgid "category this product belongs to" msgstr "Kategori, som dette produkt tilhører" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Tilknyt eventuelt dette produkt til et brand" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags, der hjælper med at beskrive eller gruppere dette produkt" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Angiver, om dette produkt leveres digitalt" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Er produktet digitalt?" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Giv produktet et klart identificerende navn" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Produktets navn" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Produktbeskrivelse" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Reservedelsnummer for dette produkt" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Varenummer" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Gemmer legitimationsoplysninger og slutpunkter, der er nødvendige for " "leverandørens API-kommunikation" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Oplysninger om godkendelse" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Definer markeringen for produkter, der hentes fra denne leverandør" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Sælgerens markup-procentdel" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Navn på denne leverandør" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Leverandørens navn" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Brugernes kommentarer om deres oplevelse med produktet" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Kommentarer til feedback" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Henviser til det specifikke produkt i en ordre, som denne feedback handler " "om" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Relateret ordreprodukt" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Brugertildelt vurdering af produktet" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Produktvurdering" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Den faktureringsadresse, der bruges til denne ordre" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Valgfri kampagnekode anvendt på denne ordre" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Anvendt kampagnekode" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Den leveringsadresse, der er brugt til denne ordre" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Leveringsadresse" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Ordrens aktuelle status i dens livscyklus" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Bestillingsstatus" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" " tabelvisningen" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON-repræsentation af ordreattributter for denne ordre" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Den bruger, der har afgivet ordren" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Bruger" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Tidsstemplet for, hvornår ordren blev afsluttet" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Køb tid" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "En menneskeligt læsbar identifikator for ordren" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "menneskeligt læsbart ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Bestil" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "En bruger må kun have én afventende ordre ad gangen!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "Du kan ikke tilføje produkter til en ordre, der ikke er i gang." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} findes ikke: {product_uuid}." -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " "ordre." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgsel <{query}>." -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan kun købe fysiske produkter med angivet leveringsadresse!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adressen findes ikke" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Du kan ikke købe i øjeblikket, prøv venligst igen om et par minutter." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1644,202 +1667,202 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ugyldig betalingsmetode: {payment_method} fra {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Den pris, som kunden har betalt for dette produkt på købstidspunktet" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Interne kommentarer" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notifikationer til brugere" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Forældreordre" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Produktmængde" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Status for produktlinje" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "forkert handling angivet for feedback: {action}." -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " "ordre." -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Tag-navn" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Navn på tag-visning" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Produktmærke" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "Kategori-tag" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Billedets alt-tekst" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Produktbillede" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Skærm-prioritet" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Produktbilleder" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Unik kode, der bruges af en bruger til at indløse en rabat" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Procentvis rabat" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Slut gyldighedstid" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Start gyldighedstid" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tidsstempel, hvor promokoden blev brugt, blank, hvis den ikke er brugt endnu" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Tildelt bruger" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Kampagnekode" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Kampagnekoder" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1847,196 +1870,196 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}." -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Rabatprocent" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Navn på kampagne" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Inkluderede produkter" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Forfremmelse" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Salgspris" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Den pris, der er betalt til sælgeren for dette produkt" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Antal på lager" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "Leverandørens SKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digital fil" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Lagerposteringer" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Ønskeliste" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Download" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Downloads" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Du kan ikke downloade et digitalt aktiv for en ikke-færdiggjort ordre" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Dokumentarfilm" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Uafklaret" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Adresselinje til kunden" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Adresselinje" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Gade" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Distrikt" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "By" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Postnummer" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Land" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adresse" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresser" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2047,60 +2070,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Fejl under oprettelse af promokode: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Konfiguration" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Gemme" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Hjem" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Standard" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Værdi" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Er ændret" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Nuværende fil" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Nulstil til standard" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Ordrebekræftelse" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hej %(order.user.first_name)s," @@ -2108,46 +2097,45 @@ msgstr "Hej %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, " "at vi har taget din ordre i brug. Nedenfor er detaljerne om din ordre:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "I alt" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Samlet pris" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Hvis du har spørgsmål, er du velkommen til at kontakte vores support på " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Med venlig hilsen,
%(config.PROJECT_NAME)s team" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Alle rettigheder forbeholdes" @@ -2163,26 +2151,35 @@ msgstr "Hej %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Vi har behandlet din ordre №%(order_uuid)s! Nedenfor er detaljerne om din " "ordre:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "yderligere oplysninger" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"yderligere\n" +" oplysninger" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Værdi" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Hvis du har spørgsmål, er du velkommen til at kontakte vores support på " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Med venlig hilsen,
%(project_name)s team" @@ -2191,31 +2188,40 @@ msgstr "Med venlig hilsen,
%(project_name)s team" msgid "key" msgstr "Nøgle" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor " "er detaljerne om din ordre:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Forsendelsespris" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Din ordre vil blive leveret til følgende adresse:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Med venlig hilsen %(config.PROJECT_NAME)s team" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"alle rettigheder\n" +" forbeholdt" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Både data og timeout er påkrævet" @@ -2276,7 +2282,7 @@ msgstr "Du kan kun downloade det digitale aktiv én gang" msgid "favicon not found" msgstr "Favicon ikke fundet" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fejl i geokodning: {e}" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index 38039b8d..65e8a789 100644 Binary files a/core/locale/de_DE/LC_MESSAGES/django.mo and b/core/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/core/locale/de_DE/LC_MESSAGES/django.po b/core/locale/de_DE/LC_MESSAGES/django.po index 872b42f0..f868ee8b 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Ausgewählte %(verbose_name_plural)s aktivieren" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribut Wert" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Attribut Werte" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Name" @@ -79,23 +78,23 @@ msgstr "Name" msgid "image" msgstr "Bild" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Bilder" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Lagerbestand" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Bestände" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Preis" @@ -111,11 +110,11 @@ msgstr "Grundlegende Informationen" msgid "important dates" msgstr "Wichtige Termine" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Produkt bestellen" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Produkte bestellen" @@ -785,102 +784,110 @@ msgstr "" msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Name" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Kategorien" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Kategorien Schnecken" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Mindestpreis" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Maximaler Preis" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Ist aktiv" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marke" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attribute" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Menge" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Schnecke" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Unterkategorien einbeziehen" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Es muss eine category_uuid vorhanden sein, um das Flag include_subcategories" " zu verwenden" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Suche (ID, Produktname oder Teilenummer)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Gekauft nach (einschließlich)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Gekauft vor (einschließlich)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Benutzer-E-Mail" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Elternteil" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Gesamte Kategorie (mit oder ohne mindestens 1 Produkt)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Ebene" + +#: core/filters.py:384 msgid "Product UUID" msgstr "Produkt UUID" @@ -937,7 +944,7 @@ msgstr "" "sich gegenseitig aus!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" @@ -990,7 +997,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" @@ -999,97 +1006,105 @@ msgstr "{name} existiert nicht: {uuid}" msgid "limit must be between 1 and 10" msgstr "Der Grenzwert muss zwischen 1 und 10 liegen." -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funktioniert wie ein Zauber" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attribute" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Gruppierte Attribute" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Gruppen von Attributen" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Kategorien" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marken" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Kategorien" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Welche Attribute und Werte können für die Filterung dieser Kategorie " "verwendet werden." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern " "verfügbar." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags für diese Kategorie" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produkte in dieser Kategorie" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Anbieter" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Breitengrad (Y-Koordinate)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Längengrad (X-Koordinate)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Wie" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Bewertungswert von 1 bis einschließlich 10 oder 0, wenn nicht festgelegt." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Stellt das Feedback eines Benutzers dar." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Benachrichtigungen" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Download-Url für dieses Bestellprodukt, falls zutreffend" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Eine Liste der bestellten Produkte in dieser Reihenfolge" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Rechnungsadresse" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1097,173 +1112,181 @@ msgstr "" "Lieferadresse für diese Bestellung, leer lassen, wenn sie mit der " "Rechnungsadresse übereinstimmt oder nicht zutrifft" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Gesamtpreis für diese Bestellung" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Gesamtmenge der bestellten Produkte" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Sind alle Produkte in der Bestellung digital" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Bestellungen" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Bild URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Bilder des Produkts" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Rückmeldungen" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marke" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Attribut-Gruppen" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Menge" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Anzahl der Rückmeldungen" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produkte" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Werbeaktionen" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Anbieter" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Wunschzettel" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Markierte Produkte" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Produkt-Tags" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Markierte Kategorien" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Kategorien'-Tags" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Name des Projekts" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Unternehmen E-Mail" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Name des Unternehmens" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adresse des Unternehmens" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Telefonnummer des Unternehmens" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "E-Mail von\", muss manchmal anstelle des Host-Benutzerwerts verwendet werden" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "E-Mail-Host-Benutzer" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Höchstbetrag für die Zahlung" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Mindestbetrag für die Zahlung" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytische Daten" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Sprachcode" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Name der Sprache" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Sprachflagge, falls vorhanden :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Suchergebnisse für Produkte" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Suchergebnisse für Produkte" @@ -1332,7 +1355,7 @@ msgid "attribute's name" msgstr "Name des Attributs" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribut" @@ -1345,8 +1368,8 @@ msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Zugehöriges Produkt" @@ -1396,7 +1419,7 @@ msgstr "Beschreibung der Kategorie" msgid "tags that help describe or group this category" msgstr "Tags, die helfen, diese Kategorie zu beschreiben oder zu gruppieren" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "Kategorie-Tags" @@ -1445,239 +1468,239 @@ msgstr "Kategorien" msgid "category this product belongs to" msgstr "Kategorie, zu der dieses Produkt gehört" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Optional können Sie dieses Produkt mit einer Marke verknüpfen" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags, die helfen, dieses Produkt zu beschreiben oder zu gruppieren" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Gibt an, ob dieses Produkt digital geliefert wird" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Ist das Produkt digital" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "" "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Name des Produkts" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Beschreibung des Produkts" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Teilenummer für dieses Produkt" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Teilnummer" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Speichert Anmeldeinformationen und Endpunkte, die für die API-Kommunikation " "des Anbieters erforderlich sind" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informationen zur Authentifizierung" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieren Sie den Aufschlag für Produkte, die von diesem Lieferanten " "bezogen werden" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Prozentualer Aufschlag des Lieferanten" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Name dieses Anbieters" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Name des Anbieters" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Kommentare der Nutzer über ihre Erfahrungen mit dem Produkt" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Kommentare zum Feedback" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" " Rückmeldung bezieht" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Produkt zur Bestellung" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Vom Benutzer zugewiesene Bewertung für das Produkt" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Produktbewertung" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Rückmeldung" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Die für diese Bestellung verwendete Rechnungsadresse" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Optionaler Promo-Code für diese Bestellung" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Angewandter Promo-Code" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Die für diese Bestellung verwendete Lieferadresse" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Lieferadresse" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Status der Bestellung" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON-Struktur der Benachrichtigungen, die den Benutzern angezeigt werden " "sollen; in der Admin-UI wird die Tabellenansicht verwendet" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON-Darstellung der Auftragsattribute für diesen Auftrag" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Der Benutzer, der die Bestellung aufgegeben hat" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Benutzer" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Der Zeitstempel, zu dem der Auftrag abgeschlossen wurde" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Zeit kaufen" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Ein von Menschen lesbarer Identifikator für den Auftrag" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "menschenlesbare ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Bestellung" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Ein Benutzer darf immer nur einen schwebenden Auftrag haben!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Sie können keine Produkte zu einem Auftrag hinzufügen, der nicht in " "Bearbeitung ist." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} existiert nicht: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sie können nur physische Produkte mit angegebener Lieferadresse kaufen!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Sie können im Moment nicht kaufen, bitte versuchen Sie es in ein paar " "Minuten erneut." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1685,210 +1708,210 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Ungültige Zahlungsmethode: {payment_method} von {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Der Preis, den der Kunde zum Zeitpunkt des Kaufs für dieses Produkt bezahlt " "hat" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Interne Kommentare" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Produktmenge" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Status der Produktlinie" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "falsche Aktion für die Rückmeldung angegeben: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Tag name" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Tag-Anzeigename" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Produkt-Tag" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "Kategorie-Tag" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Geben Sie einen alternativen Text für das Bild an, um die Barrierefreiheit " "zu gewährleisten." -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Bild-Alt-Text" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Produktbild" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Priorität anzeigen" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Produktbilder" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "" "Einzigartiger Code, den ein Nutzer zum Einlösen eines Rabatts verwendet" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" "Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet " "wird" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Zeitstempel, wann der Promocode verwendet wurde, leer, wenn noch nicht " "verwendet" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Promo-Code" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Promo-Codes" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1896,199 +1919,199 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für Promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Name der Aktion" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Enthaltene Produkte" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Förderung" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Verkaufspreis" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Der an den Verkäufer gezahlte Preis für dieses Produkt" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "" "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digitale Datei" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Bestandseinträge" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Wunschzettel" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Herunterladen" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Herunterladen" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Sie können kein digitales Asset für eine nicht abgeschlossene Bestellung " "herunterladen" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Dokumentarfilme" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Ungelöst" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Adresszeile für den Kunden" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Adresszeile" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Straße" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Bezirk" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Stadt" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Postleitzahl" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Land" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adresse" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adressen" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2099,60 +2122,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Fehler bei der Erstellung des Promocodes: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Konfiguration" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Speichern Sie" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Startseite" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Standard" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Wert" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Wird geändert" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Aktuelle Datei" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Auf Standardwerte zurücksetzen" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Bestätigung der Bestellung" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hallo %(order.user.first_name)s," @@ -2160,47 +2149,46 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen " "mitteilen zu können, dass wir Ihre Bestellung in Arbeit genommen haben. " "Nachfolgend finden Sie die Details Ihrer Bestellung:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Insgesamt" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Gesamtpreis" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Wenn Sie Fragen haben, wenden Sie sich bitte an unseren Support unter " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Mit freundlichen Grüßen,
das %(config.PROJECT_NAME)s Team" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Alle Rechte vorbehalten" @@ -2216,26 +2204,35 @@ msgstr "Hallo %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Wir haben Ihre Bestellung erfolgreich bearbeitet №%(order_uuid)s! " "Nachstehend finden Sie die Details Ihrer Bestellung:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "zusätzliche Informationen" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"zusätzliche\n" +" Informationen" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Wert" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Wenn Sie Fragen haben, wenden Sie sich bitte an unseren Support unter " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Mit freundlichen Grüßen,
das %(project_name)s Team" @@ -2244,31 +2241,40 @@ msgstr "Mit freundlichen Grüßen,
das %(project_name)s Team" msgid "key" msgstr "Schlüssel" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. " "Nachstehend finden Sie die Details Ihrer Bestellung:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Versandpreis" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Ihre Bestellung wird an die folgende Adresse geliefert:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Mit freundlichen Grüßen,
das %(config.PROJECT_NAME)s Team" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"alle Rechte\n" +" vorbehalten" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Sowohl Daten als auch Timeout sind erforderlich" @@ -2330,7 +2336,7 @@ msgstr "Sie können das digitale Asset nur einmal herunterladen" msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geokodierungsfehler: {e}" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index be242051..d9e20caf 100644 Binary files a/core/locale/en_GB/LC_MESSAGES/django.mo and b/core/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/core/locale/en_GB/LC_MESSAGES/django.po b/core/locale/en_GB/LC_MESSAGES/django.po index 0f5d3914..ab010840 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -63,17 +63,16 @@ msgstr "Activate selected %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Attribute Values" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Name" @@ -81,23 +80,23 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Images" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Price" @@ -113,11 +112,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Order Product" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Order Products" @@ -735,100 +734,108 @@ msgstr "add or remove feedback on an order–product relation" msgid "no search term provided." msgstr "No search term provided." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Name" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categories" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categories Slugs" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Min Price" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Is Active" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Brand" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attributes" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Quantity" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Slug" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Include sub-categories" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "There must be a category_uuid to use include_subcategories flag" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Search (ID, product name or part number)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Bought after (inclusive)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "User email" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Parent" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Whole category(has at least 1 product or not)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Level" + +#: core/filters.py:384 msgid "Product UUID" msgstr "Product UUID" @@ -883,7 +890,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -937,7 +944,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" @@ -946,93 +953,101 @@ msgstr "{name} does not exist: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Brands" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags for this category" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Products in this category" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1040,172 +1055,180 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Tagged categories" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Categories' tags" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytics data" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Products search results" @@ -1274,7 +1297,7 @@ msgid "attribute's name" msgstr "Attribute's name" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribute" @@ -1286,8 +1309,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Associated product" @@ -1335,7 +1358,7 @@ msgstr "Category description" msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "category tags" @@ -1383,228 +1406,228 @@ msgstr "Categories" msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Product name" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Product description" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Part number" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Related order product" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Product rating" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Order status" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "User" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Buy time" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Order" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1612,199 +1635,199 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "User notifications" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Parent order" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Product line status" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "wrong action specified for feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Tag name" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Product tag" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "category tag" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Product image" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Display priority" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Product images" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Promo code" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1812,196 +1835,196 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Included products" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promotion" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Selling price" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digital file" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Download" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Downloads" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentary" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Address line" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Street" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "District" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "City" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Postal code" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Country" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Address" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresses" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2011,60 +2034,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuration" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Save" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Home" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Default" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Value" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Is modified" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Current file" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Reset to default" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Order Confirmation" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hello %(order.user.first_name)s," @@ -2072,46 +2061,45 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Thank you for your order #%(order.pk)s! We are pleased to inform you that we" " have taken your order into work. Below are the details of your order:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Total Price" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "If you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Best regards,
the %(config.PROJECT_NAME)s team" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "All rights reserved" @@ -2127,26 +2115,35 @@ msgstr "Hello %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "We have successfully processed your order №%(order_uuid)s! Below are the " "details of your order:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "additional information" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"additional\n" +" information" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Value" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "If you have any questions, feel free to contact our support at " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Best regards,
the %(project_name)s team" @@ -2155,31 +2152,40 @@ msgstr "Best regards,
the %(project_name)s team" msgid "key" msgstr "Key" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Thank you for your order! We are pleased to confirm your purchase. Below are" " the details of your order:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Shipping price" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Your order will be delivered to the following address:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Best regards,
the %(config.PROJECT_NAME)s team" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"all rights\n" +" reserved" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Both data and timeout are required" @@ -2239,20 +2245,7 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" - -#~ msgid "(exact) Product slug" -#~ msgstr "(exact) Product slug" - -#~ msgid "invalid payment method" -#~ msgstr "Invalid payment method" - -#~ msgid "translations" -#~ msgstr "Translations" - -#~ msgid "you cannot create a momental order without providing a billing address" -#~ msgstr "" -#~ "you cannot create a momental order without providing a billing address" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index af8bdd78..95fb2db8 100644 Binary files a/core/locale/en_US/LC_MESSAGES/django.mo and b/core/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/core/locale/en_US/LC_MESSAGES/django.po b/core/locale/en_US/LC_MESSAGES/django.po index 3cb7e072..7ef8e8b3 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,17 +59,16 @@ msgstr "Activate selected %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Attribute Values" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Name" @@ -77,23 +76,23 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Images" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Price" @@ -109,11 +108,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important dates" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Order Product" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Order Products" @@ -731,100 +730,108 @@ msgstr "add or remove feedback on an order–product relation" msgid "no search term provided." msgstr "No search term provided." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Name" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categories" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categories Slugs" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Min Price" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Is Active" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Brand" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attributes" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Quantity" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Slug" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Include sub-categories" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "There must be a category_uuid to use include_subcategories flag" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Search (ID, product name or part number)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Bought after (inclusive)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Bought before (inclusive)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "User email" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "User UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Human Readable ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Parent" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Whole category(has at least 1 product or not)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Level" + +#: core/filters.py:384 msgid "Product UUID" msgstr "Product UUID" @@ -879,7 +886,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" @@ -933,7 +940,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" @@ -942,93 +949,101 @@ msgstr "{name} does not exist: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Brands" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags for this category" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Products in this category" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "How to" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1036,172 +1051,180 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Tagged categories" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Categories' tags" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytics data" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Products search results" @@ -1270,7 +1293,7 @@ msgid "attribute's name" msgstr "Attribute's name" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribute" @@ -1282,8 +1305,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Associated product" @@ -1331,7 +1354,7 @@ msgstr "Category description" msgid "tags that help describe or group this category" msgstr "tags that help describe or group this category" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "category tags" @@ -1379,228 +1402,228 @@ msgstr "Categories" msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Product name" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Product description" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Part number" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Related order product" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Product rating" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Order status" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "User" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Buy time" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Order" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1608,199 +1631,199 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Invalid payment method: {payment_method} from {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "User notifications" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Parent order" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Product line status" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "wrong action specified for feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "you cannot feedback an order which is not received" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Tag name" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Product tag" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "category tag" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Product image" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Display priority" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Product images" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "End validity time" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Promo code" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1808,196 +1831,196 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Included products" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promotion" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Selling price" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digital file" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Download" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Downloads" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentary" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Address line for the customer" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Address line" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Street" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "District" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "City" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Postal code" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Country" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Address" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresses" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2007,60 +2030,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Error during promocode creation: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuration" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Save" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Home" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Default" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Value" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Is modified" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Current file" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Reset to default" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Order Confirmation" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hello %(order.user.first_name)s," @@ -2068,46 +2057,45 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Thank you for your order #%(order.pk)s! We are pleased to inform you that we" " have taken your order into work. Below are the details of your order:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Total Price" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "If you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Best regards,
the %(config.PROJECT_NAME)s team" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "All rights reserved" @@ -2123,26 +2111,35 @@ msgstr "Hello %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "We have successfully processed your order №%(order_uuid)s! Below are the " "details of your order:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "additional information" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"additional\n" +" information" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Value" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "If you have any questions, feel free to contact our support at " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Best regards,
the %(project_name)s team" @@ -2151,31 +2148,40 @@ msgstr "Best regards,
the %(project_name)s team" msgid "key" msgstr "Key" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Thank you for your order! We are pleased to confirm your purchase. Below are" " the details of your order:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Shipping price" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Your order will be delivered to the following address:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Best regards,
the %(config.PROJECT_NAME)s team" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"all rights\n" +" reserved" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Both data and timeout are required" @@ -2235,7 +2241,7 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index c4414c35..953f1698 100644 Binary files a/core/locale/es_ES/LC_MESSAGES/django.mo and b/core/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/core/locale/es_ES/LC_MESSAGES/django.po b/core/locale/es_ES/LC_MESSAGES/django.po index 07abce83..8ed8c8d6 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Activar %(verbose_name_plural)s seleccionados" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desactivar %(verbose_name_plural)s seleccionados" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Atributo Valor" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Valores de los atributos" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nombre" @@ -79,23 +78,23 @@ msgstr "Nombre" msgid "image" msgstr "Imagen" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Imágenes" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Acciones" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Precio" @@ -111,11 +110,11 @@ msgstr "Información básica" msgid "important dates" msgstr "Fechas importantes" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Pedir un producto" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Pedir productos" @@ -767,101 +766,109 @@ msgstr "añadir o eliminar comentarios en una relación pedido-producto" msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nombre" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categorías" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categorías Babosas" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Etiquetas" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Precio mínimo" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Precio máximo" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Está activo" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marca" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Atributos" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Cantidad" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Babosa" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Es Digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Incluir subcategorías" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Debe haber un category_uuid para usar la bandera include_subcategories" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Búsqueda (ID, nombre del producto o número de pieza)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Comprado después (inclusive)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Correo electrónico del usuario" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID de usuario" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Estado" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Identificación legible" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Padres" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Toda la categoría (tenga o no al menos 1 producto)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Nivel" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID del producto" @@ -916,7 +923,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" @@ -971,7 +978,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" @@ -980,97 +987,105 @@ msgstr "{name} no existe: {uuid}" msgid "limit must be between 1 and 10" msgstr "El límite debe estar entre 1 y 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona a las mil maravillas" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categorías" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marcas" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categorías" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Porcentaje de recargo" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Precios mínimo y máximo de los productos de esta categoría, si están " "disponibles." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Etiquetas para esta categoría" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Productos de esta categoría" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Vendedores" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitud (coordenada Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitud (coordenada X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Cómo" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está " "configurado." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Representa la opinión de un usuario." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notificaciones" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Descargar url para este producto de pedido si procede" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Una lista de los productos del pedido" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Dirección de facturación" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1078,173 +1093,181 @@ msgstr "" "Dirección de envío para este pedido, dejar en blanco si es la misma que la " "de facturación o si no procede" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Precio total de este pedido" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Cantidad total de productos del pedido" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "¿Están todos los productos en el pedido digital" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "URL de la imagen" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Imágenes del producto" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Categoría" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Comentarios" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Cantidad" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Número de reacciones" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Productos" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Códigos promocionales" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Productos a la venta" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promociones" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Vendedor" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Producto" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Productos deseados" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Listas de deseos" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Productos con etiqueta" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Etiquetas del producto" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Categorías" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Etiquetas de las categorías" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Nombre del proyecto" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Correo electrónico de la empresa" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Nombre de la empresa" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Dirección de la empresa" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Teléfono de la empresa" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a veces debe utilizarse en lugar del valor del usuario host" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Correo electrónico del usuario anfitrión" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Importe máximo de pago" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Importe mínimo de pago" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Datos analíticos" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Datos publicitarios" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuración" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Código de idioma" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Nombre de la lengua" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Bandera de idioma, si existe :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Resultados de la búsqueda de productos" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Resultados de la búsqueda de productos" @@ -1313,7 +1336,7 @@ msgid "attribute's name" msgstr "Nombre del atributo" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Atributo" @@ -1325,8 +1348,8 @@ msgstr "Atributo de este valor" msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Producto asociado" @@ -1374,7 +1397,7 @@ msgstr "Descripción de la categoría" msgid "tags that help describe or group this category" msgstr "etiquetas que ayudan a describir o agrupar esta categoría" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "etiquetas de categoría" @@ -1422,234 +1445,234 @@ msgstr "Categorías" msgid "category this product belongs to" msgstr "Categoría a la que pertenece este producto" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Si lo desea, puede asociar este producto a una marca" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Etiquetas que ayudan a describir o agrupar este producto" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indica si este producto se entrega digitalmente" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "¿Es digital el producto?" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Proporcionar un nombre que identifique claramente el producto" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Nombre del producto" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Descripción del producto" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Número de pieza de este producto" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Número de pieza" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Almacena las credenciales y los puntos finales necesarios para la " "comunicación API del proveedor" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Información de autenticación" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definir el margen de beneficio para los productos recuperados de este " "proveedor" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Porcentaje de margen del vendedor" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Nombre de este vendedor" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Nombre del vendedor" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Comentarios de los usuarios sobre su experiencia con el producto" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Comentarios" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Hace referencia al producto específico de un pedido sobre el que trata esta " "opinión" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Producto relacionado con el pedido" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Valoración del producto asignada por el usuario" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Valoración del producto" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Comentarios" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "La dirección de facturación utilizada para este pedido" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "La dirección de envío utilizada para este pedido" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Dirección de envío" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Estado actual del pedido en su ciclo de vida" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Estado del pedido" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Estructura JSON de las notificaciones para mostrar a los usuarios, en la " "interfaz de administración se utiliza la vista de tabla." -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Representación JSON de los atributos de la orden para esta orden" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "El usuario que realizó el pedido" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Usuario" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Fecha de finalización de la orden" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Comprar tiempo" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Un identificador legible por el ser humano para la orden" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "ID legible por humanos" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Pida" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Un usuario sólo puede tener una orden pendiente a la vez." -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "No puede añadir productos a un pedido que no esté pendiente" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} no existe: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "No puede eliminar productos de un pedido que no esté pendiente" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} no existe con la consulta <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promocode no existe" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sólo puede comprar productos físicos con la dirección de envío especificada." -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "La dirección no existe" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "No puede comprar en este momento, por favor inténtelo de nuevo en unos " "minutos." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1657,203 +1680,203 @@ msgstr "" "no puede comprar sin registrarse, facilite la siguiente información: nombre " "del cliente, correo electrónico del cliente, número de teléfono del cliente" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Forma de pago no válida: ¡{payment_method} de {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "" "El precio pagado por el cliente por este producto en el momento de la compra" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Comentarios internos" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Orden de los padres" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Cantidad de productos" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Estado de la línea de productos" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "acción incorrecta especificada para la retroalimentación: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "no se puede comentar un pedido no recibido" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nombre de la etiqueta" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Etiqueta del producto" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "etiqueta de categoría" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Proporcione un texto alternativo para la imagen en aras de la accesibilidad" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Imagen del producto" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Prioridad de visualización" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Imágenes de productos" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Código único utilizado por un usuario para canjear un descuento" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Se aplica un descuento fijo si no se utiliza el porcentaje" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Porcentaje de descuento aplicado si no se utiliza el importe fijo" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Hora de fin de validez" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Hora de inicio de validez" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Fecha en la que se utilizó el promocode, en blanco si aún no se ha utilizado" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Usuario asignado" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Promo code" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1861,196 +1884,196 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de descuento no válido para promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Nombre de la promoción" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Descripción de la promoción" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Productos incluidos" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promoción" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Proveedor asociado" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Precio de venta" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Cantidad en stock" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU del vendedor" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Archivo digital" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Entradas en existencias" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Lista de deseos" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Descargar" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Descargas" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "No puede descargar un activo digital para un pedido no finalizado" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documental" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Sin resolver" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Dirección del cliente" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Dirección" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Calle" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Distrito" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Ciudad" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Región" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Promo code" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "País" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Dirección" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Direcciones" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2061,60 +2084,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Error durante la creación del promocode: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuración" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Guardar" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Inicio" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Por defecto" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Valor" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Se modifica" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Archivo actual" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Restablecer valores por defecto" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Confirmación de pedido" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logotipo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hola %(order.user.first_name)s," @@ -2122,46 +2111,45 @@ msgstr "Hola %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos " "recibido su pedido. A continuación encontrará los detalles de su pedido:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Precio total" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro " "servicio de asistencia en %(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Saludos cordiales,
el equipo de %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Todos los derechos reservados" @@ -2177,26 +2165,35 @@ msgstr "Hola %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "¡Hemos procesado correctamente su pedido №%(order_uuid)s! A continuación " "encontrará los detalles de su pedido:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "información adicional" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"información adicional\n" +" información adicional" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Valor" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro " "servicio de asistencia en %(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Saludos cordiales,
el equipo de %(project_name)s" @@ -2205,31 +2202,40 @@ msgstr "Saludos cordiales,
el equipo de %(project_name)s" msgid "key" msgstr "Clave" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Gracias por su pedido. Nos complace confirmarle su compra. A continuación " "encontrará los detalles de su pedido:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Precio del envío" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Su pedido se entregará en la siguiente dirección:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Saludos cordiales,
el equipo de %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"todos los derechos\n" +" reservados" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Tanto los datos como el tiempo de espera son necesarios" @@ -2291,7 +2297,7 @@ msgstr "Sólo puede descargar el activo digital una vez" msgid "favicon not found" msgstr "favicon no encontrado" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Error de geocodificación: {e}" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index ed5873cb..6bdb35b4 100644 Binary files a/core/locale/fr_FR/LC_MESSAGES/django.mo and b/core/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/core/locale/fr_FR/LC_MESSAGES/django.po b/core/locale/fr_FR/LC_MESSAGES/django.po index d4c71403..f2602816 100644 --- a/core/locale/fr_FR/LC_MESSAGES/django.po +++ b/core/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Activer les %(verbose_name_plural)s sélectionnés" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Désactiver les %(verbose_name_plural)s sélectionnés" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valeur de l'attribut" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Valeurs des attributs" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nom" @@ -79,23 +78,23 @@ msgstr "Nom" msgid "image" msgstr "Image" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Images" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Prix" @@ -111,11 +110,11 @@ msgstr "Informations de base" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Commander un produit" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Commander des produits" @@ -777,102 +776,110 @@ msgstr "" msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nom" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Catégories" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Catégories Limaces" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Prix minimum" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Prix maximum" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Est actif" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marque" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attributs" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Quantité" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Limace" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Is Digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Inclure des sous-catégories" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Il doit y avoir un category_uuid pour utiliser le drapeau " "include_subcategories" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Recherche (ID, nom du produit ou numéro de pièce)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Acheté après (inclus)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Acheté avant (inclus)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Courriel de l'utilisateur" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID de l'utilisateur" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Statut" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "ID lisible par l'homme" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Parent" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Catégorie entière (avec au moins 1 produit ou non)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Niveau" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID du produit" @@ -929,7 +936,7 @@ msgstr "" "mutuellement !" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Le mauvais type provient de la méthode order.buy() : {type(instance)!s}" @@ -984,7 +991,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" @@ -993,96 +1000,104 @@ msgstr "{name} n'existe pas : {uuid}" msgid "limit must be between 1 and 10" msgstr "La limite doit être comprise entre 1 et 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fonctionne comme un charme" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attributs" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Attributs groupés" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Catégories" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marques" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Catégories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quels attributs et valeurs peuvent être utilisés pour filtrer cette " "catégorie." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Prix minimum et maximum pour les produits de cette catégorie, s'ils sont " "disponibles." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags pour cette catégorie" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produits dans cette catégorie" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Vendeurs" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordonnée Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitude (coordonnée X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valeur d'évaluation de 1 à 10 inclus, ou 0 si elle n'est pas définie." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Représente le retour d'information d'un utilisateur." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "URL de téléchargement pour ce produit de la commande, le cas échéant" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Une liste des produits commandés dans cette commande" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Adresse de facturation" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1090,174 +1105,182 @@ msgstr "" "Adresse d'expédition pour cette commande, laisser vide si elle est identique" " à l'adresse de facturation ou si elle n'est pas applicable" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Prix total de la commande" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Quantité totale de produits dans la commande" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Tous les produits de la commande sont-ils numériques ?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Commandes" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Images du produit" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Catégorie" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Retour d'information" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marque" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Quantité" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Nombre de retours d'information" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produits" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produits en vente" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Vendeur" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produit" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Liste de souhaits" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Produits marqués" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Étiquettes du produit" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Catégories marquées" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Tags des catégories" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Nom du projet" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Courriel de l'entreprise" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Nom de l'entreprise" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adresse de l'entreprise" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Numéro de téléphone de l'entreprise" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', parfois il doit être utilisé à la place de la valeur de " "l'utilisateur de l'hôte" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Utilisateur de l'hôte de messagerie" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Montant maximum du paiement" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Montant minimum pour le paiement" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Données analytiques" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Advertisement data" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Code langue" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Nom de la langue" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Drapeau linguistique, s'il existe :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Résultats de la recherche de produits" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Résultats de la recherche de produits" @@ -1326,7 +1349,7 @@ msgid "attribute's name" msgstr "Nom de l'attribut" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribut" @@ -1338,8 +1361,8 @@ msgstr "Attribut de cette valeur" msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Produit associé" @@ -1388,7 +1411,7 @@ msgstr "Description de la catégorie" msgid "tags that help describe or group this category" msgstr "les étiquettes qui aident à décrire ou à regrouper cette catégorie" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "balises de catégorie" @@ -1436,239 +1459,239 @@ msgstr "Catégories" msgid "category this product belongs to" msgstr "Catégorie à laquelle appartient ce produit" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Possibilité d'associer ce produit à une marque" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Étiquettes permettant de décrire ou de regrouper ce produit" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indique si ce produit est livré numériquement" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Le produit est-il numérique ?" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Fournir un nom d'identification clair pour le produit" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Nom du produit" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Description du produit" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Numéro de pièce pour ce produit" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Numéro de pièce" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stocke les informations d'identification et les points d'extrémité " "nécessaires à la communication avec l'API du fournisseur." -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informations sur l'authentification" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" "Définir la majoration pour les produits récupérés auprès de ce fournisseur" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Pourcentage de marge du vendeur" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Nom de ce vendeur" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Nom du vendeur" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Commentaires des utilisateurs sur leur expérience du produit" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Commentaires" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Fait référence au produit spécifique d'une commande sur lequel porte le " "retour d'information." -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Produit de commande apparenté" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Note attribuée par l'utilisateur au produit" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Evaluation du produit" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Retour d'information" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "L'adresse de facturation utilisée pour cette commande" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Code promo optionnel appliqué à cette commande" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Code promo appliqué" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "L'adresse de livraison utilisée pour cette commande" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Adresse de livraison" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Statut actuel de la commande dans son cycle de vie" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Statut de la commande" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Structure JSON des notifications à afficher aux utilisateurs ; dans " "l'interface d'administration, la vue en tableau est utilisée." -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Représentation JSON des attributs de cette commande" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "L'utilisateur qui a passé la commande" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Utilisateur" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "L'heure à laquelle la commande a été finalisée." -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Temps d'achat" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Un identifiant lisible par l'homme pour la commande" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "ID lisible par l'homme" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Commande" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en " "cours." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} n'existe pas : {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Vous ne pouvez acheter que des produits physiques dont l'adresse de " "livraison est spécifiée !" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Vous ne pouvez pas acheter en ce moment, veuillez réessayer dans quelques " "minutes." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Valeur de force non valide" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1677,7 +1700,7 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1685,200 +1708,200 @@ msgstr "" "Méthode de paiement non valide : {payment_method} de " "{available_payment_methods} !" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Le prix payé par le client pour ce produit au moment de l'achat" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Commentaires internes pour les administrateurs sur ce produit commandé" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Commentaires internes" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Ordonnance parentale" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Quantité de produits" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Statut de la ligne de produits" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "mauvaise action spécifiée pour le retour d'information : {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nom du jour" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Étiquette du produit" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "étiquette de catégorie" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Fournir un texte alternatif pour l'image afin d'en faciliter l'accès" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Texte alt de l'image" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Image du produit" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Priorité à l'affichage" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Images du produit" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "" "Code unique utilisé par un utilisateur pour bénéficier d'une réduction" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Heure de fin de validité" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Heure de début de validité" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" " été utilisé." -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Utilisateur assigné" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Code promo" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Codes promotionnels" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1886,198 +1909,198 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Type de réduction non valide pour le code promo {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Nom de la promotion" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Produits inclus" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promotion" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Vendeur associé" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Prix de vente" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Quantité en stock" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "UGS du vendeur" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Fichier numérique" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Entrées de stock" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Liste de souhaits" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Télécharger" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Téléchargements" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Vous ne pouvez pas télécharger un bien numérique pour une commande non " "terminée." -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Non résolu" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Ligne d'adresse du client" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Ligne d'adresse" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Rue" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "District" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Ville" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Région" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Code postal" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Pays" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adresse" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresses" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2088,60 +2111,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Erreur lors de la création du promocode : {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuration" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Économiser" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Accueil" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Défaut" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Valeur" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Est modifié" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Dossier en cours" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Rétablissement des valeurs par défaut" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Confirmation de commande" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Bonjour %(order.user.first_name)s," @@ -2149,47 +2138,46 @@ msgstr "Bonjour %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous " "informer que nous avons pris en compte votre commande. Vous trouverez ci-" "dessous les détails de votre commande :" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Prix total" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Si vous avez des questions, n'hésitez pas à contacter notre support à " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Meilleures salutations,
l'équipe de %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Tous droits réservés" @@ -2205,26 +2193,35 @@ msgstr "Bonjour %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Nous avons traité avec succès votre commande №%(order_uuid)s ! Vous " "trouverez ci-dessous les détails de votre commande :" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "informations complémentaires" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"informations\n" +" complémentaires" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Valeur" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Si vous avez des questions, n'hésitez pas à contacter notre service " "d'assistance à %(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Meilleures salutations,
l'équipe de %(project_name)s" @@ -2233,32 +2230,41 @@ msgstr "Meilleures salutations,
l'équipe de %(project_name)s" msgid "key" msgstr "Clé" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Nous vous remercions pour votre commande ! Nous avons le plaisir de " "confirmer votre achat. Vous trouverez ci-dessous les détails de votre " "commande :" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Prix d'expédition" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Votre commande sera livrée à l'adresse suivante :" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Meilleures salutations,
l'équipe de %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"tous les droits\n" +" réservés" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Les données et le délai d'attente sont tous deux nécessaires" @@ -2321,7 +2327,7 @@ msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" msgid "favicon not found" msgstr "favicon introuvable" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erreur de géocodage : {e}" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.mo b/core/locale/hi_IN/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/core/locale/hi_IN/LC_MESSAGES/django.mo and b/core/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index 8fc2d652..4639e66f 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -59,17 +59,16 @@ msgstr "" msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "" @@ -77,23 +76,23 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "" @@ -109,11 +108,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "" @@ -701,100 +700,108 @@ msgstr "" msgid "no search term provided." msgstr "" -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "" + +#: core/filters.py:323 +msgid "Level" +msgstr "" + +#: core/filters.py:384 msgid "Product UUID" msgstr "" @@ -849,7 +856,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -901,7 +908,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -910,262 +917,278 @@ msgstr "" msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "" @@ -1234,7 +1257,7 @@ msgid "attribute's name" msgstr "" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "" @@ -1246,8 +1269,8 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "" @@ -1295,7 +1318,7 @@ msgstr "" msgid "tags that help describe or group this category" msgstr "" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "" @@ -1343,614 +1366,614 @@ msgstr "" msgid "category this product belongs to" msgstr "" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "" -#: core/models.py:430 +#: core/models.py:431 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:597 core/models.py:617 core/models.py:641 core/models.py:1250 -#: core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 core/models.py:1256 +#: core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -1959,60 +1982,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "" @@ -2020,42 +2009,42 @@ msgstr "" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are " +"the details of your\n" +" order:" msgstr "" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "" @@ -2071,22 +2060,29 @@ msgstr "" #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" msgstr "" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "" @@ -2095,29 +2091,37 @@ msgstr "" msgid "key" msgstr "" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below " +"are\n" +" the details of your order:" msgstr "" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "" @@ -2176,7 +2180,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index b796e5f2..6f55fe05 100644 Binary files a/core/locale/it_IT/LC_MESSAGES/django.mo and b/core/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/core/locale/it_IT/LC_MESSAGES/django.po b/core/locale/it_IT/LC_MESSAGES/django.po index a06a16fc..2c555170 100644 --- a/core/locale/it_IT/LC_MESSAGES/django.po +++ b/core/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Attivare il %(verbose_name_plural)s selezionato" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Disattivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valore dell'attributo" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Valori degli attributi" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nome" @@ -79,23 +78,23 @@ msgstr "Nome" msgid "image" msgstr "Immagine" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Immagini" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stock" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Le scorte" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Prezzo" @@ -111,11 +110,11 @@ msgstr "Informazioni di base" msgid "important dates" msgstr "Date importanti" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Ordina il prodotto" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Ordinare i prodotti" @@ -776,101 +775,109 @@ msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto" msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nome" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categorie" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categorie Lumache" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tag" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Prezzo minimo" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Max Price" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "È attivo" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marchio" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attributi" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Quantità" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Lumaca" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "È digitale" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Includere le sottocategorie" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Deve esserci una categoria_uuid per utilizzare il flag include_subcategories" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Ricerca (ID, nome del prodotto o numero di parte)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Acquistato dopo (incluso)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Acquistato prima (compreso)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Email dell'utente" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID utente" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Stato" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "ID leggibile dall'uomo" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Genitore" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Intera categoria (con o senza almeno 1 prodotto)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Livello" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID del prodotto" @@ -926,7 +933,7 @@ msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" @@ -981,7 +988,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" @@ -990,95 +997,103 @@ msgstr "{name} non esiste: {uuid}" msgid "limit must be between 1 and 10" msgstr "Il limite deve essere compreso tra 1 e 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch: funziona a meraviglia" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attributi" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Attributi raggruppati" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categorie" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marche" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Percentuale di markup" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quali attributi e valori possono essere utilizzati per filtrare questa " "categoria." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Prezzi minimi e massimi per i prodotti di questa categoria, se disponibili." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tag per questa categoria" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Prodotti in questa categoria" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Venditori" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordinata Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordinata X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Come" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valore di valutazione da 1 a 10, incluso, o 0 se non impostato." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Rappresenta il feedback di un utente." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notifiche" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "URL di download per il prodotto dell'ordine, se applicabile" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Un elenco di prodotti ordinati in questo ordine" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Indirizzo di fatturazione" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1086,173 +1101,181 @@ msgstr "" "Indirizzo di spedizione per questo ordine, lasciare in bianco se è uguale " "all'indirizzo di fatturazione o se non è applicabile" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Prezzo totale dell'ordine" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Quantità totale di prodotti in ordine" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Tutti i prodotti sono presenti nell'ordine digitale" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Ordini" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "URL immagine" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Immagini del prodotto" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Feedback" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marchio" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Quantità" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Numero di feedback" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Prodotti" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Codici promozionali" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Prodotti in vendita" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promozioni" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Venditore" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Prodotto" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Liste dei desideri" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Prodotti contrassegnati" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Tag del prodotto" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Contrassegnato dalle categorie" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Tag delle categorie" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Nome del progetto" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Email aziendale" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Nome della società" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Indirizzo dell'azienda" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Numero di telefono dell'azienda" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a volte deve essere usato al posto del valore dell'utente host" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Utente host dell'e-mail" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Importo massimo per il pagamento" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Importo minimo per il pagamento" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Dati analitici" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Dati pubblicitari" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configurazione" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Codice lingua" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Nome della lingua" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Bandiera della lingua, se esiste :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Risultati della ricerca dei prodotti" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Risultati della ricerca dei prodotti" @@ -1321,7 +1344,7 @@ msgid "attribute's name" msgstr "Nome dell'attributo" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attributo" @@ -1333,8 +1356,8 @@ msgstr "Attributo di questo valore" msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Prodotto associato" @@ -1383,7 +1406,7 @@ msgstr "Descrizione della categoria" msgid "tags that help describe or group this category" msgstr "tag che aiutano a descrivere o raggruppare questa categoria" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "tag di categoria" @@ -1431,233 +1454,233 @@ msgstr "Categorie" msgid "category this product belongs to" msgstr "Categoria a cui appartiene questo prodotto" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Associare facoltativamente questo prodotto a un marchio" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tag che aiutano a descrivere o raggruppare questo prodotto" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indica se il prodotto è consegnato in formato digitale" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Il prodotto è digitale" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Fornire un nome identificativo chiaro per il prodotto" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Nome del prodotto" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Descrizione del prodotto" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Numero di parte per questo prodotto" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Numero di parte" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Memorizza le credenziali e gli endpoint necessari per la comunicazione API " "del fornitore." -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informazioni sull'autenticazione" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Definire il markup per i prodotti recuperati da questo fornitore" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Percentuale di ricarico del fornitore" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Nome del fornitore" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Nome del fornitore" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Commenti degli utenti sulla loro esperienza con il prodotto" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Commenti di feedback" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Riferisce il prodotto specifico in un ordine di cui si tratta il feedback." -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Prodotto correlato all'ordine" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Valutazione del prodotto assegnata dall'utente" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Valutazione del prodotto" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "L'indirizzo di fatturazione utilizzato per questo ordine" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Codice promozionale opzionale applicato a questo ordine" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Codice promozionale applicato" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "L'indirizzo di spedizione utilizzato per questo ordine" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Indirizzo di spedizione" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Stato attuale dell'ordine nel suo ciclo di vita" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Stato dell'ordine" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Struttura JSON delle notifiche da mostrare agli utenti; nell'interfaccia " "utente dell'amministratore viene utilizzata la visualizzazione a tabella." -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Rappresentazione JSON degli attributi dell'ordine per questo ordine" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "L'utente che ha effettuato l'ordine" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Utente" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Il timestamp del momento in cui l'ordine è stato finalizzato" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Acquista tempo" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Un identificatore leggibile dall'uomo per l'ordine" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "ID leggibile dall'uomo" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Ordine" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Un utente può avere un solo ordine pendente alla volta!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Non è possibile aggiungere prodotti a un ordine che non sia in sospeso." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} non esiste: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "Non è possibile rimuovere i prodotti da un ordine che non è in corso." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>." -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "È possibile acquistare solo prodotti fisici con indirizzo di spedizione " "specificato!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "In questo momento non è possibile acquistare, riprovare tra qualche minuto." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Valore di forza non valido" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1666,7 +1689,7 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1674,197 +1697,197 @@ msgstr "" "Metodo di pagamento non valido: {payment_method} da " "{available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Il prezzo pagato dal cliente per questo prodotto al momento dell'acquisto." -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Commenti interni" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notifiche degli utenti" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Ordine dei genitori" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Quantità di prodotto" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Stato della linea di prodotti" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "azione errata specificata per il feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "non è possibile dare un riscontro a un ordine non ricevuto" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nome del tag" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Nome del tag" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Etichetta del prodotto" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "tag categoria" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Immagine del prodotto" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Priorità del display" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Immagini del prodotto" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Codice univoco utilizzato da un utente per riscattare uno sconto" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" "Importo fisso dello sconto applicato se non si utilizza la percentuale" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Sconto percentuale" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Tempo di validità finale" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Ora di inizio validità" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Timestamp in cui è stato utilizzato il codice promozionale, vuoto se non " "ancora utilizzato" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Utente assegnato" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Codice promozionale" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Codici promozionali" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1872,196 +1895,196 @@ msgstr "" "È necessario definire un solo tipo di sconto (importo o percentuale), ma non" " entrambi o nessuno." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Percentuale di sconto" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Nome della promozione" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Descrizione della promozione" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Prodotti inclusi" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promozione" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Venditore associato" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Prezzo di vendita" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU del venditore" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "File digitale" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Voci di magazzino" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Lista dei desideri" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Scaricare" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Scaricamento" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Non è possibile scaricare un bene digitale per un ordine non finito." -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentario" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentari" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Non risolto" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Indirizzo del cliente" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Linea di indirizzo" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Via" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Distretto" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Città" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Regione" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Codice postale" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Paese" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Indirizzo" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Indirizzi" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2072,60 +2095,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Errore durante la creazione del codice promozionale: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configurazione" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Risparmiare" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Casa" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Predefinito" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Valore" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Viene modificato" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "File corrente" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Ripristino delle impostazioni predefinite" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Conferma dell'ordine" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hello %(order.user.first_name)s," @@ -2133,47 +2122,46 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che " "abbiamo preso in carico il suo ordine. Di seguito sono riportati i dettagli " "del vostro ordine:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Totale" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Prezzo totale" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" " %(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Cordiali saluti,
il team %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Tutti i diritti riservati" @@ -2189,26 +2177,35 @@ msgstr "Hello %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Abbiamo elaborato con successo il suo ordine №%(order_uuid)s! Di seguito " "sono riportati i dettagli del suo ordine:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "informazioni aggiuntive" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"ulteriori\n" +" informazioni" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Valore" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" " %(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Cordiali saluti,
il team %(project_name)s" @@ -2217,31 +2214,40 @@ msgstr "Cordiali saluti,
il team %(project_name)s" msgid "key" msgstr "Chiave" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di " "seguito sono riportati i dettagli dell'ordine:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Prezzo di spedizione" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Il vostro ordine sarà consegnato al seguente indirizzo:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Cordiali saluti,
il team %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"tutti i diritti\n" +" riservato" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Sono richiesti sia i dati che il timeout" @@ -2303,7 +2309,7 @@ msgstr "È possibile scaricare l'asset digitale una sola volta" msgid "favicon not found" msgstr "favicon non trovata" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Errore di geocodifica: {e}" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index 0ba0e4df..78c08532 100644 Binary files a/core/locale/ja_JP/LC_MESSAGES/django.mo and b/core/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/core/locale/ja_JP/LC_MESSAGES/django.po b/core/locale/ja_JP/LC_MESSAGES/django.po index e4267713..ced629c2 100644 --- a/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/core/locale/ja_JP/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -57,17 +57,16 @@ msgstr "選択した %(verbose_name_plural)s をアクティブにする。" msgid "deactivate selected %(verbose_name_plural)s" msgstr "選択された %(verbose_name_plural)s を非アクティブにする。" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "属性値" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "属性値" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "名称" @@ -75,23 +74,23 @@ msgstr "名称" msgid "image" msgstr "画像" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "画像" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "在庫" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "株式" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "価格" @@ -107,11 +106,11 @@ msgstr "基本情報" msgid "important dates" msgstr "重要な日程" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "商品のご注文" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "商品のご注文" @@ -715,100 +714,108 @@ msgstr "注文と商品の関係に関するフィードバックを追加また msgid "no search term provided." msgstr "検索語はありません。" -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "ユーユーアイディー" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "名称" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "カテゴリー" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "カテゴリー ナメクジ" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "タグ" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "最低価格" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "最高価格" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "アクティブ" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "ブランド" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "属性" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "数量" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "スラッグ" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "デジタル" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "サブカテゴリーを含む" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "include_subcategoriesフラグを使うには、category_uuidがなければならない。" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "検索(ID、製品名または部品番号)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "購入時期" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "以前に購入したもの(含む)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "ユーザーEメール" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "ユーザーUUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "ステータス" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "人間が読めるID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "親" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "カテゴリー全体(少なくとも1つの製品があるかどうか)" + +#: core/filters.py:323 +msgid "Level" +msgstr "レベル" + +#: core/filters.py:384 msgid "Product UUID" msgstr "製品UUID" @@ -863,7 +870,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" @@ -915,7 +922,7 @@ msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列と msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} は存在しません:{uuid} は存在しません。" @@ -924,263 +931,279 @@ msgstr "{name} は存在しません:{uuid} は存在しません。" msgid "limit must be between 1 and 10" msgstr "上限は1から10の間でなければならない" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 魅力のように動作" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "グループ化された属性" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "属性のグループ" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "カテゴリー" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "ブランド" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "カテゴリー" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "マークアップ率" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "このカテゴリーの商品の最低価格と最高価格がある場合。" -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "このカテゴリのタグ" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "このカテゴリの製品" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "ベンダー" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "緯度(Y座標)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "経度(X座標)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "どのように" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1から10までの評価値(設定されていない場合は0)。" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "ユーザーからのフィードバックを表す。" -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "お知らせ" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "該当する場合は、この注文商品のダウンロードURLを入力してください。" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "注文商品のリスト" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "請求先住所" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "請求先住所と同じ場合、または該当しない場合は空白にしてください。" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "この注文の合計金額" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "注文商品の総数量" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "ご注文の商品はすべてデジタルですか?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "受注状況" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "画像URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "製品画像" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "カテゴリー" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "フィードバック" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "ブランド" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "属性グループ" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "フィードバック数" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "製品紹介" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "プロモコード" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "販売商品" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "プロモーション" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "ベンダー" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "製品" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "ウィッシュリスト" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "タグ別アーカイブ" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "商品タグ" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "タグ別アーカイブ" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "カテゴリー' タグ" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "プロジェクト名" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "会社Eメール" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "会社名" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "会社住所" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "会社電話番号" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from' は、ホストユーザの値の代わりに使用されることがあります。" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "メールホストユーザー" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "支払限度額" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "最低支払額" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "分析データ" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "広告データ" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "構成" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "言語コード" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "言語名" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "言語フラグがある場合 :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "サポートされている言語のリストを取得する" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "製品検索結果" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "製品検索結果" @@ -1249,7 +1272,7 @@ msgid "attribute's name" msgstr "属性名" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "属性" @@ -1261,8 +1284,8 @@ msgstr "この値の属性" msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "関連製品" @@ -1310,7 +1333,7 @@ msgstr "カテゴリー説明" msgid "tags that help describe or group this category" msgstr "このカテゴリーを説明またはグループ化するのに役立つタグ" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "カテゴリータグ" @@ -1358,615 +1381,615 @@ msgstr "カテゴリー" msgid "category this product belongs to" msgstr "この製品が属するカテゴリ" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "オプションでこの製品をブランドと関連付ける" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "この商品の説明やグループ分けに役立つタグ" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "この製品がデジタル配信されるかどうかを示す" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "製品はデジタルか" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "製品の明確な識別名を提供する" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "商品名" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "商品説明" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "この製品の品番" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "品番" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "ベンダーのAPI通信に必要な認証情報とエンドポイントを保存する。" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "認証情報" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "このベンダーから取得した商品のマークアップを定義する。" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "ベンダーのマークアップ率" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "このベンダーの名前" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "ベンダー名" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "ユーザーから寄せられた製品使用体験に関するコメント" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "フィードバック・コメント" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "関連注文商品" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "ユーザーによる製品の評価" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "製品評価" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "フィードバック" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "この注文に使用される請求先住所" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "この注文に適用されるプロモコード" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "プロモーションコード適用" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "この注文に使用された配送先住所" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "配送先住所" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "ライフサイクルにおける現在の注文状況" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "注文状況" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "この注文の注文属性のJSON表現" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "注文を行ったユーザー" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "ユーザー" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "注文が確定したタイムスタンプ" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "時間を買う" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "オーダーの人間が読み取り可能な識別子。" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "人間が読めるID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "オーダー" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name}が存在しません:{product_uuid}が存在しません。" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "クエリ<{query}>で{name}が存在しません。" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "アドレスが存在しない" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "無効なフォース値" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "支払方法が無効です:{available_payment_methods}からの{payment_method}が無効です!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "社内コメント" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "ユーザー通知" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "製品属性の順序" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "親注文" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "製品数量" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "製品ラインの状況" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "フィードバックに指定されたアクションが間違っています:{action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "受信していない注文をフィードバックすることはできません。" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "タグ名" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "タグ表示名" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "商品タグ" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "カテゴリタグ" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "画像のaltテキスト" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "商品画像" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "表示優先度" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "商品画像" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "プロモコード識別子" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "固定割引額" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "割引率" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "終了有効時間" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "開始有効時間" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "担当ユーザー" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "プロモコード" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "プロモコード" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です。" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "割引率" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "プロモーション名" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "プロモーション内容" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "含まれる製品" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "プロモーション" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "関連ベンダー" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "販売価格" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "在庫数" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "在庫数" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "ベンダーのSKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "デジタルファイル" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "ストックエントリー" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "ウィッシュリスト" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "ダウンロード" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "ダウンロード" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "未完成の注文のデジタル資産をダウンロードすることはできません。" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "ドキュメンタリー" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "ドキュメンタリー" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "未解決" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "お客様の住所" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "住所" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "ストリート" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "地区" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "都市" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "地域" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "郵便番号" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "国名" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "住所" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "住所" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力する必要があります。" @@ -1975,60 +1998,26 @@ msgstr "フィードバックを追加するには、コメント、評価、お msgid "error during promocode creation: {e!s}" msgstr "プロモコード作成中にエラーが発生しました:{e!s}です。" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "構成" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "セーブ" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "ホーム" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "デフォルト" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "価値" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "修正済み" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "現在のファイル" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "デフォルトに戻す" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "ご注文の確認" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "ロゴ" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "こんにちは、%(order.user.first_name)sです、" @@ -2036,42 +2025,41 @@ msgstr "こんにちは、%(order.user.first_name)sです、" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "合計" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "合計価格" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わせください。" -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "よろしくお願いします、
%(config.PROJECT_NAME)sのチーム。" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "無断複写・転載を禁じます。" @@ -2087,22 +2075,31 @@ msgstr "こんにちは、%(user_first_name)sです、" #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "追加情報" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"追加\n" +" 追加情報" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "価値" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせください。" -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "よろしくお願いします、
%(project_name)sのチーム。" @@ -2111,29 +2108,38 @@ msgstr "よろしくお願いします、
%(project_name)sのチーム。" msgid "key" msgstr "キー" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "送料" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "ご注文の商品は以下の住所に配送されます:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "よろしくお願いします、
%(config.PROJECT_NAME)sチーム。" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"すべての権利\n" +" 予約済み" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "データとタイムアウトの両方が必要" @@ -2192,7 +2198,7 @@ msgstr "デジタルアセットのダウンロードは1回限りです。" msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "ジオコーディングエラー:{e}" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.mo b/core/locale/kk_KZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/core/locale/kk_KZ/LC_MESSAGES/django.mo and b/core/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index 8fc2d652..4639e66f 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -59,17 +59,16 @@ msgstr "" msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "" @@ -77,23 +76,23 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "" @@ -109,11 +108,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "" @@ -701,100 +700,108 @@ msgstr "" msgid "no search term provided." msgstr "" -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "" + +#: core/filters.py:323 +msgid "Level" +msgstr "" + +#: core/filters.py:384 msgid "Product UUID" msgstr "" @@ -849,7 +856,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" @@ -901,7 +908,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" @@ -910,262 +917,278 @@ msgstr "" msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "" @@ -1234,7 +1257,7 @@ msgid "attribute's name" msgstr "" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "" @@ -1246,8 +1269,8 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "" @@ -1295,7 +1318,7 @@ msgstr "" msgid "tags that help describe or group this category" msgstr "" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "" @@ -1343,614 +1366,614 @@ msgstr "" msgid "category this product belongs to" msgstr "" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "" -#: core/models.py:430 +#: core/models.py:431 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:597 core/models.py:617 core/models.py:641 core/models.py:1250 -#: core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 core/models.py:1256 +#: core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -1959,60 +1982,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "" @@ -2020,42 +2009,42 @@ msgstr "" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are " +"the details of your\n" +" order:" msgstr "" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "" @@ -2071,22 +2060,29 @@ msgstr "" #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" msgstr "" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "" @@ -2095,29 +2091,37 @@ msgstr "" msgid "key" msgstr "" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below " +"are\n" +" the details of your order:" msgstr "" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "" @@ -2176,7 +2180,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index a6c820c3..77b45b4d 100644 Binary files a/core/locale/nl_NL/LC_MESSAGES/django.mo and b/core/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/core/locale/nl_NL/LC_MESSAGES/django.po b/core/locale/nl_NL/LC_MESSAGES/django.po index 9f26c42e..e1e8fa7c 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,17 +59,16 @@ msgstr "Activeer geselecteerde %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactiveer geselecteerde %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribuut Waarde" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Attribuutwaarden" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Naam" @@ -77,23 +76,23 @@ msgstr "Naam" msgid "image" msgstr "Afbeelding" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Afbeeldingen" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Voorraad" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Aandelen" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Prijs" @@ -109,11 +108,11 @@ msgstr "Basisinformatie" msgid "important dates" msgstr "Belangrijke data" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Product bestellen" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Producten bestellen" @@ -773,101 +772,109 @@ msgstr "feedback toevoegen of verwijderen op een order-productrelatie" msgid "no search term provided." msgstr "Geen zoekterm opgegeven." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Naam" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categorieën" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categorieën Naaktslakken" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Min Prijs" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Maximale prijs" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Is actief" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Merk" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Attributen" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Hoeveelheid" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Slak" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Is digitaal" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Subcategorieën opnemen" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Er moet een categorie_uuid zijn om include_subcategories vlag te gebruiken" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Zoeken (ID, productnaam of onderdeelnummer)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Gekocht na (inclusief)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Eerder gekocht (inclusief)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "E-mail gebruiker" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "Gebruiker UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Menselijk leesbare ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Ouder" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Hele categorie (heeft minstens 1 product of niet)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Niveau" + +#: core/filters.py:384 msgid "Product UUID" msgstr "Product UUID" @@ -922,7 +929,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" @@ -975,7 +982,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" @@ -984,96 +991,104 @@ msgstr "{name} bestaat niet: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limiet moet tussen 1 en 10 liggen" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - werkt als een charme" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Attributen" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Gegroepeerde kenmerken" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Groepen van kenmerken" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categorieën" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Merken" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categorieën" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Opwaarderingspercentage" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Welke attributen en waarden kunnen worden gebruikt om deze categorie te " "filteren." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimale en maximale prijzen voor producten in deze categorie, indien " "beschikbaar." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags voor deze categorie" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Producten in deze categorie" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Verkopers" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Breedtegraad (Y-coördinaat)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Lengtegraad (X-coördinaat)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Hoe" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Waarderingswaarde van 1 tot en met 10, of 0 indien niet ingesteld." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Vertegenwoordigt feedback van een gebruiker." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Meldingen" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Download url voor dit bestelproduct indien van toepassing" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Een lijst met bestelde producten in deze bestelling" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Factuuradres" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1081,174 +1096,182 @@ msgstr "" "Verzendadres voor deze bestelling, leeg laten als dit hetzelfde is als het " "factuuradres of als dit niet van toepassing is" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Totale prijs van deze bestelling" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Totale hoeveelheid producten in bestelling" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Zijn alle producten in de bestelling digitaal" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Bestellingen" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Afbeelding URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Afbeeldingen van het product" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Reacties" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Merk" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Attribuutgroepen" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Hoeveelheid" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Aantal terugkoppelingen" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Producten" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Producten te koop" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promoties" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Verkoper" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Product" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Gewenste producten" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Verlanglijst" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Getagde producten" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Product tags" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Getagde categorieën" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Categorieën' tags" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Naam project" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Bedrijf E-mail" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Bedrijfsnaam" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adres" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Telefoonnummer bedrijf" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "e-mail van', soms moet deze worden gebruikt in plaats van de " "hostgebruikerswaarde" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Gebruiker e-mail hosten" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maximumbedrag voor betaling" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimumbedrag voor betaling" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Analytics-gegevens" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Advertentiegegevens" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuratie" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Taalcode" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Naam van de taal" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Taalvlag, indien aanwezig :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Producten zoekresultaten" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Zoekresultaten" @@ -1317,7 +1340,7 @@ msgid "attribute's name" msgstr "Naam attribuut" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Attribuut" @@ -1329,8 +1352,8 @@ msgstr "Attribuut van deze waarde" msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Bijbehorend product" @@ -1378,7 +1401,7 @@ msgstr "Categorie beschrijving" msgid "tags that help describe or group this category" msgstr "tags die deze categorie helpen beschrijven of groeperen" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "categorie tags" @@ -1426,235 +1449,235 @@ msgstr "Categorieën" msgid "category this product belongs to" msgstr "Categorie waartoe dit product behoort" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Dit product optioneel koppelen aan een merk" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags die dit product helpen beschrijven of groeperen" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Geeft aan of dit product digitaal wordt geleverd" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Is product digitaal" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Zorg voor een duidelijke identificerende naam voor het product" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Naam product" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Productbeschrijving" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Onderdeelnummer voor dit product" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Onderdeelnummer" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Slaat referenties en eindpunten op die vereist zijn voor API-communicatie " "van de verkoper" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Authenticatie-info" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieer de opmaak voor producten die zijn opgehaald bij deze leverancier" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Verkoper winstpercentage" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Naam van deze verkoper" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Naam verkoper" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Opmerkingen van gebruikers over hun ervaring met het product" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Reacties" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Verwijst naar het specifieke product in een bestelling waar deze feedback " "over gaat" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Gerelateerd product bestellen" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Door de gebruiker toegekende waardering voor het product" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Productbeoordeling" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Het factuuradres dat voor deze bestelling is gebruikt" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Optionele promotiecode toegepast op deze bestelling" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Kortingscode toegepast" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Het verzendadres dat voor deze bestelling is gebruikt" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Verzendadres" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Huidige status van de order in zijn levenscyclus" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Bestelstatus" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON-structuur van meldingen om weer te geven aan gebruikers, in admin UI " "wordt de tabelweergave gebruikt" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON-weergave van bestelattributen voor deze bestelling" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "De gebruiker die de bestelling heeft geplaatst" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Gebruiker" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "De tijdstempel waarop de bestelling is afgerond" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Tijd kopen" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Een menselijk leesbare identificatiecode voor de bestelling" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "menselijk leesbare ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Bestel" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Een gebruiker mag maar één lopende order tegelijk hebben!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "U kunt geen producten toevoegen aan een bestelling die niet in behandeling " "is." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} bestaat niet: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "U kunt geen producten verwijderen uit een bestelling die niet in behandeling" " is." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adres bestaat niet" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "U kunt op dit moment niet kopen. Probeer het over een paar minuten nog eens." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1662,7 +1685,7 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1670,199 +1693,199 @@ msgstr "" "Ongeldige betalingsmethode: {payment_method} van " "{available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "De prijs die de klant bij aankoop voor dit product heeft betaald" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Interne opmerkingen" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Ouderlijk bevel" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Hoeveelheid product" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Status productlijn" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "verkeerde actie opgegeven voor feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "U kunt geen producten verwijderen uit een bestelling die niet in behandeling" " is." -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Tag naam" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Tag weergavenaam" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Productlabel" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "categorie tag" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Product afbeelding" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Prioriteit weergeven" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Product afbeeldingen" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Unieke code die een gebruiker gebruikt om een korting te verzilveren" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Promo code identificatie" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Kortingspercentage dat wordt toegepast als het vaste bedrag niet wordt " "gebruikt" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Kortingspercentage" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet " "gebruikt" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Kortingscode" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Actiecodes" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1870,197 +1893,197 @@ msgstr "" "Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," " maar niet beide of geen van beide." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Kortingspercentage" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Naam promotie" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Promotie beschrijving" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Meegeleverde producten" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promotie" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Verkoopprijs" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "De prijs die voor dit product aan de verkoper is betaald" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "Verkoper SKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Digitaal bestand" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Voorraadboekingen" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Verlanglijst" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Downloaden" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Downloads" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" "U kunt geen digitale activa downloaden voor een niet-afgeronde bestelling" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Onopgelost" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Adresregel voor de klant" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Adresregel" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Straat" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "District" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Stad" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Regio" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Postcode" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Land" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adres" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adressen" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2071,60 +2094,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Fout tijdens aanmaken promocode: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuratie" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Sla" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Home" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Standaard" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Waarde" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Is gewijzigd" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Huidig bestand" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Terugzetten naar standaard" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Orderbevestiging" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Hallo %(order.user.first_name)s," @@ -2132,47 +2121,46 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te " "informeren dat we uw bestelling in behandeling hebben genomen. Hieronder " "vindt u de gegevens van uw bestelling:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Totaal" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Totale prijs" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Als je vragen hebt, neem dan gerust contact op met onze ondersteuning op " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Vriendelijke groeten,
het %(config.PROJECT_NAME)s-team" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Alle rechten voorbehouden" @@ -2188,26 +2176,35 @@ msgstr "Hallo %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "We hebben uw bestelling succesvol verwerkt №%(order_uuid)s! Hieronder vindt " "u de details van uw bestelling:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "aanvullende informatie" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"aanvullende\n" +" informatie" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Waarde" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Als je vragen hebt, kun je contact opnemen met onze klantenservice op " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Vriendelijke groeten,
het %(project_name)s-team" @@ -2216,31 +2213,40 @@ msgstr "Vriendelijke groeten,
het %(project_name)s-team" msgid "key" msgstr "Sleutel" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. " "Hieronder vindt u de gegevens van uw bestelling:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Verzendprijs" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Je bestelling wordt afgeleverd op het volgende adres:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Vriendelijke groeten,
het %(config.PROJECT_NAME)s-team" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"alle rechten\n" +" voorbehouden" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Zowel gegevens als time-out zijn vereist" @@ -2302,7 +2308,7 @@ msgstr "U kunt het digitale goed maar één keer downloaden" msgid "favicon not found" msgstr "favicon niet gevonden" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fout bij geocodering: {e}" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index 72f60586..004ae3da 100644 Binary files a/core/locale/pl_PL/LC_MESSAGES/django.mo and b/core/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/core/locale/pl_PL/LC_MESSAGES/django.po b/core/locale/pl_PL/LC_MESSAGES/django.po index a406ac22..6d6ba2a9 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Aktywuj wybrane %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezaktywacja wybranych %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Wartość atrybutu" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Wartości atrybutów" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nazwa" @@ -79,23 +78,23 @@ msgstr "Nazwa" msgid "image" msgstr "Obraz" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Obrazy" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stan magazynowy" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Akcje" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Cena" @@ -111,11 +110,11 @@ msgstr "Podstawowe informacje" msgid "important dates" msgstr "Ważne daty" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Zamów produkt" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Zamawianie produktów" @@ -769,100 +768,108 @@ msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt" msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nazwa" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Kategorie" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Kategorie Ślimaki" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tagi" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Cena minimalna" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Maksymalna cena" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Jest aktywny" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marka" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Atrybuty" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Ilość" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Ślimak" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Czy cyfrowy" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Uwzględnienie podkategorii" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "Aby użyć flagi include_subcategories, musi istnieć category_uuid" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Wyszukiwanie (ID, nazwa produktu lub numer części)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Kupione po (włącznie)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Kupione wcześniej (włącznie)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "E-mail użytkownika" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID użytkownika" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Identyfikator czytelny dla człowieka" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Rodzic" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Cała kategoria (ma co najmniej 1 produkt lub nie)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Poziom" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID produktu" @@ -917,7 +924,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" @@ -971,7 +978,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" @@ -980,94 +987,102 @@ msgstr "{name} nie istnieje: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limit musi wynosić od 1 do 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - działa jak urok" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Atrybuty" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Atrybuty pogrupowane" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marki" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Procentowy narzut" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Minimalne i maksymalne ceny produktów w tej kategorii, jeśli są dostępne." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tagi dla tej kategorii" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produkty w tej kategorii" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Sprzedawcy" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Szerokość geograficzna (współrzędna Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Długość geograficzna (współrzędna X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Jak" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Wartość oceny od 1 do 10 włącznie lub 0, jeśli nie jest ustawiona." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Reprezentuje informacje zwrotne od użytkownika." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Powiadomienia" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Adres URL pobierania dla tego produktu zamówienia, jeśli dotyczy" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Lista zamówionych produktów w tym zamówieniu" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Adres rozliczeniowy" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1075,172 +1090,180 @@ msgstr "" "Adres wysyłki dla tego zamówienia, pozostaw pusty, jeśli jest taki sam jak " "adres rozliczeniowy lub jeśli nie dotyczy" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Całkowita cena tego zamówienia" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Całkowita ilość produktów w zamówieniu" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Czy wszystkie produkty w zamówieniu są cyfrowe?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Zamówienia" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "Adres URL obrazu" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Zdjęcia produktu" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Kategoria" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Informacje zwrotne" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marka" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Ilość" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Liczba informacji zwrotnych" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produkty w sprzedaży" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promocje" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Sprzedawca" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Listy życzeń" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Produkty Tagged" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Tagi produktu" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Kategorie oznaczone tagami" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Tagi kategorii" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Nazwa projektu" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Firmowy adres e-mail" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Nazwa firmy" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adres firmy" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Numer telefonu firmy" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Użytkownik hosta poczty e-mail" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Maksymalna kwota płatności" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Minimalna kwota płatności" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Dane analityczne" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Dane reklamowe" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Konfiguracja" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Kod języka" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Nazwa języka" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Flaga języka, jeśli istnieje :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Wyniki wyszukiwania produktów" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Wyniki wyszukiwania produktów" @@ -1309,7 +1332,7 @@ msgid "attribute's name" msgstr "Nazwa atrybutu" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Atrybut" @@ -1321,8 +1344,8 @@ msgstr "Atrybut tej wartości" msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Produkt powiązany" @@ -1370,7 +1393,7 @@ msgstr "Opis kategorii" msgid "tags that help describe or group this category" msgstr "tagi, które pomagają opisać lub pogrupować tę kategorię" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "tagi kategorii" @@ -1418,235 +1441,235 @@ msgstr "Kategorie" msgid "category this product belongs to" msgstr "Kategoria, do której należy ten produkt" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Opcjonalnie można powiązać ten produkt z marką" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tagi, które pomagają opisać lub pogrupować ten produkt" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Wskazuje, czy produkt jest dostarczany cyfrowo." -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Czy produkt jest cyfrowy?" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Wyraźna nazwa identyfikująca produkt" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Nazwa produktu" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Opis produktu" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Numer części dla tego produktu" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Numer części" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Przechowuje dane uwierzytelniające i punkty końcowe wymagane do komunikacji " "API dostawcy." -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informacje o uwierzytelnianiu" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Definiowanie znaczników dla produktów pobranych od tego dostawcy" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Procentowa marża sprzedawcy" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Nazwa tego sprzedawcy" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Nazwa sprzedawcy" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Komentarze użytkowników na temat ich doświadczeń z produktem" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Komentarze zwrotne" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Odnosi się do konkretnego produktu w zamówieniu, którego dotyczy ta " "informacja zwrotna." -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Powiązany produkt zamówienia" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Ocena produktu przypisana przez użytkownika" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Ocena produktu" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Informacje zwrotne" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Adres rozliczeniowy użyty dla tego zamówienia" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Opcjonalny kod promocyjny zastosowany do tego zamówienia" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Zastosowany kod promocyjny" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Adres wysyłki użyty dla tego zamówienia" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Adres wysyłki" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Aktualny status zamówienia w jego cyklu życia" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Status zamówienia" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Struktura JSON powiadomień do wyświetlenia użytkownikom, w interfejsie " "administratora używany jest widok tabeli" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Reprezentacja JSON atrybutów zamówienia dla tego zamówienia" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Użytkownik, który złożył zamówienie" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Użytkownik" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Znacznik czasu, kiedy zamówienie zostało sfinalizowane" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Kup czas" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Czytelny dla człowieka identyfikator zamówienia" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "Identyfikator czytelny dla człowieka" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Zamówienie" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "" "Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Nie można dodać produktów do zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Nie można dodać więcej produktów niż jest dostępnych w magazynie" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nie istnieje: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>." -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "Możesz kupować tylko produkty fizyczne z podanym adresem wysyłki!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adres nie istnieje" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "W tej chwili nie możesz dokonać zakupu, spróbuj ponownie za kilka minut." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1655,7 +1678,7 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1663,199 +1686,199 @@ msgstr "" "Nieprawidłowa metoda płatności: {payment_method} z " "{available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena zapłacona przez klienta za ten produkt w momencie zakupu." -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego " "produktu" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Ilość produktu" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Status linii produktów" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "nieprawidłowe działanie określone dla informacji zwrotnej: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nazwa tagu" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Etykieta produktu" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "tag kategorii" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Obraz produktu" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Priorytet wyświetlania" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Zdjęcia produktów" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Unikalny kod używany przez użytkownika do realizacji rabatu." -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Stała kwota rabatu stosowana, jeśli procent nie jest używany" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Rabat procentowy" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Końcowy czas ważności" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Znacznik czasu użycia kodu promocyjnego, pusty, jeśli nie został jeszcze " "użyty." -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Przypisany użytkownik" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Kod promocyjny" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Kody promocyjne" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1863,196 +1886,196 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}." -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Procent rabatu" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Nazwa promocji" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Opis promocji" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Dołączone produkty" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promocja" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Cena sprzedaży" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Plik cyfrowy" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Zapisy magazynowe" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Lista życzeń" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Pobierz" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Pliki do pobrania" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Nie można pobrać zasobu cyfrowego dla nieukończonego zamówienia." -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Film dokumentalny" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Filmy dokumentalne" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Nierozwiązany" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Linia adresu dla klienta" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Linia adresowa" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "ul." -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Okręg" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Miasto" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Region" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Kod pocztowy" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Kraj" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adres" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adresy" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2063,60 +2086,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Błąd podczas tworzenia kodu promocyjnego: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Konfiguracja" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Zapisz" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Strona główna" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Domyślne" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Wartość" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Jest zmodyfikowany" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Bieżący plik" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Przywróć ustawienia domyślne" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Potwierdzenie zamówienia" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Witam %(order.user.first_name)s," @@ -2124,47 +2113,46 @@ msgstr "Witam %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że " "przyjęliśmy Twoje zamówienie do realizacji. Poniżej znajdują się szczegóły " "zamówienia:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Łącznie" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Cena całkowita" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy " "technicznej pod adresem %(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Z wyrazami szacunku,
zespół %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Wszelkie prawa zastrzeżone" @@ -2180,26 +2168,35 @@ msgstr "Witaj %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują" " się szczegóły zamówienia:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "dodatkowe informacje" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"dodatkowe\n" +" informacje" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Wartość" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Jeśli masz jakiekolwiek pytania, skontaktuj się z naszym działem pomocy " "technicznej pod adresem %(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Z wyrazami szacunku,
zespół %(project_name)s" @@ -2208,31 +2205,40 @@ msgstr "Z wyrazami szacunku,
zespół %(project_name)s" msgid "key" msgstr "Klucz" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej " "znajdują się szczegóły zamówienia:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Cena wysyłki" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Zamówienie zostanie dostarczone pod następujący adres:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Z wyrazami szacunku, zespół %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"wszelkie prawa\n" +" zastrzeżone" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Wymagane są zarówno dane, jak i limit czasu" @@ -2294,7 +2300,7 @@ msgstr "Zasób cyfrowy można pobrać tylko raz" msgid "favicon not found" msgstr "nie znaleziono favicon" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Błąd geokodowania: {e}" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 0f7681a4..e802230b 100644 Binary files a/core/locale/pt_BR/LC_MESSAGES/django.mo and b/core/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/core/locale/pt_BR/LC_MESSAGES/django.po b/core/locale/pt_BR/LC_MESSAGES/django.po index 19cb2749..c838ddfb 100644 --- a/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/core/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Ativar %(verbose_name_plural)s selecionados" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desativar %(verbose_name_plural)s selecionados" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valor do atributo" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Valores de atributos" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nome" @@ -79,23 +78,23 @@ msgstr "Nome" msgid "image" msgstr "Imagem" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Imagens" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Estoque" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Ações" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Preço" @@ -111,11 +110,11 @@ msgstr "Informações básicas" msgid "important dates" msgstr "Datas importantes" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Pedido de produto" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Solicitar produtos" @@ -760,101 +759,109 @@ msgstr "adicionar ou remover feedback em uma relação pedido-produto" msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nome" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categorias" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categorias Lesmas" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Tags" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Preço mínimo" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Preço máximo" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Está ativo" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Brand" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Atributos" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Quantidade" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Lesma" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "É digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Incluir subcategorias" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Deve haver um category_uuid para usar o sinalizador include_subcategories" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Pesquisa (ID, nome do produto ou número de peça)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Comprado depois (inclusive)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Comprado antes (inclusive)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "E-mail do usuário" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID do usuário" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Status" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "ID legível por humanos" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Parent" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Toda a categoria (com pelo menos 1 produto ou não)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Nível" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID do produto" @@ -909,7 +916,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" @@ -962,7 +969,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" @@ -971,94 +978,102 @@ msgstr "{name} não existe: {uuid}" msgid "limit must be between 1 and 10" msgstr "O limite deve estar entre 1 e 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona muito bem" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categorias" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Marcas" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categorias" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Porcentagem de marcação" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "Preços mínimo e máximo dos produtos dessa categoria, se disponíveis." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Tags para esta categoria" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produtos desta categoria" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordenada Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitude (coordenada X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Como fazer" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de classificação de 1 a 10, inclusive, ou 0 se não estiver definido." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Representa o feedback de um usuário." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notificações" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "URL de download para este produto do pedido, se aplicável" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Uma lista dos produtos solicitados nesse pedido" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Endereço de cobrança" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1066,173 +1081,181 @@ msgstr "" "Endereço de entrega para este pedido, deixe em branco se for o mesmo que o " "endereço de cobrança ou se não for aplicável" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Preço total deste pedido" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Quantidade total de produtos no pedido" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Todos os produtos estão no pedido digital?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "URL da imagem" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Imagens do produto" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Quantidade" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Número de feedbacks" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produtos" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Códigos promocionais" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produtos à venda" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promoções" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produto" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Listas de desejos" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Produtos marcados" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Etiquetas do produto" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Categorias de tags" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Tags das categorias" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Nome do projeto" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "E-mail da empresa" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Nome da empresa" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Endereço da empresa" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Número de telefone da empresa" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', às vezes ele deve ser usado em vez do valor do usuário do host" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Usuário do host de e-mail" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Valor máximo para pagamento" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Valor mínimo para pagamento" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Dados analíticos" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Dados do anúncio" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configuração" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Código do idioma" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Nome do idioma" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Sinalizador de idioma, se houver :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Obter uma lista de idiomas suportados" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Resultados da pesquisa de produtos" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Resultados da pesquisa de produtos" @@ -1301,7 +1324,7 @@ msgid "attribute's name" msgstr "Nome do atributo" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Atributo" @@ -1313,8 +1336,8 @@ msgstr "Atributo desse valor" msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Produto associado" @@ -1362,7 +1385,7 @@ msgstr "Descrição da categoria" msgid "tags that help describe or group this category" msgstr "tags que ajudam a descrever ou agrupar essa categoria" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "tags de categoria" @@ -1410,234 +1433,234 @@ msgstr "Categorias" msgid "category this product belongs to" msgstr "Categoria à qual este produto pertence" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Opcionalmente, associe esse produto a uma marca" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Tags que ajudam a descrever ou agrupar este produto" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indica se esse produto é entregue digitalmente" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "O produto é digital" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Fornecer um nome de identificação claro para o produto" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Nome do produto" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Descrição do produto" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Número de peça para este produto" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Número da peça" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Armazena as credenciais e os pontos de extremidade necessários para a " "comunicação da API do fornecedor" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informações de autenticação" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Definir a marcação para produtos recuperados desse fornecedor" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Porcentagem da margem de lucro do fornecedor" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Nome do fornecedor" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Nome do fornecedor" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "" "Comentários fornecidos pelo usuário sobre sua experiência com o produto" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Comentários de feedback" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Faz referência ao produto específico em um pedido sobre o qual se trata esse" " feedback" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Produto de pedido relacionado" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Classificação atribuída pelo usuário ao produto" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Avaliação do produto" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "O endereço de cobrança usado para esse pedido" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "O endereço de entrega usado para esse pedido" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Endereço de entrega" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Status atual do pedido em seu ciclo de vida" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Status do pedido" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Estrutura JSON de notificações a serem exibidas aos usuários; na interface " "do usuário do administrador, é usada a visualização de tabela" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Representação JSON dos atributos do pedido para esse pedido" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "O usuário que fez o pedido" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Usuário" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "O registro de data e hora em que o pedido foi finalizado" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Tempo de compra" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Um identificador legível por humanos para o pedido" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "ID legível por humanos" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Pedido" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Um usuário deve ter apenas uma ordem pendente por vez!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "Não é possível adicionar produtos a um pedido que não esteja pendente" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "" "Não é possível adicionar mais produtos do que os disponíveis em estoque" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} não existe: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "Não é possível remover produtos de um pedido que não esteja pendente" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Você só pode comprar produtos físicos com o endereço de entrega " "especificado!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "O endereço não existe" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Não é possível comprar neste momento, tente novamente em alguns minutos." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Valor de força inválido" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1645,7 +1668,7 @@ msgstr "" "Não é possível comprar sem registro, forneça as seguintes informações: nome " "do cliente, e-mail do cliente, número de telefone do cliente" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1653,197 +1676,197 @@ msgstr "" "Método de pagamento inválido: {payment_method} de " "{available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "O preço pago pelo cliente por esse produto no momento da compra" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Comentários internos" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notificações do usuário" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Ordem dos pais" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Quantidade do produto" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Status da linha de produtos" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "ação incorreta especificada para feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "você não pode dar feedback a um pedido que não foi recebido" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nome da etiqueta" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Nome de exibição da tag" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Etiqueta do produto" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "tag de categoria" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Forneça um texto alternativo para a imagem para fins de acessibilidade" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Imagem do produto" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Prioridade de exibição" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Imagens do produto" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Código exclusivo usado por um usuário para resgatar um desconto" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Valor de desconto fixo aplicado se a porcentagem não for usada" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Desconto percentual aplicado se o valor fixo não for usado" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Desconto percentual" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Tempo de validade final" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "" "Registro de data e hora a partir do qual esse código promocional é válido" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Hora de início da validade" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Registro de data e hora em que o código promocional foi usado, em branco se " "ainda não tiver sido usado" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Usuário atribuído" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Código promocional" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Códigos promocionais" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1851,198 +1874,198 @@ msgstr "" "Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" " ambos ou nenhum." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de desconto inválido para o código promocional {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Nome da promoção" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Descrição da promoção" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Produtos incluídos" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promoção" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Fornecedor associado" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Preço de venda" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU do fornecedor" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Arquivo digital" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Entradas de estoque" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Lista de desejos" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Baixar" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Downloads" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Não é possível fazer download de um ativo digital para um pedido não " "concluído" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentário" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentários" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Não resolvido" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Linha de endereço do cliente" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Linha de endereço" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Rua" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Distrito" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Cidade" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Região" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Código postal" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "País" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Endereço" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Endereços" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2053,60 +2076,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Erro durante a criação do código promocional: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configuração" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Salvar" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Início" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Padrão" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Valor" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "É modificado" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Arquivo atual" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Redefinir para o padrão" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Confirmação de pedido" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logotipo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Olá %(order.user.first_name)s," @@ -2114,46 +2103,45 @@ msgstr "Olá %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que " "seu pedido foi colocado em prática. Abaixo estão os detalhes de seu pedido:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Preço total" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Se tiver alguma dúvida, entre em contato com nosso suporte em " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Com os melhores cumprimentos,
da equipe de %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Todos os direitos reservados" @@ -2169,26 +2157,35 @@ msgstr "Olá %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Seu pedido №%(order_uuid)s foi processado com sucesso! Abaixo estão os " "detalhes de seu pedido:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "Informações adicionais" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"adicionais\n" +" informações adicionais" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Valor" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Se tiver alguma dúvida, entre em contato com nosso suporte em " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Atenciosamente,
a equipe de %(project_name)s" @@ -2197,31 +2194,40 @@ msgstr "Atenciosamente,
a equipe de %(project_name)s" msgid "key" msgstr "Chave" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo " "estão os detalhes de seu pedido:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Preço da remessa" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Seu pedido será entregue no seguinte endereço:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Com os melhores cumprimentos,
a equipe de %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"todos os direitos\n" +" reservados" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "São necessários dados e tempo limite" @@ -2281,7 +2287,7 @@ msgstr "Você só pode fazer o download do ativo digital uma vez" msgid "favicon not found" msgstr "favicon não encontrado" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erro de geocodificação: {e}" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index e332f346..12268795 100644 Binary files a/core/locale/ro_RO/LC_MESSAGES/django.mo and b/core/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/core/locale/ro_RO/LC_MESSAGES/django.po b/core/locale/ro_RO/LC_MESSAGES/django.po index 5abd0a50..4c1891da 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Activați %(verbose_name_plural)s selectate" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezactivați %(verbose_name_plural)s selectate" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Atribut Valoare" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Valori ale atributului" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Nume și prenume" @@ -79,23 +78,23 @@ msgstr "Nume și prenume" msgid "image" msgstr "Imagine" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Imagini" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Stoc" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Stocuri" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Preț" @@ -111,11 +110,11 @@ msgstr "Informații de bază" msgid "important dates" msgstr "Date importante" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Comanda Produs" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Comandați produse" @@ -770,102 +769,110 @@ msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Nume și prenume" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Categorii" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Categorii Melci" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Etichete" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Preț minim" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Preț maxim" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Este activ" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Marca" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Atribute" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Cantitate" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Melc" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Este digital" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Includeți subcategorii" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Trebuie să existe un category_uuid pentru a utiliza flagul " "include_subcategories" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Căutare (ID, numele produsului sau numărul piesei)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Cumpărat după (inclusiv)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Cumpărat înainte (inclusiv)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "E-mail utilizator" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID utilizator" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Statut" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "ID lizibil de către om" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Părinte" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Întreaga categorie (are cel puțin 1 produs sau nu)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Nivel" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID produs" @@ -921,7 +928,7 @@ msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" @@ -975,7 +982,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" @@ -984,96 +991,104 @@ msgstr "{name} nu există: {uuid}" msgid "limit must be between 1 and 10" msgstr "Limita trebuie să fie între 1 și 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funcționează ca un farmec" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Atribute" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Atribute grupate" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Categorii" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Mărci" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Categorii" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Procentul de majorare" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Atributele și valorile care pot fi utilizate pentru filtrarea acestei " "categorii." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" " disponibile." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Etichete pentru această categorie" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Produse din această categorie" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Furnizori" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordonata Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordonata X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Cum să" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valoare nominală de la 1 la 10, inclusiv, sau 0 dacă nu este setată." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Reprezintă feedback de la un utilizator." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Notificări" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "URL de descărcare pentru acest produs de comandă, dacă este cazul" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "O listă a produselor comandate în această comandă" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Adresa de facturare" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1081,174 +1096,182 @@ msgstr "" "Adresa de expediere pentru această comandă, lăsați în alb dacă este aceeași " "cu adresa de facturare sau dacă nu se aplică" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Prețul total al acestei comenzi" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Cantitatea totală de produse din comandă" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Sunt toate produsele din comanda digitală" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Ordine" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "URL imagine" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Imagini ale produsului" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Feedback-uri" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Cantitate" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Numărul de reacții" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Produse" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Coduri promoționale" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Produse scoase la vânzare" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Promoții" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Furnizor" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Produs" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Produse dorite" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Liste de dorințe" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Produse etichetate" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Etichete de produs" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Categorii etichetate" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Etichete \"Categorii" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Numele proiectului" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Email companie" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Numele companiei" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Adresa companiei" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Numărul de telefon al companiei" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"e-mail de la\", uneori trebuie să fie utilizat în locul valorii " "utilizatorului gazdă" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Utilizator gazdă e-mail" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Suma maximă pentru plată" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Suma minimă pentru plată" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Date analitice" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Date publicitare" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Configurație" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Codul limbii" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Numele limbii" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Indicatorul de limbă, dacă există :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Rezultate căutare produse" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Rezultate căutare produse" @@ -1317,7 +1340,7 @@ msgid "attribute's name" msgstr "Numele atributului" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Atribut" @@ -1329,8 +1352,8 @@ msgstr "Atributul acestei valori" msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Produs asociat" @@ -1379,7 +1402,7 @@ msgstr "Descriere categorie" msgid "tags that help describe or group this category" msgstr "etichete care ajută la descrierea sau gruparea acestei categorii" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "Etichete de categorie" @@ -1427,236 +1450,236 @@ msgstr "Categorii" msgid "category this product belongs to" msgstr "Categoria din care face parte acest produs" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "Opțional, asociați acest produs cu un brand" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Etichete care ajută la descrierea sau gruparea acestui produs" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Indică dacă acest produs este livrat digital" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Produsul este digital" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Furnizați o denumire clară de identificare a produsului" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Denumirea produsului" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Descrierea produsului" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Numărul piesei pentru acest produs" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Numărul piesei" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stochează acreditările și punctele finale necesare pentru comunicarea API a " "furnizorului" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Informații privind autentificarea" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definirea marjei de profit pentru produsele preluate de la acest furnizor" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Procentul de majorare al furnizorului" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Numele acestui vânzător" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Numele furnizorului" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "" "Comentarii furnizate de utilizatori cu privire la experiența lor cu produsul" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Comentarii de feedback" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Face referire la produsul specific dintr-o comandă despre care este vorba în" " acest feedback" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Produs aferent comenzii" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Rating atribuit de utilizator pentru produs" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Evaluarea produsului" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Feedback" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Adresa de facturare utilizată pentru această comandă" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Cod promoțional opțional aplicat la această comandă" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Cod promoțional aplicat" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Adresa de expediere utilizată pentru această comandă" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Adresa de expediere" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Stadiul actual al comenzii în ciclul său de viață" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Stadiul comenzii" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "Structura JSON a notificărilor care urmează să fie afișate utilizatorilor, " "în interfața de administrare este utilizată vizualizarea tabelară" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "Reprezentarea JSON a atributelor comenzii pentru această comandă" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Utilizatorul care a plasat comanda" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Utilizator" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Momentul în care comanda a fost finalizată" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Cumpărați timp" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Un identificator ușor de citit pentru comandă" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "ID lizibil de către om" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Comandă" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "" "Un utilizator trebuie să aibă un singur ordin în așteptare la un moment dat!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "Nu puteți adăuga produse la o comandă care nu este în așteptare" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Nu puteți adăuga mai multe produse decât cele disponibile în stoc" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nu există: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Puteți cumpăra numai produse fizice cu adresa de expediere specificată!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Adresa nu există" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Nu puteți achiziționa în acest moment, vă rugăm să încercați din nou în " "câteva minute." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1664,7 +1687,7 @@ msgstr "" "nu puteți cumpăra fără înregistrare, vă rugăm să furnizați următoarele " "informații: nume client, e-mail client, număr de telefon client" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" @@ -1672,196 +1695,196 @@ msgstr "" "Metodă de plată invalidă: {payment_method} de la " "{available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Prețul plătit de client pentru acest produs la momentul achiziției" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Observații interne" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Ordinul părinților" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Cantitatea produsului" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Starea liniei de produse" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "acțiune greșită specificată pentru feedback: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Nume etichetă" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Nume afișare etichetă" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Etichetă produs" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "etichetă de categorie" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Textul alt al imaginii" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Imaginea produsului" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Prioritatea afișării" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Imagini ale produsului" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Cod unic utilizat de un utilizator pentru a răscumpăra o reducere" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Reducere procentuală" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Momentul în care codul promoțional a fost utilizat, gol dacă nu a fost " "utilizat încă" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Utilizator atribuit" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Cod promoțional" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Coduri promoționale" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1869,196 +1892,196 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Procent de reducere" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Numele promoției" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Descrierea promoției" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Produse incluse" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Promovare" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Furnizor asociat" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Prețul de vânzare" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU al furnizorului" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Fișier digital" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Intrări pe stoc" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Lista dorințelor" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Descărcare" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Descărcări" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Nu puteți descărca un bun digital pentru o comandă nefinalizată" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Documentar" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Documentare" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Nerezolvat" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Linia de adresă pentru client" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Linia de adresă" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Strada" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Districtul" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Oraș" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Regiunea" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Cod poștal" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Țara" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Adresă" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Adrese" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2069,60 +2092,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Eroare în timpul creării codului promoțional: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Configurație" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Salvați" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Acasă" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "Implicit" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Valoare" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Este modificat" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Fișier curent" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Resetare la setările implicite" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Confirmarea comenzii" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Logo" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Bună ziua %(order.user.first_name)s," @@ -2130,47 +2119,46 @@ msgstr "Bună ziua %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă " "informăm că am preluat comanda dvs. în lucru. Mai jos sunt detaliile " "comenzii dvs:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Total" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Preț total" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Dacă aveți întrebări, nu ezitați să contactați asistența noastră la " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "Salutări,
echipa %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Toate drepturile rezervate" @@ -2186,26 +2174,35 @@ msgstr "Bună ziua %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Am procesat cu succes comanda dvs. №%(order_uuid)s! Mai jos sunt detaliile " "comenzii dvs:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "informații suplimentare" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"informații suplimentare\n" +" informații suplimentare" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Valoare" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Dacă aveți întrebări, nu ezitați să contactați asistența noastră la " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Cele mai bune salutări,
echipa %(project_name)s" @@ -2214,31 +2211,40 @@ msgstr "Cele mai bune salutări,
echipa %(project_name)s" msgid "key" msgstr "Cheie" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția." " Mai jos sunt detaliile comenzii dvs:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Preț de livrare" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Comanda dvs. va fi livrată la următoarea adresă:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "Salutări,
echipa %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"toate drepturile\n" +" rezervate" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Sunt necesare atât datele, cât și timpul de așteptare" @@ -2299,7 +2305,7 @@ msgstr "Puteți descărca activul digital o singură dată" msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Eroare de geocodare: {e}" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index 893698f6..d0635635 100644 Binary files a/core/locale/ru_RU/LC_MESSAGES/django.mo and b/core/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/core/locale/ru_RU/LC_MESSAGES/django.po b/core/locale/ru_RU/LC_MESSAGES/django.po index 87ce75bc..71649da6 100644 --- a/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/core/locale/ru_RU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,17 +61,16 @@ msgstr "Активировать выбранные %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Деактивировать выбранные %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Значение атрибута" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "Значения атрибутов" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "Имя" @@ -79,23 +78,23 @@ msgstr "Имя" msgid "image" msgstr "Изображение" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "Изображения" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "Наличие" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "Наличия" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "Цена" @@ -111,11 +110,11 @@ msgstr "Основная информация" msgid "important dates" msgstr "Важные даты" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "Заказать товар" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "Заказать товары" @@ -769,102 +768,110 @@ msgstr "добавлять или удалять отзывы о связи за msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "Имя" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "Категории" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "Категории Слизни" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "Теги" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "Мин. цена" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "Максимальная цена" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "Активен" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "Бренд" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "Атрибуты" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "Количество" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "Слизняк" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "Цифровой" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "Включите подкатегории" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" "Для использования флага include_subcategories должен быть указан " "category_uuid." -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "Поиск (идентификатор, название продукта или номер детали)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "Куплено после (включительно)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "Куплено ранее (включительно)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "Электронная почта пользователя" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "UUID пользователя" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "Статус" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "Человекочитаемый идентификатор" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "Родитель" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "Вся категория (есть хотя бы 1 продукт или нет)" + +#: core/filters.py:323 +msgid "Level" +msgstr "Уровень" + +#: core/filters.py:384 msgid "Product UUID" msgstr "UUID продукта" @@ -921,7 +928,7 @@ msgstr "" "варианты!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" @@ -975,7 +982,7 @@ msgstr "" msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" @@ -984,96 +991,104 @@ msgstr "{name} не существует: {uuid}" msgid "limit must be between 1 and 10" msgstr "Предел должен быть от 1 до 10" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - работает как шарм" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "Атрибуты" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "Сгруппированные атрибуты" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "Категории" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "Бренды" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "Категории" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "Процент наценки" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "Теги для этой категории" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "Продукты в этой категории" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "Поставщики" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "Широта (координата Y)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "Долгота (координата X)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "Как" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Значение рейтинга от 1 до 10, включительно, или 0, если он не установлен." -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "Представляет собой отзыв пользователя." -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "Уведомления" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "Если применимо, загрузите url для этого продукта заказа" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "Список товаров, заказанных в этом заказе" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "Адрес для выставления счетов" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -1081,174 +1096,182 @@ msgstr "" "Адрес доставки для данного заказа, оставьте пустым, если он совпадает с " "адресом выставления счета или не применяется" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "Общая стоимость этого заказа" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "Общее количество продуктов в заказе" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "Все ли товары в заказе представлены в цифровом виде" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "Заказы" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "URL-адрес изображения" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "Изображения продукта" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "Категория" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "Отзывы" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "Бренд" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "Количество" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "Количество отзывов" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "Продукция" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "Промокоды" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "Продукты в продаже" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "Акции" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "Поставщик" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "Продукт" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "Списки желаний" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "Tagged products" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "Теги товара" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "Категории с метками" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "Теги категорий" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "Название проекта" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "Электронная почта компании" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "Название компании" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "Адрес компании" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "Номер телефона компании" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', иногда его нужно использовать вместо значения пользователя " "хоста." -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "Пользователь узла электронной почты" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "Максимальная сумма для оплаты" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "Минимальная сумма для оплаты" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "Аналитические данные" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "Рекламные данные" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "Конфигурация" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "Код языка" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "Название языка" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "Языковой флаг, если он существует :)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "Получите список поддерживаемых языков" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "Результаты поиска товаров" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "Результаты поиска товаров" @@ -1317,7 +1340,7 @@ msgid "attribute's name" msgstr "Имя атрибута" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "Атрибут" @@ -1329,8 +1352,8 @@ msgstr "Атрибут этого значения" msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "Сопутствующий товар" @@ -1378,7 +1401,7 @@ msgstr "Описание категории" msgid "tags that help describe or group this category" msgstr "теги, которые помогают описать или сгруппировать эту категорию" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "теги категорий" @@ -1426,232 +1449,232 @@ msgstr "Категории" msgid "category this product belongs to" msgstr "Категория, к которой относится этот продукт" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "По желанию ассоциируйте этот продукт с брендом" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "Теги, которые помогают описать или сгруппировать этот продукт" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "Указывает, поставляется ли этот продукт в цифровом виде" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "Является ли продукт цифровым" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "Обеспечьте четкое идентификационное название продукта" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "Название продукта" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "Описание товара" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "Парт. номер для данного товара" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "Парт. номер" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" " поставщика." -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "Информация об аутентификации" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "Определите наценку для товаров, полученных от этого продавца" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "Процент наценки поставщика" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "Имя этого продавца" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "Название поставщика" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "Комментарии пользователей об их опыте использования продукта" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "Комментарии к отзывам" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "Сопутствующий товар для заказа" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "Присвоенный пользователем рейтинг продукта" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "Рейтинг продукции" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "Обратная связь" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "Адрес для выставления счетов, используемый для данного заказа" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "Дополнительный промокод, применяемый к этому заказу" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "Примененный промокод" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "Адрес доставки, используемый для данного заказа" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "Адрес доставки" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "Текущий статус заказа в его жизненном цикле" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "Статус заказа" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "" "JSON-структура уведомлений для отображения пользователям, в административном" " интерфейсе используется табличный вид" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "JSON-представление атрибутов заказа для этого заказа" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "Пользователь, разместивший заказ" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "Пользователь" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "Временная метка, когда заказ был завершен" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "Время покупки" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "Человекочитаемый идентификатор для заказа" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "человекочитаемый идентификатор" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "Заказать" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} не существует: {product_uuid}" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Вы не можете удалить товары из заказа, который не является отложенным." -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует в запросе <{query}>." -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "Промокод не существует" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "Адрес не существует" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1659,205 +1682,205 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" "Неверный способ оплаты: {payment_method} от {available_payment_methods}!" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "" "Внутренние комментарии для администраторов об этом заказанном продукте" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "Внутренние комментарии" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "Уведомления пользователей" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "Родительский приказ" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "Количество продукта" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "указано неверное действие для обратной связи: {action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "Вы не можете отозвать заказ, который не был получен" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "Название тега" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "Отображаемое имя тега" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "Метка продукта" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "тег категории" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "Альтовый текст изображения" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "Изображение продукта" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "Приоритет отображения" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "Изображения продуктов" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "Процентная скидка" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "Время окончания срока действия" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "Время начала действия" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "Временная метка использования" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "Назначенный пользователь" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "Промокод" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "Промокоды" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1865,196 +1888,196 @@ msgstr "" "Следует определить только один тип скидки (сумма или процент), но не оба или" " ни один из них." -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "Промокоды" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "Процент скидки" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "Название акции" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "Описание акции" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "Включенные продукты" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "Продвижение" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "Цена продажи" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "Количество на складе" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "SKU поставщика" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "Цифровой файл" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "Складские состояния" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "Список желаний" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "Скачать" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "Скачать" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "Вы не можете загрузить цифровой актив для незавершенного заказа" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "Документальный фильм" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "Документальные фильмы" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "Неразрешенные" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "Адресная строка для клиента" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "Адресная строка" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "Улица" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "Округ" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "Город" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "Регион" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "Почтовый индекс" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "Страна" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "Адрес" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "Адреса" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" @@ -2065,60 +2088,26 @@ msgstr "" msgid "error during promocode creation: {e!s}" msgstr "Ошибка при создании промокода: {e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "Конфигурация" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "Сохранить" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "Главная" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "По умолчанию" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "Значение" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "Изменен" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "Текущий файл" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "Сброс настроек по умолчанию" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "Подтверждение заказа" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "Логотип" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "Здравствуйте %(order.user.first_name)s," @@ -2126,46 +2115,45 @@ msgstr "Здравствуйте %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "" "Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш" " заказ в работу. Ниже приведены детали вашего заказа:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "Всего" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "Общая цена" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "" "Если у вас возникнут вопросы, обращайтесь в нашу службу поддержки по адресу " "%(config.EMAIL_HOST_USER)s." -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "С наилучшими пожеланиями,
команда %(config.PROJECT_NAME)s" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "Все права защищены" @@ -2181,26 +2169,35 @@ msgstr "Здравствуйте, %(user_first_name)s," #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" msgstr "" "Мы успешно обработали ваш заказ №%(order_uuid)s! Ниже приведены детали " "вашего заказа:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "дополнительная информация" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"дополнительная\n" +" информация" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "Значение" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." msgstr "" "Если у вас возникнут вопросы, обращайтесь в нашу службу поддержки по адресу " "%(contact_email)s." -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "С наилучшими пожеланиями,
команда %(project_name)s" @@ -2209,31 +2206,40 @@ msgstr "С наилучшими пожеланиями,
команда %(proj msgid "key" msgstr "Ключ" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " "детали вашего заказа:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "Цена доставки" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "Ваш заказ будет доставлен по следующему адресу:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "С наилучшими пожеланиями,
команда %(config.PROJECT_NAME)s" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"все права\n" +" защищены" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "Требуются как данные, так и тайм-аут" @@ -2296,7 +2302,7 @@ msgstr "Вы можете загрузить цифровой актив тол msgid "favicon not found" msgstr "favicon не найден" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Ошибка геокодирования: {e}" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index 28ac69c9..25622185 100644 Binary files a/core/locale/zh_Hans/LC_MESSAGES/django.mo and b/core/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.po b/core/locale/zh_Hans/LC_MESSAGES/django.po index fef34127..ecadbdc1 100644 --- a/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -57,17 +57,16 @@ msgstr "激活选定的 %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "停用选定的 %(verbose_name_plural)s" -#: core/admin.py:67 core/graphene/object_types.py:383 -#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:397 +#: core/graphene/object_types.py:404 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "属性值" -#: core/admin.py:68 core/graphene/object_types.py:36 core/models.py:158 +#: core/admin.py:68 core/graphene/object_types.py:37 core/models.py:158 msgid "attribute values" msgstr "属性值" #: core/admin.py:137 -#: core/templates/admin/constance/includes/results_list.html:6 msgid "name" msgstr "名称" @@ -75,23 +74,23 @@ msgstr "名称" msgid "image" msgstr "图片" -#: core/admin.py:157 core/graphene/object_types.py:336 +#: core/admin.py:157 core/graphene/object_types.py:350 msgid "images" msgstr "图片" -#: core/admin.py:164 core/models.py:1212 +#: core/admin.py:164 core/models.py:1218 msgid "stock" msgstr "库存" -#: core/admin.py:165 core/graphene/object_types.py:437 +#: core/admin.py:165 core/graphene/object_types.py:451 msgid "stocks" msgstr "股票" -#: core/admin.py:194 core/graphene/object_types.py:340 -#: core/templates/digital_order_created_email.html:109 -#: core/templates/digital_order_delivered_email.html:109 -#: core/templates/shipped_order_created_email.html:95 -#: core/templates/shipped_order_delivered_email.html:95 +#: core/admin.py:194 core/graphene/object_types.py:354 +#: core/templates/digital_order_created_email.html:111 +#: core/templates/digital_order_delivered_email.html:110 +#: core/templates/shipped_order_created_email.html:109 +#: core/templates/shipped_order_delivered_email.html:109 msgid "price" msgstr "价格" @@ -107,11 +106,11 @@ msgstr "基本信息" msgid "important dates" msgstr "重要日期" -#: core/admin.py:261 core/models.py:881 +#: core/admin.py:261 core/models.py:887 msgid "order product" msgstr "订购产品" -#: core/admin.py:262 core/graphene/object_types.py:262 core/models.py:882 +#: core/admin.py:262 core/graphene/object_types.py:276 core/models.py:888 msgid "order products" msgstr "订购产品" @@ -710,100 +709,108 @@ msgstr "添加或删除订单与产品关系中的反馈信息" msgid "no search term provided." msgstr "未提供搜索条件。" -#: core/filters.py:49 core/filters.py:370 core/filters.py:391 +#: core/filters.py:49 core/filters.py:383 core/filters.py:404 msgid "UUID" msgstr "UUID" -#: core/filters.py:50 core/filters.py:322 core/filters.py:353 +#: core/filters.py:50 core/filters.py:316 core/filters.py:366 msgid "Name" msgstr "名称" -#: core/filters.py:51 core/filters.py:354 +#: core/filters.py:51 core/filters.py:367 msgid "Categories" msgstr "类别" -#: core/filters.py:56 +#: core/filters.py:53 msgid "Categories Slugs" msgstr "类别 蛞蝓" -#: core/filters.py:57 core/filters.py:325 +#: core/filters.py:54 core/filters.py:322 msgid "Tags" msgstr "标签" -#: core/filters.py:58 +#: core/filters.py:55 msgid "Min Price" msgstr "最低价格" -#: core/filters.py:59 +#: core/filters.py:56 msgid "Max Price" msgstr "最高价格" -#: core/filters.py:60 +#: core/filters.py:57 msgid "Is Active" msgstr "处于活动状态" -#: core/filters.py:61 +#: core/filters.py:58 msgid "Brand" msgstr "品牌" -#: core/filters.py:62 +#: core/filters.py:59 msgid "Attributes" msgstr "属性" -#: core/filters.py:63 +#: core/filters.py:60 msgid "Quantity" msgstr "数量" -#: core/filters.py:64 core/filters.py:324 +#: core/filters.py:61 core/filters.py:318 msgid "Slug" msgstr "蛞蝓" -#: core/filters.py:65 +#: core/filters.py:62 msgid "Is Digital" msgstr "是数字" -#: core/filters.py:68 +#: core/filters.py:63 msgid "Include sub-categories" msgstr "包括子类别" -#: core/filters.py:126 +#: core/filters.py:120 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "必须有 category_uuid 才能使用 include_subcategories 标志" -#: core/filters.py:258 +#: core/filters.py:252 msgid "Search (ID, product name or part number)" msgstr "搜索(ID、产品名称或零件编号)" -#: core/filters.py:261 +#: core/filters.py:255 msgid "Bought after (inclusive)" msgstr "之后购买(含)" -#: core/filters.py:262 +#: core/filters.py:256 msgid "Bought before (inclusive)" msgstr "之前购买(含)" -#: core/filters.py:265 core/filters.py:308 core/filters.py:393 +#: core/filters.py:259 core/filters.py:302 core/filters.py:406 msgid "User email" msgstr "用户电子邮件" -#: core/filters.py:266 core/filters.py:309 core/filters.py:372 -#: core/filters.py:392 +#: core/filters.py:260 core/filters.py:303 core/filters.py:385 +#: core/filters.py:405 msgid "User UUID" msgstr "用户 UUID" -#: core/filters.py:267 +#: core/filters.py:261 msgid "Status" msgstr "现状" -#: core/filters.py:268 +#: core/filters.py:262 msgid "Human Readable ID" msgstr "人可读 ID" -#: core/filters.py:323 +#: core/filters.py:317 msgid "Parent" msgstr "家长" -#: core/filters.py:371 +#: core/filters.py:320 +msgid "Whole category(has at least 1 product or not)" +msgstr "整个类别(是否至少有 1 个产品)" + +#: core/filters.py:323 +msgid "Level" +msgstr "级别" + +#: core/filters.py:384 msgid "Product UUID" msgstr "产品 UUID" @@ -858,7 +865,7 @@ msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" #: core/graphene/mutations.py:225 core/graphene/mutations.py:441 -#: core/graphene/mutations.py:475 core/viewsets.py:343 +#: core/graphene/mutations.py:475 core/viewsets.py:341 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" @@ -910,7 +917,7 @@ msgstr "请以字符串形式发送属性,格式如 attr1=value1,attr2=value2" msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: core/graphene/mutations.py:572 core/viewsets.py:238 core/viewsets.py:346 +#: core/graphene/mutations.py:572 core/viewsets.py:236 core/viewsets.py:344 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}不存在" @@ -919,263 +926,279 @@ msgstr "{name} 不存在:{uuid}不存在" msgid "limit must be between 1 and 10" msgstr "限值必须在 1 和 10 之间" -#: core/graphene/mutations.py:629 +#: core/graphene/mutations.py:630 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 工作起来得心应手" -#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 -#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:495 +#: core/graphene/object_types.py:44 core/graphene/object_types.py:259 +#: core/graphene/object_types.py:300 core/models.py:126 core/models.py:496 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:56 +#: core/graphene/object_types.py:57 msgid "grouped attributes" msgstr "分组属性" -#: core/graphene/object_types.py:63 +#: core/graphene/object_types.py:64 msgid "groups of attributes" msgstr "属性组" -#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:226 +#: core/graphene/object_types.py:78 core/graphene/object_types.py:112 +#: core/graphene/object_types.py:142 core/models.py:90 core/models.py:226 msgid "categories" msgstr "类别" -#: core/graphene/object_types.py:83 core/models.py:273 +#: core/graphene/object_types.py:85 core/models.py:273 msgid "brands" msgstr "品牌" -#: core/graphene/object_types.py:106 +#: core/graphene/object_types.py:114 msgid "category image url" msgstr "类别" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/graphene/object_types.py:115 core/graphene/object_types.py:207 #: core/models.py:176 msgid "markup percentage" msgstr "加价百分比" -#: core/graphene/object_types.py:110 +#: core/graphene/object_types.py:118 msgid "which attributes and values can be used for filtering this category." msgstr "哪些属性和值可用于筛选该类别。" -#: core/graphene/object_types.py:114 +#: core/graphene/object_types.py:122 msgid "" "minimum and maximum prices for products in this category, if available." msgstr "该类别产品的最低和最高价格(如有)。" -#: core/graphene/object_types.py:202 core/models.py:410 +#: core/graphene/object_types.py:124 +msgid "tags for this category" +msgstr "此类别的标签" + +#: core/graphene/object_types.py:125 +msgid "products in this category" +msgstr "该类别中的产品" + +#: core/graphene/object_types.py:214 core/models.py:411 msgid "vendors" msgstr "供应商" -#: core/graphene/object_types.py:206 +#: core/graphene/object_types.py:218 msgid "Latitude (Y coordinate)" msgstr "纬度(Y 坐标)" -#: core/graphene/object_types.py:207 +#: core/graphene/object_types.py:219 msgid "Longitude (X coordinate)" msgstr "经度(X 坐标)" -#: core/graphene/object_types.py:233 +#: core/graphene/object_types.py:247 msgid "comment" msgstr "如何" -#: core/graphene/object_types.py:234 +#: core/graphene/object_types.py:248 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "评级值从 1 到 10(包括 10),如果未设置,则为 0。" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:255 msgid "represents feedback from a user." msgstr "代表用户的反馈意见。" -#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 -#: core/models.py:489 +#: core/graphene/object_types.py:260 core/graphene/object_types.py:301 +#: core/models.py:490 msgid "notifications" msgstr "通知" -#: core/graphene/object_types.py:247 +#: core/graphene/object_types.py:261 msgid "download url for this order product if applicable" msgstr "此订单产品的下载网址(如适用" -#: core/graphene/object_types.py:276 +#: core/graphene/object_types.py:290 msgid "a list of order products in this order" msgstr "该订单中的订单产品列表" -#: core/graphene/object_types.py:278 core/models.py:459 +#: core/graphene/object_types.py:292 core/models.py:460 msgid "billing address" msgstr "账单地址" -#: core/graphene/object_types.py:281 +#: core/graphene/object_types.py:295 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "此订单的送货地址,如果与账单地址相同或不适用,请留空" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:297 msgid "total price of this order" msgstr "订单总价" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:298 msgid "total quantity of products in order" msgstr "订单中产品的总数量" -#: core/graphene/object_types.py:285 +#: core/graphene/object_types.py:299 msgid "are all products in the order digital" msgstr "订单中的所有产品都是数字产品吗?" -#: core/graphene/object_types.py:305 core/models.py:523 +#: core/graphene/object_types.py:319 core/models.py:524 msgid "orders" msgstr "订单" -#: core/graphene/object_types.py:321 +#: core/graphene/object_types.py:335 msgid "image url" msgstr "图片 URL" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:342 msgid "product's images" msgstr "产品图片" -#: core/graphene/object_types.py:335 core/models.py:225 core/models.py:283 +#: core/graphene/object_types.py:349 core/models.py:225 core/models.py:283 msgid "category" msgstr "类别" -#: core/graphene/object_types.py:337 core/models.py:446 +#: core/graphene/object_types.py:351 core/models.py:447 msgid "feedbacks" msgstr "反馈意见" -#: core/graphene/object_types.py:338 core/models.py:272 core/models.py:291 +#: core/graphene/object_types.py:352 core/models.py:272 core/models.py:292 msgid "brand" msgstr "品牌" -#: core/graphene/object_types.py:339 core/models.py:80 +#: core/graphene/object_types.py:353 core/models.py:80 msgid "attribute groups" msgstr "属性组" -#: core/graphene/object_types.py:341 -#: core/templates/digital_order_created_email.html:108 -#: core/templates/digital_order_delivered_email.html:108 -#: core/templates/shipped_order_created_email.html:94 -#: core/templates/shipped_order_delivered_email.html:94 +#: core/graphene/object_types.py:355 +#: core/templates/digital_order_created_email.html:110 +#: core/templates/digital_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:108 +#: core/templates/shipped_order_delivered_email.html:108 msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:342 +#: core/graphene/object_types.py:356 msgid "number of feedbacks" msgstr "反馈数量" -#: core/graphene/object_types.py:360 core/models.py:335 +#: core/graphene/object_types.py:374 core/models.py:336 msgid "products" msgstr "产品" -#: core/graphene/object_types.py:408 +#: core/graphene/object_types.py:422 msgid "promocodes" msgstr "促销代码" -#: core/graphene/object_types.py:418 +#: core/graphene/object_types.py:432 msgid "products on sale" msgstr "销售产品" -#: core/graphene/object_types.py:425 core/models.py:1153 +#: core/graphene/object_types.py:439 core/models.py:1159 msgid "promotions" msgstr "促销活动" -#: core/graphene/object_types.py:429 core/models.py:409 +#: core/graphene/object_types.py:443 core/models.py:410 msgid "vendor" msgstr "供应商" -#: core/graphene/object_types.py:430 core/models.py:334 -#: core/templates/digital_order_created_email.html:107 -#: core/templates/digital_order_delivered_email.html:107 -#: core/templates/shipped_order_created_email.html:93 -#: core/templates/shipped_order_delivered_email.html:93 +#: core/graphene/object_types.py:444 core/models.py:335 +#: core/templates/digital_order_created_email.html:109 +#: core/templates/digital_order_delivered_email.html:108 +#: core/templates/shipped_order_created_email.html:107 +#: core/templates/shipped_order_delivered_email.html:107 msgid "product" msgstr "产品" -#: core/graphene/object_types.py:441 core/models.py:1223 +#: core/graphene/object_types.py:455 core/models.py:1229 msgid "wishlisted products" msgstr "心愿单上的产品" -#: core/graphene/object_types.py:447 core/models.py:1240 +#: core/graphene/object_types.py:461 core/models.py:1246 msgid "wishlists" msgstr "愿望清单" -#: core/graphene/object_types.py:451 +#: core/graphene/object_types.py:465 msgid "tagged products" msgstr "标签产品" -#: core/graphene/object_types.py:458 core/models.py:297 core/models.py:959 +#: core/graphene/object_types.py:472 core/models.py:298 core/models.py:965 msgid "product tags" msgstr "产品标签" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:476 +msgid "tagged categories" +msgstr "标签类别" + +#: core/graphene/object_types.py:483 +msgid "categories tags" +msgstr "类别标签" + +#: core/graphene/object_types.py:487 msgid "project name" msgstr "项目名称" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:488 msgid "company email" msgstr "公司电子邮件" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:489 msgid "company name" msgstr "公司名称" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:490 msgid "company address" msgstr "公司地址" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:491 msgid "company phone number" msgstr "公司电话号码" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:492 msgid "email from, sometimes it must be used instead of host user value" msgstr "电子邮件来自\",有时必须使用它来代替主机用户值" -#: core/graphene/object_types.py:468 +#: core/graphene/object_types.py:493 msgid "email host user" msgstr "电子邮件主机用户" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:494 msgid "maximum amount for payment" msgstr "最高付款额" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:495 msgid "minimum amount for payment" msgstr "最低付款额" -#: core/graphene/object_types.py:471 +#: core/graphene/object_types.py:496 msgid "analytics data" msgstr "分析数据" -#: core/graphene/object_types.py:472 +#: core/graphene/object_types.py:497 msgid "advertisement data" msgstr "广告数据" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:500 msgid "company configuration" msgstr "配置" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:504 msgid "language code" msgstr "语言代码" -#: core/graphene/object_types.py:480 +#: core/graphene/object_types.py:505 msgid "language name" msgstr "语言名称" -#: core/graphene/object_types.py:481 +#: core/graphene/object_types.py:506 msgid "language flag, if exists :)" msgstr "语言标志(如果有):)" -#: core/graphene/object_types.py:484 +#: core/graphene/object_types.py:509 msgid "supported languages" msgstr "获取支持的语言列表" -#: core/graphene/object_types.py:512 core/graphene/object_types.py:513 -#: core/graphene/object_types.py:514 +#: core/graphene/object_types.py:537 core/graphene/object_types.py:538 +#: core/graphene/object_types.py:539 msgid "products search results" msgstr "产品搜索结果" -#: core/graphene/object_types.py:515 +#: core/graphene/object_types.py:540 msgid "posts search results" msgstr "产品搜索结果" @@ -1244,7 +1267,7 @@ msgid "attribute's name" msgstr "属性名称" #: core/models.py:125 core/models.py:137 -#: core/templates/digital_order_delivered_email.html:132 +#: core/templates/digital_order_delivered_email.html:135 msgid "attribute" msgstr "属性" @@ -1256,8 +1279,8 @@ msgstr "该值的属性" msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: core/models.py:145 core/models.py:858 core/models.py:1010 -#: core/models.py:1179 +#: core/models.py:145 core/models.py:864 core/models.py:1016 +#: core/models.py:1185 msgid "associated product" msgstr "相关产品" @@ -1305,7 +1328,7 @@ msgstr "类别说明" msgid "tags that help describe or group this category" msgstr "有助于描述或归类该类别的标签" -#: core/models.py:213 core/models.py:984 +#: core/models.py:213 core/models.py:990 msgid "category tags" msgstr "类别标签" @@ -1353,615 +1376,615 @@ msgstr "类别" msgid "category this product belongs to" msgstr "该产品所属类别" -#: core/models.py:290 +#: core/models.py:291 msgid "optionally associate this product with a brand" msgstr "可选择将该产品与某个品牌联系起来" -#: core/models.py:296 +#: core/models.py:297 msgid "tags that help describe or group this product" msgstr "有助于描述或归类该产品的标签" -#: core/models.py:301 +#: core/models.py:302 msgid "indicates whether this product is digitally delivered" msgstr "表示该产品是否以数字方式交付" -#: core/models.py:302 +#: core/models.py:303 msgid "is product digital" msgstr "产品是否数字化" -#: core/models.py:308 +#: core/models.py:309 msgid "provide a clear identifying name for the product" msgstr "为产品提供一个明确的标识名称" -#: core/models.py:309 +#: core/models.py:310 msgid "product name" msgstr "产品名称" -#: core/models.py:314 core/models.py:1141 +#: core/models.py:315 core/models.py:1147 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" -#: core/models.py:315 +#: core/models.py:316 msgid "product description" msgstr "产品说明" -#: core/models.py:322 +#: core/models.py:323 msgid "part number for this product" msgstr "该产品的零件编号" -#: core/models.py:323 +#: core/models.py:324 msgid "part number" msgstr "部件编号" -#: core/models.py:387 +#: core/models.py:388 msgid "stores credentials and endpoints required for vendor communication" msgstr "存储供应商应用程序接口通信所需的凭证和端点" -#: core/models.py:388 +#: core/models.py:389 msgid "authentication info" msgstr "认证信息" -#: core/models.py:393 +#: core/models.py:394 msgid "define the markup for products retrieved from this vendor" msgstr "定义从该供应商获取的产品的标记" -#: core/models.py:394 +#: core/models.py:395 msgid "vendor markup percentage" msgstr "供应商加价百分比" -#: core/models.py:398 +#: core/models.py:399 msgid "name of this vendor" msgstr "供应商名称" -#: core/models.py:399 +#: core/models.py:400 msgid "vendor name" msgstr "供应商名称" -#: core/models.py:422 +#: core/models.py:423 msgid "user-provided comments about their experience with the product" msgstr "用户提供的产品使用体验评论" -#: core/models.py:423 +#: core/models.py:424 msgid "feedback comments" msgstr "反馈意见" -#: core/models.py:430 +#: core/models.py:431 msgid "" "references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" -#: core/models.py:431 +#: core/models.py:432 msgid "related order product" msgstr "相关订购产品" -#: core/models.py:436 +#: core/models.py:437 msgid "user-assigned rating for the product" msgstr "用户对产品的评分" -#: core/models.py:437 +#: core/models.py:438 msgid "product rating" msgstr "产品评级" -#: core/models.py:445 +#: core/models.py:446 msgid "feedback" msgstr "反馈意见" -#: core/models.py:458 +#: core/models.py:459 msgid "the billing address used for this order" msgstr "该订单使用的账单地址" -#: core/models.py:466 +#: core/models.py:467 msgid "optional promo code applied to this order" msgstr "此订单可选择使用促销代码" -#: core/models.py:467 +#: core/models.py:468 msgid "applied promo code" msgstr "应用促销代码" -#: core/models.py:475 +#: core/models.py:476 msgid "the shipping address used for this order" msgstr "该订单使用的送货地址" -#: core/models.py:476 +#: core/models.py:477 msgid "shipping address" msgstr "送货地址" -#: core/models.py:482 +#: core/models.py:483 msgid "current status of the order in its lifecycle" msgstr "订单在其生命周期中的当前状态" -#: core/models.py:483 +#: core/models.py:484 msgid "order status" msgstr "订单状态" -#: core/models.py:488 core/models.py:835 +#: core/models.py:489 core/models.py:841 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" -#: core/models.py:494 +#: core/models.py:495 msgid "json representation of order attributes for this order" msgstr "该订单属性的 JSON 表示形式" -#: core/models.py:500 +#: core/models.py:501 msgid "the user who placed the order" msgstr "下订单的用户" -#: core/models.py:501 +#: core/models.py:502 msgid "user" msgstr "用户" -#: core/models.py:507 +#: core/models.py:508 msgid "the timestamp when the order was finalized" msgstr "订单确定的时间戳" -#: core/models.py:508 +#: core/models.py:509 msgid "buy time" msgstr "购买时间" -#: core/models.py:515 +#: core/models.py:516 msgid "a human-readable identifier for the order" msgstr "订单的人工可读标识符" -#: core/models.py:516 +#: core/models.py:517 msgid "human readable id" msgstr "人类可读 ID" -#: core/models.py:522 +#: core/models.py:523 msgid "order" msgstr "订购" -#: core/models.py:537 +#: core/models.py:538 msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: core/models.py:566 +#: core/models.py:567 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: core/models.py:571 +#: core/models.py:572 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: core/models.py:588 +#: core/models.py:589 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: core/models.py:597 core/models.py:617 core/models.py:641 -#: core/models.py:1250 core/models.py:1262 +#: core/models.py:598 core/models.py:623 core/models.py:647 +#: core/models.py:1256 core/models.py:1268 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} 不存在:{product_uuid} 不存在" -#: core/models.py:601 core/models.py:625 core/models.py:633 +#: core/models.py:607 core/models.py:631 core/models.py:639 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: core/models.py:621 +#: core/models.py:627 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时 {name} 不存在" -#: core/models.py:652 +#: core/models.py:658 msgid "promocode does not exist" msgstr "促销代码不存在" -#: core/models.py:661 +#: core/models.py:667 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: core/models.py:680 +#: core/models.py:686 msgid "address does not exist" msgstr "地址不存在" -#: core/models.py:691 core/models.py:734 +#: core/models.py:697 core/models.py:740 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: core/models.py:694 +#: core/models.py:700 msgid "invalid force value" msgstr "力值无效" -#: core/models.py:699 core/models.py:737 +#: core/models.py:705 core/models.py:743 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: core/models.py:714 +#: core/models.py:720 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: core/models.py:746 +#: core/models.py:752 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: core/models.py:755 +#: core/models.py:761 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "付款方式无效:来自 {available_payment_methods} 的 {payment_method} !" -#: core/models.py:823 +#: core/models.py:829 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: core/models.py:824 +#: core/models.py:830 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: core/models.py:829 +#: core/models.py:835 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: core/models.py:830 +#: core/models.py:836 msgid "internal comments" msgstr "内部意见" -#: core/models.py:836 +#: core/models.py:842 msgid "user notifications" msgstr "用户通知" -#: core/models.py:841 +#: core/models.py:847 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: core/models.py:842 +#: core/models.py:848 msgid "ordered product attributes" msgstr "有序的产品属性" -#: core/models.py:847 +#: core/models.py:853 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: core/models.py:848 +#: core/models.py:854 msgid "parent order" msgstr "父顺序" -#: core/models.py:857 +#: core/models.py:863 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: core/models.py:864 +#: core/models.py:870 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: core/models.py:865 +#: core/models.py:871 msgid "product quantity" msgstr "产品数量" -#: core/models.py:872 +#: core/models.py:878 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: core/models.py:873 +#: core/models.py:879 msgid "product line status" msgstr "产品系列状态" -#: core/models.py:925 +#: core/models.py:931 #, python-brace-format msgid "wrong action specified for feedback: {action}" msgstr "为反馈指定了错误的操作:{action}" -#: core/models.py:933 +#: core/models.py:939 msgid "you cannot feedback an order which is not received" msgstr "您不能反馈未收到的订单" -#: core/models.py:944 core/models.py:969 +#: core/models.py:950 core/models.py:975 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: core/models.py:945 core/models.py:970 +#: core/models.py:951 core/models.py:976 msgid "tag name" msgstr "标签名称" -#: core/models.py:949 core/models.py:974 +#: core/models.py:955 core/models.py:980 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: core/models.py:950 core/models.py:975 +#: core/models.py:956 core/models.py:981 msgid "tag display name" msgstr "标签显示名称" -#: core/models.py:958 +#: core/models.py:964 msgid "product tag" msgstr "产品标签" -#: core/models.py:983 +#: core/models.py:989 msgid "category tag" msgstr "类别标签" -#: core/models.py:992 +#: core/models.py:998 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: core/models.py:993 +#: core/models.py:999 msgid "image alt text" msgstr "图片 alt 文本" -#: core/models.py:996 +#: core/models.py:1002 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: core/models.py:997 core/models.py:1022 +#: core/models.py:1003 core/models.py:1028 msgid "product image" msgstr "产品图片" -#: core/models.py:1003 +#: core/models.py:1009 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: core/models.py:1004 +#: core/models.py:1010 msgid "display priority" msgstr "显示优先级" -#: core/models.py:1009 +#: core/models.py:1015 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: core/models.py:1023 +#: core/models.py:1029 msgid "product images" msgstr "产品图片" -#: core/models.py:1033 +#: core/models.py:1039 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: core/models.py:1034 +#: core/models.py:1040 msgid "promo code identifier" msgstr "促销代码标识符" -#: core/models.py:1041 +#: core/models.py:1047 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: core/models.py:1042 +#: core/models.py:1048 msgid "fixed discount amount" msgstr "固定折扣额" -#: core/models.py:1048 +#: core/models.py:1054 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: core/models.py:1049 +#: core/models.py:1055 msgid "percentage discount" msgstr "折扣百分比" -#: core/models.py:1054 +#: core/models.py:1060 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: core/models.py:1055 +#: core/models.py:1061 msgid "end validity time" msgstr "结束有效时间" -#: core/models.py:1060 +#: core/models.py:1066 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: core/models.py:1061 +#: core/models.py:1067 msgid "start validity time" msgstr "开始有效时间" -#: core/models.py:1066 +#: core/models.py:1072 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: core/models.py:1067 +#: core/models.py:1073 msgid "usage timestamp" msgstr "使用时间戳" -#: core/models.py:1072 +#: core/models.py:1078 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: core/models.py:1073 +#: core/models.py:1079 msgid "assigned user" msgstr "指定用户" -#: core/models.py:1080 +#: core/models.py:1086 msgid "promo code" msgstr "促销代码" -#: core/models.py:1081 +#: core/models.py:1087 msgid "promo codes" msgstr "促销代码" -#: core/models.py:1088 +#: core/models.py:1094 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: core/models.py:1103 +#: core/models.py:1109 msgid "promocode already used" msgstr "促销代码已被使用" -#: core/models.py:1117 +#: core/models.py:1123 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效" -#: core/models.py:1129 +#: core/models.py:1135 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: core/models.py:1130 +#: core/models.py:1136 msgid "discount percentage" msgstr "折扣百分比" -#: core/models.py:1135 +#: core/models.py:1141 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: core/models.py:1136 +#: core/models.py:1142 msgid "promotion name" msgstr "推广名称" -#: core/models.py:1142 +#: core/models.py:1148 msgid "promotion description" msgstr "促销说明" -#: core/models.py:1147 +#: core/models.py:1153 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: core/models.py:1148 +#: core/models.py:1154 msgid "included products" msgstr "包括产品" -#: core/models.py:1152 +#: core/models.py:1158 msgid "promotion" msgstr "促销活动" -#: core/models.py:1167 +#: core/models.py:1173 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: core/models.py:1168 +#: core/models.py:1174 msgid "associated vendor" msgstr "相关供应商" -#: core/models.py:1172 +#: core/models.py:1178 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: core/models.py:1173 +#: core/models.py:1179 msgid "selling price" msgstr "销售价格" -#: core/models.py:1178 +#: core/models.py:1184 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: core/models.py:1186 +#: core/models.py:1192 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: core/models.py:1187 +#: core/models.py:1193 msgid "vendor purchase price" msgstr "供应商购买价格" -#: core/models.py:1191 +#: core/models.py:1197 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: core/models.py:1192 +#: core/models.py:1198 msgid "quantity in stock" msgstr "库存数量" -#: core/models.py:1196 +#: core/models.py:1202 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: core/models.py:1197 +#: core/models.py:1203 msgid "vendor sku" msgstr "供应商 SKU" -#: core/models.py:1203 +#: core/models.py:1209 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: core/models.py:1204 +#: core/models.py:1210 msgid "digital file" msgstr "数字文件" -#: core/models.py:1213 +#: core/models.py:1219 msgid "stock entries" msgstr "库存条目" -#: core/models.py:1222 +#: core/models.py:1228 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: core/models.py:1230 +#: core/models.py:1236 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: core/models.py:1231 +#: core/models.py:1237 msgid "wishlist owner" msgstr "心愿单所有者" -#: core/models.py:1239 +#: core/models.py:1245 msgid "wishlist" msgstr "愿望清单" -#: core/models.py:1284 +#: core/models.py:1290 msgid "download" msgstr "下载" -#: core/models.py:1285 +#: core/models.py:1291 msgid "downloads" msgstr "下载" -#: core/models.py:1293 +#: core/models.py:1299 msgid "you can not download a digital asset for a non-finished order" msgstr "您无法下载未完成订单的数字资产" -#: core/models.py:1306 +#: core/models.py:1313 msgid "documentary" msgstr "纪录片" -#: core/models.py:1307 +#: core/models.py:1314 msgid "documentaries" msgstr "纪录片" -#: core/models.py:1317 +#: core/models.py:1324 msgid "unresolved" msgstr "未解决" -#: core/models.py:1326 +#: core/models.py:1333 msgid "address line for the customer" msgstr "客户地址栏" -#: core/models.py:1327 +#: core/models.py:1334 msgid "address line" msgstr "地址栏" -#: core/models.py:1329 +#: core/models.py:1336 msgid "street" msgstr "街道" -#: core/models.py:1330 +#: core/models.py:1337 msgid "district" msgstr "地区" -#: core/models.py:1331 +#: core/models.py:1338 msgid "city" msgstr "城市" -#: core/models.py:1332 +#: core/models.py:1339 msgid "region" msgstr "地区" -#: core/models.py:1333 +#: core/models.py:1340 msgid "postal code" msgstr "邮政编码" -#: core/models.py:1334 +#: core/models.py:1341 msgid "country" msgstr "国家" -#: core/models.py:1337 +#: core/models.py:1344 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: core/models.py:1340 +#: core/models.py:1348 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: core/models.py:1342 +#: core/models.py:1352 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: core/models.py:1349 +#: core/models.py:1360 msgid "address" msgstr "地址" -#: core/models.py:1350 +#: core/models.py:1361 msgid "addresses" msgstr "地址" -#: core/serializers/utility.py:77 +#: core/serializers/utility.py:87 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "您必须提供评论、评级和订单产品 uuid 才能添加反馈。" @@ -1970,60 +1993,26 @@ msgstr "您必须提供评论、评级和订单产品 uuid 才能添加反馈。 msgid "error during promocode creation: {e!s}" msgstr "创建促销代码时出错:{e!s}" -#: core/templates/admin/constance/change_list.html:50 -msgid "configuration" -msgstr "配置" - -#: core/templates/admin/constance/change_list.html:55 -msgid "save" -msgstr "节省" - -#: core/templates/admin/constance/change_list.html:64 -msgid "home" -msgstr "首页" - -#: core/templates/admin/constance/includes/results_list.html:7 -msgid "default" -msgstr "默认值" - -#: core/templates/admin/constance/includes/results_list.html:8 -#: core/templates/digital_order_delivered_email.html:135 -#: core/templates/json_table_widget.html:6 -msgid "value" -msgstr "价值" - -#: core/templates/admin/constance/includes/results_list.html:9 -msgid "is modified" -msgstr "是否修改" - -#: core/templates/admin/constance/includes/results_list.html:26 -msgid "current file" -msgstr "当前文件" - -#: core/templates/admin/constance/includes/results_list.html:44 -msgid "reset to default" -msgstr "重置为默认值" - #: core/templates/digital_order_created_email.html:7 #: core/templates/digital_order_created_email.html:100 #: core/templates/digital_order_delivered_email.html:7 #: core/templates/shipped_order_created_email.html:7 -#: core/templates/shipped_order_created_email.html:86 +#: core/templates/shipped_order_created_email.html:99 #: core/templates/shipped_order_delivered_email.html:7 -#: core/templates/shipped_order_delivered_email.html:86 +#: core/templates/shipped_order_delivered_email.html:99 msgid "order confirmation" msgstr "订单确认" #: core/templates/digital_order_created_email.html:95 #: core/templates/digital_order_delivered_email.html:95 -#: core/templates/shipped_order_created_email.html:81 -#: core/templates/shipped_order_delivered_email.html:81 +#: core/templates/shipped_order_created_email.html:94 +#: core/templates/shipped_order_delivered_email.html:94 msgid "logo" msgstr "标志" #: core/templates/digital_order_created_email.html:101 -#: core/templates/shipped_order_created_email.html:87 -#: core/templates/shipped_order_delivered_email.html:87 +#: core/templates/shipped_order_created_email.html:100 +#: core/templates/shipped_order_delivered_email.html:100 #, python-format msgid "hello %(order.user.first_name)s," msgstr "您好 %(order.user.first_name)s、" @@ -2031,42 +2020,41 @@ msgstr "您好 %(order.user.first_name)s、" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that\n" +" we have taken your order into work. below are the details of your\n" +" order:" msgstr "感谢您的订单 #%(order.pk)s!我们很高兴地通知您,我们已将您的订单付诸实施。以下是您的订单详情:" -#: core/templates/digital_order_created_email.html:110 -#: core/templates/digital_order_delivered_email.html:110 -#: core/templates/shipped_order_created_email.html:96 -#: core/templates/shipped_order_delivered_email.html:96 +#: core/templates/digital_order_created_email.html:112 +#: core/templates/digital_order_delivered_email.html:111 +#: core/templates/shipped_order_created_email.html:110 +#: core/templates/shipped_order_delivered_email.html:110 msgid "total" msgstr "总计" -#: core/templates/digital_order_created_email.html:123 -#: core/templates/digital_order_delivered_email.html:155 -#: core/templates/shipped_order_created_email.html:113 -#: core/templates/shipped_order_delivered_email.html:113 +#: core/templates/digital_order_created_email.html:125 +#: core/templates/digital_order_delivered_email.html:158 +#: core/templates/shipped_order_created_email.html:127 +#: core/templates/shipped_order_delivered_email.html:127 msgid "total price" msgstr "总价" -#: core/templates/digital_order_created_email.html:129 -#: core/templates/shipped_order_created_email.html:126 -#: core/templates/shipped_order_delivered_email.html:126 +#: core/templates/digital_order_created_email.html:131 +#: core/templates/shipped_order_created_email.html:140 +#: core/templates/shipped_order_delivered_email.html:140 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(config.EMAIL_HOST_USER)s." +"if you have any questions, feel free to contact our support at\n" +" %(config.EMAIL_HOST_USER)s." msgstr "如果您有任何问题,请随时通过 %(config.EMAIL_HOST_USER)s 联系我们的支持人员。" -#: core/templates/digital_order_created_email.html:130 +#: core/templates/digital_order_created_email.html:133 #, python-format msgid "best regards,
the %(config.PROJECT_NAME)s team" msgstr "致以最诚挚的问候,
%(config.PROJECT_NAME)s团队" -#: core/templates/digital_order_created_email.html:136 -#: core/templates/digital_order_delivered_email.html:168 -#: core/templates/shipped_order_created_email.html:132 -#: core/templates/shipped_order_delivered_email.html:132 +#: core/templates/digital_order_created_email.html:139 +#: core/templates/digital_order_delivered_email.html:172 msgid "all rights reserved" msgstr "保留所有权利" @@ -2082,22 +2070,31 @@ msgstr "您好 %(user_first_name)s、" #: core/templates/digital_order_delivered_email.html:102 #, python-format msgid "" -"we have successfully processed your order №%(order_uuid)s! below are the " -"details of your order:" -msgstr "我们已成功处理您的订单№%(order_uuid)s!以下是您的订单详情:" +"we have successfully processed your order №%(order_uuid)s! below are the\n" +" details of your order:" +msgstr "我们已成功处理了您的订单 №%(order_uuid)s_!以下是您的订单详情:" -#: core/templates/digital_order_delivered_email.html:127 -msgid "additional information" -msgstr "其他信息" +#: core/templates/digital_order_delivered_email.html:129 +msgid "" +"additional\n" +" information" +msgstr "" +"其他\n" +" 附加信息" -#: core/templates/digital_order_delivered_email.html:161 +#: core/templates/digital_order_delivered_email.html:138 +#: core/templates/json_table_widget.html:6 +msgid "value" +msgstr "价值" + +#: core/templates/digital_order_delivered_email.html:164 #, python-format msgid "" -"if you have any questions, feel free to contact our support at " -"%(contact_email)s." -msgstr "如果您有任何问题,请随时通过 %(contact_email)s与我们的支持人员联系。" +"if you have any questions, feel free to contact our support at\n" +" %(contact_email)s." +msgstr "如果您有任何问题,请随时拨打 %(contact_email)s 联系我们的支持人员。" -#: core/templates/digital_order_delivered_email.html:162 +#: core/templates/digital_order_delivered_email.html:166 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "致以最诚挚的问候,
%(project_name)s团队" @@ -2106,29 +2103,38 @@ msgstr "致以最诚挚的问候,
%(project_name)s团队" msgid "key" msgstr "钥匙" -#: core/templates/shipped_order_created_email.html:88 -#: core/templates/shipped_order_delivered_email.html:88 +#: core/templates/shipped_order_created_email.html:101 +#: core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are\n" +" the details of your order:" msgstr "感谢您的订购!我们很高兴确认您的购买。以下是您的订单详情:" -#: core/templates/shipped_order_created_email.html:109 -#: core/templates/shipped_order_delivered_email.html:109 +#: core/templates/shipped_order_created_email.html:123 +#: core/templates/shipped_order_delivered_email.html:123 msgid "shipping price" msgstr "运输价格" -#: core/templates/shipped_order_created_email.html:119 -#: core/templates/shipped_order_delivered_email.html:119 +#: core/templates/shipped_order_created_email.html:133 +#: core/templates/shipped_order_delivered_email.html:133 msgid "your order will be delivered to the following address:" msgstr "您的订单将送至以下地址:" -#: core/templates/shipped_order_created_email.html:127 -#: core/templates/shipped_order_delivered_email.html:127 +#: core/templates/shipped_order_created_email.html:142 +#: core/templates/shipped_order_delivered_email.html:142 #, python-format msgid "best regards,
The %(config.PROJECT_NAME)s team" msgstr "谨致问候,
%(config.PROJECT_NAME)s团队" +#: core/templates/shipped_order_created_email.html:147 +#: core/templates/shipped_order_delivered_email.html:147 +msgid "" +"all rights\n" +" reserved" +msgstr "" +"版权所有\n" +" 保留所有权利" + #: core/utils/caching.py:41 msgid "both data and timeout are required" msgstr "需要数据和超时" @@ -2187,7 +2193,7 @@ msgstr "您只能下载一次数字资产" msgid "favicon not found" msgstr "未找到 favicon" -#: core/viewsets.py:686 +#: core/viewsets.py:684 #, python-brace-format msgid "Geocoding error: {e}" msgstr "地理编码错误:{e}" diff --git a/core/management/commands/await_services.py b/core/management/commands/await_services.py index a841d623..1eff88df 100644 --- a/core/management/commands/await_services.py +++ b/core/management/commands/await_services.py @@ -50,7 +50,7 @@ class Command(BaseCommand): time.sleep(1) self.stdout.write(self.style.SUCCESS("Redis available!")) - # Create and start threads for database and Redis + # Create and start threads for the database and Redis db_thread = threading.Thread(target=wait_for_db) redis_thread = threading.Thread(target=wait_for_redis) diff --git a/core/management/commands/check_translated.py b/core/management/commands/check_translated.py index 08acca8e..d32dcc14 100644 --- a/core/management/commands/check_translated.py +++ b/core/management/commands/check_translated.py @@ -9,14 +9,14 @@ from django.core.management.base import BaseCommand, CommandError # Patterns to identify placeholders PLACEHOLDER_REGEXES = [ - re.compile(r"\{[^}]+\}"), # {name}, {type(instance)!s}, etc. + re.compile(r"\{[^}]+"), # {name}, {type(instance)!s}, etc. re.compile(r"%\([^)]+\)[sd]"), # %(verbose_name)s, %(count)d ] def extract_placeholders(text: str) -> set[str]: """ - Extract all placeholders from given text. + Extract all placeholders from the given text. """ phs: list[str] = [] for rx in PLACEHOLDER_REGEXES: @@ -29,33 +29,33 @@ def load_po_sanitized(path: str) -> polib.POFile: Load a .po file via polib, sanitizing on parse errors. Raises CommandError if still unparsable. """ - try: + with contextlib.suppress(Exception): return polib.pofile(path) - except Exception: - # read raw text - try: - with open(path, encoding="utf-8") as f: - text = f.read() - except OSError as e: - raise CommandError(f"{path}: cannot read file ({e})") - # fix fuzzy flags and empty header entries - text = re.sub(r"^#,(?!\s)", "#, ", text, flags=re.MULTILINE) - parts = text.split("\n\n", 1) - header = parts[0] - rest = parts[1] if len(parts) > 1 else "" - rest = re.sub(r"^msgid \"\"\s*\nmsgstr \"\"\s*\n?", "", rest, flags=re.MULTILINE) - sanitized = header + "\n\n" + rest - tmp = NamedTemporaryFile(mode="w+", delete=False, suffix=".po", encoding="utf-8") # noqa: SIM115 - try: - tmp.write(sanitized) - tmp.flush() - tmp.close() - return polib.pofile(tmp.name) - except Exception as e: - raise CommandError(f"{path}: syntax error after sanitization ({e})") - finally: - with contextlib.suppress(OSError): - os.unlink(tmp.name) + + # read raw text + try: + with open(path, encoding="utf-8") as f: + text = f.read() + except OSError as e: + raise CommandError(f"{path}: cannot read file ({e})") + # fix fuzzy flags and empty header entries + text = re.sub(r"^#,(?!\s)", "#, ", text, flags=re.MULTILINE) + parts = text.split("\n\n", 1) + header = parts[0] + rest = parts[1] if len(parts) > 1 else "" + rest = re.sub(r"^msgid \"\"\s*\nmsgstr \"\"\s*\n?", "", rest, flags=re.MULTILINE) + sanitized = header + "\n\n" + rest + tmp = NamedTemporaryFile(mode="w+", delete=False, suffix=".po", encoding="utf-8") # noqa: SIM115 + try: + tmp.write(sanitized) + tmp.flush() + tmp.close() + return polib.pofile(tmp.name) + except Exception as e: + raise CommandError(f"{path}: syntax error after sanitization ({e})") + finally: + with contextlib.suppress(OSError): + os.unlink(tmp.name) class Command(BaseCommand): diff --git a/core/management/commands/deepl_translate.py b/core/management/commands/deepl_translate.py index 78b5e95a..a16e7c3c 100644 --- a/core/management/commands/deepl_translate.py +++ b/core/management/commands/deepl_translate.py @@ -145,6 +145,9 @@ class Command(BaseCommand): self.stdout.write(f"• {app_conf.label}: loading English PO…") en_po = load_po_sanitized(en_path) + if not en_po: + raise CommandError(f"Failed to load en_GB PO for {app_conf.label}") + missing = [e for e in en_po if e.msgid and not e.msgstr and not e.obsolete] if missing: self.stdout.write(self.style.NOTICE(f"⚠️ {len(missing)} missing in en_GB")) @@ -176,17 +179,17 @@ class Command(BaseCommand): new_po.metadata = en_po.metadata.copy() new_po.metadata["Language"] = target_lang - for e in entries: - prev = old_tgt.find(e.msgid) if old_tgt else None + for entry in entries: + prev = old_tgt.find(entry.msgid) if old_tgt else None new_po.append( polib.POEntry( - msgid=e.msgid, + msgid=entry.msgid, msgstr=prev.msgstr if prev and prev.msgstr else "", - msgctxt=e.msgctxt, - comment=e.comment, - tcomment=e.tcomment, - occurrences=e.occurrences, - flags=e.flags, + msgctxt=entry.msgctxt, + comment=entry.comment, + tcomment=entry.tcomment, + occurrences=entry.occurrences, + flags=entry.flags, ) ) diff --git a/core/managers.py b/core/managers.py index e329565b..e1978732 100644 --- a/core/managers.py +++ b/core/managers.py @@ -9,11 +9,11 @@ logger = logging.getLogger("django.request") class AddressManager(models.Manager): - def create(self, raw_data: str, **kwargs): + def create(self, raw_data: str, **kwargs): # type: ignore if not raw_data: raise ValueError("'raw_data' (address string) must be provided.") - params = { + params: dict[str, str | int] = { "format": "json", "addressdetails": 1, "q": raw_data, diff --git a/core/models.py b/core/models.py index 981bf62a..9463d62e 100644 --- a/core/models.py +++ b/core/models.py @@ -56,7 +56,7 @@ logger = logging.getLogger(__name__) class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): is_publicly_visible = True - parent = ForeignKey( + parent: ForeignKey = ForeignKey( "self", on_delete=CASCADE, null=True, @@ -65,7 +65,7 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): help_text=_("parent of this group"), verbose_name=_("parent attribute group"), ) - name = CharField( + name: CharField = CharField( max_length=255, verbose_name=_("attribute group's name"), help_text=_("attribute group's name"), @@ -83,21 +83,21 @@ class AttributeGroup(ExportModelOperationsMixin("attribute_group"), NiceModel): class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): is_publicly_visible = True - categories = ManyToManyField( + categories: ManyToManyField = ManyToManyField( "core.Category", related_name="attributes", help_text=_("category of this attribute"), verbose_name=_("categories"), ) - group = ForeignKey( + group: ForeignKey = ForeignKey( "core.AttributeGroup", on_delete=CASCADE, related_name="attributes", help_text=_("group of this attribute"), verbose_name=_("attribute group"), ) - value_type = CharField( + value_type: CharField = CharField( max_length=50, choices=[ ("string", _("string")), @@ -111,7 +111,7 @@ class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): verbose_name=_("value type"), ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("name of this attribute"), verbose_name=_("attribute's name"), @@ -129,14 +129,14 @@ class Attribute(ExportModelOperationsMixin("attribute"), NiceModel): class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel): is_publicly_visible = True - attribute = ForeignKey( + attribute: ForeignKey = ForeignKey( "core.Attribute", on_delete=CASCADE, related_name="values", help_text=_("attribute of this value"), verbose_name=_("attribute"), ) - product = ForeignKey( + product: ForeignKey = ForeignKey( "core.Product", on_delete=CASCADE, blank=False, @@ -145,7 +145,7 @@ class AttributeValue(ExportModelOperationsMixin("attribute_value"), NiceModel): verbose_name=_("associated product"), related_name="attributes", ) - value = TextField( + value: TextField = TextField( verbose_name=_("attribute value"), help_text=_("the specific value for this attribute"), ) @@ -169,7 +169,7 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): validators=[validate_category_image_dimensions], verbose_name=_("category image"), ) - markup_percent = IntegerField( + markup_percent: IntegerField = IntegerField( default=0, validators=[MinValueValidator(0), MaxValueValidator(100)], help_text=_("define a markup percentage for products in this category"), @@ -185,28 +185,28 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): verbose_name=_("parent category"), ) - name = CharField( + name: CharField = CharField( max_length=255, verbose_name=_("category name"), help_text=_("provide a name for this category"), unique=True, ) - description = TextField( # noqa: DJ001 + description: TextField = TextField( blank=True, null=True, help_text=_("add a detailed description for this category"), verbose_name=_("category description"), ) - slug = AutoSlugField( + slug: AutoSlugField = AutoSlugField( populate_from=("uuid", "name"), allow_unicode=True, unique=True, editable=False, null=True, ) - tags = ManyToManyField( + tags: ManyToManyField = ManyToManyField( "core.CategoryTag", blank=True, help_text=_("tags that help describe or group this category"), @@ -230,7 +230,7 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel): class Brand(ExportModelOperationsMixin("brand"), NiceModel): is_publicly_visible = True - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("name of this brand"), verbose_name=_("brand name"), @@ -252,13 +252,13 @@ class Brand(ExportModelOperationsMixin("brand"), NiceModel): validators=[validate_category_image_dimensions], verbose_name=_("brand big image"), ) - description = TextField( # noqa: DJ001 + description: TextField = TextField( blank=True, null=True, help_text=_("add a detailed description of the brand"), verbose_name=_("brand description"), ) - categories = ManyToManyField( + categories: ManyToManyField = ManyToManyField( "core.Category", blank=True, help_text=_("optional categories that this brand is associated with"), @@ -276,14 +276,14 @@ class Brand(ExportModelOperationsMixin("brand"), NiceModel): class Product(ExportModelOperationsMixin("product"), NiceModel): is_publicly_visible = True - category = ForeignKey( + category: ForeignKey = ForeignKey( "core.Category", on_delete=CASCADE, help_text=_("category this product belongs to"), verbose_name=_("category"), related_name="products", ) - brand = ForeignKey( + brand: ForeignKey = ForeignKey( "core.Brand", on_delete=CASCADE, blank=True, @@ -291,31 +291,31 @@ class Product(ExportModelOperationsMixin("product"), NiceModel): help_text=_("optionally associate this product with a brand"), verbose_name=_("brand"), ) - tags = ManyToManyField( + tags: ManyToManyField = ManyToManyField( "core.ProductTag", blank=True, help_text=_("tags that help describe or group this product"), verbose_name=_("product tags"), ) - is_digital = BooleanField( + is_digital: BooleanField = BooleanField( default=False, help_text=_("indicates whether this product is digitally delivered"), verbose_name=_("is product digital"), blank=False, null=False, ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("provide a clear identifying name for the product"), verbose_name=_("product name"), ) - description = TextField( # noqa: DJ001 + description: TextField = TextField( blank=True, null=True, help_text=_("add a detailed description of the product"), verbose_name=_("product description"), ) - partnumber = CharField( # noqa: DJ001 + partnumber: CharField = CharField( unique=True, default=None, blank=False, @@ -388,13 +388,13 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): help_text=_("stores credentials and endpoints required for vendor communication"), verbose_name=_("authentication info"), ) - markup_percent = IntegerField( + markup_percent: IntegerField = IntegerField( default=0, validators=[MinValueValidator(0), MaxValueValidator(100)], help_text=_("define the markup for products retrieved from this vendor"), verbose_name=_("vendor markup percentage"), ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("name of this vendor"), verbose_name=_("vendor name"), @@ -417,13 +417,13 @@ class Vendor(ExportModelOperationsMixin("vendor"), NiceModel): class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): is_publicly_visible = True - comment = TextField( # noqa: DJ001 + comment: TextField = TextField( blank=True, null=True, help_text=_("user-provided comments about their experience with the product"), verbose_name=_("feedback comments"), ) - order_product = OneToOneField( + order_product: OneToOneField = OneToOneField( "core.OrderProduct", on_delete=CASCADE, blank=False, @@ -431,7 +431,7 @@ class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): help_text=_("references the specific product in an order that this feedback is about"), verbose_name=_("related order product"), ) - rating = FloatField( + rating: FloatField = FloatField( blank=True, null=True, help_text=_("user-assigned rating for the product"), @@ -450,7 +450,7 @@ class Feedback(ExportModelOperationsMixin("feedback"), NiceModel): class Order(ExportModelOperationsMixin("order"), NiceModel): is_publicly_visible = False - billing_address = ForeignKey( + billing_address: ForeignKey = ForeignKey( "core.Address", on_delete=CASCADE, blank=True, @@ -459,7 +459,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): help_text=_("the billing address used for this order"), verbose_name=_("billing address"), ) - promo_code = ForeignKey( + promo_code: ForeignKey = ForeignKey( "core.PromoCode", on_delete=PROTECT, blank=True, @@ -467,7 +467,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): help_text=_("optional promo code applied to this order"), verbose_name=_("applied promo code"), ) - shipping_address = ForeignKey( + shipping_address: ForeignKey = ForeignKey( "core.Address", on_delete=CASCADE, blank=True, @@ -476,7 +476,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): help_text=_("the shipping address used for this order"), verbose_name=_("shipping address"), ) - status = CharField( + status: CharField = CharField( default="PENDING", max_length=64, choices=ORDER_STATUS_CHOICES, @@ -495,7 +495,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): help_text=_("json representation of order attributes for this order"), verbose_name=_("attributes"), ) - user = ForeignKey( + user: ForeignKey = ForeignKey( "vibes_auth.User", on_delete=CASCADE, help_text=_("the user who placed the order"), @@ -504,14 +504,14 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): blank=True, null=True, ) - buy_time = DateTimeField( + buy_time: DateTimeField = DateTimeField( help_text=_("the timestamp when the order was finalized"), verbose_name=_("buy time"), default=None, null=True, blank=True, ) - human_readable_id = CharField( + human_readable_id: CharField = CharField( max_length=8, help_text=_("a human-readable identifier for the order"), verbose_name=_("human readable id"), @@ -524,7 +524,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): verbose_name_plural = _("orders") def __str__(self) -> str: - return f"#{self.pk} for {self.user.email if self.user else 'unregistered user'}" + return f"#{self.pk} for {self.user.email if self.user else 'unregistered user'}" # type: ignore @property def is_business(self) -> bool: @@ -576,7 +576,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): promotions = Promotion.objects.filter(is_active=True, products__in=[product]).order_by("discount_percent") if promotions.exists(): - buy_price -= round(product.price * (promotions.first().discount_percent / 100), 2) + buy_price -= round(product.price * (promotions.first().discount_percent / 100), 2) # type: ignore order_product, is_created = OrderProduct.objects.get_or_create( product=product, @@ -597,7 +597,12 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): name = "Product" raise Http404(_(f"{name} does not exist: {product_uuid}")) - def remove_product(self, product_uuid: str | None = None, attributes: dict = dict, zero_quantity: bool = False): + def remove_product( + self, product_uuid: str | None = None, attributes: dict | None = None, zero_quantity: bool = False + ): + if attributes is None: + attributes = {} + if self.status not in ["PENDING", "MOMENTAL"]: raise ValueError(_("you cannot remove products from an order that is not a pending one")) try: @@ -818,31 +823,31 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): is_publicly_visible = False - buy_price = FloatField( + buy_price: FloatField = FloatField( blank=True, null=True, help_text=_("the price paid by the customer for this product at purchase time"), verbose_name=_("purchase price at order time"), ) - comments = TextField( # noqa: DJ001 + comments: TextField = TextField( blank=True, null=True, help_text=_("internal comments for admins about this ordered product"), verbose_name=_("internal comments"), ) - notifications = JSONField( + notifications: JSONField = JSONField( blank=True, null=True, help_text=_("json structure of notifications to display to users"), verbose_name=_("user notifications"), ) - attributes = JSONField( + attributes: JSONField = JSONField( blank=True, null=True, help_text=_("json representation of this item's attributes"), verbose_name=_("ordered product attributes"), ) - order = ForeignKey( + order: ForeignKey = ForeignKey( "core.Order", on_delete=CASCADE, help_text=_("reference to the parent order that contains this product"), @@ -850,7 +855,7 @@ class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): related_name="order_products", null=True, ) - product = ForeignKey( + product: ForeignKey = ForeignKey( "core.Product", on_delete=PROTECT, blank=True, @@ -858,14 +863,14 @@ class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): help_text=_("the specific product associated with this order line"), verbose_name=_("associated product"), ) - quantity = PositiveIntegerField( + quantity: PositiveIntegerField = PositiveIntegerField( blank=False, null=False, default=1, help_text=_("quantity of this specific product in the order"), verbose_name=_("product quantity"), ) - status = CharField( + status: CharField = CharField( max_length=128, blank=False, null=False, @@ -921,7 +926,7 @@ class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): return self.download.url return "" - def do_feedback(self, rating: int = 10, comment: str = "", action: str = "add"): + def do_feedback(self, rating: int = 10, comment: str = "", action: str = "add") -> None: if action not in ["add", "remove"]: raise ValueError(_(f"wrong action specified for feedback: {action}")) if action == "remove" and self.feedback: @@ -938,14 +943,14 @@ class OrderProduct(ExportModelOperationsMixin("order_product"), NiceModel): class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): is_publicly_visible = True - tag_name = CharField( + tag_name: CharField = CharField( blank=False, null=False, max_length=255, help_text=_("internal tag identifier for the product tag"), verbose_name=_("tag name"), ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("user-friendly name for the product tag"), verbose_name=_("tag display name"), @@ -963,14 +968,14 @@ class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel): class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): is_publicly_visible = True - tag_name = CharField( + tag_name: CharField = CharField( blank=False, null=False, max_length=255, help_text=_("internal tag identifier for the product tag"), verbose_name=_("tag name"), ) - name = CharField( + name: CharField = CharField( max_length=255, help_text=_("user-friendly name for the product tag"), verbose_name=_("tag display name"), @@ -988,7 +993,7 @@ class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel): class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): is_publicly_visible = True - alt = CharField( + alt: CharField = CharField( max_length=255, help_text=_("provide alternative text for the image for accessibility"), verbose_name=_("image alt text"), @@ -998,13 +1003,13 @@ class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): verbose_name=_("product image"), upload_to=get_product_uuid_as_path, ) - priority = IntegerField( + priority: IntegerField = IntegerField( default=1, validators=[MinValueValidator(1)], help_text=_("determines the order in which images are displayed"), verbose_name=_("display priority"), ) - product = ForeignKey( + product: ForeignKey = ForeignKey( "core.Product", on_delete=CASCADE, help_text=_("the product that this image represents"), @@ -1027,7 +1032,7 @@ class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel): class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): is_publicly_visible = False - code = CharField( + code: CharField = CharField( max_length=20, unique=True, default=get_random_code, @@ -1042,7 +1047,7 @@ class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): help_text=_("fixed discount amount applied if percent is not used"), verbose_name=_("fixed discount amount"), ) - discount_percent = IntegerField( + discount_percent: IntegerField = IntegerField( validators=[MinValueValidator(1), MaxValueValidator(100)], blank=True, null=True, @@ -1067,7 +1072,7 @@ class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): help_text=_("timestamp when the promocode was used, blank if not used yet"), verbose_name=_("usage timestamp"), ) - user = ForeignKey( + user: ForeignKey = ForeignKey( "vibes_auth.User", on_delete=CASCADE, help_text=_("user assigned to this promocode if applicable"), @@ -1125,12 +1130,12 @@ class PromoCode(ExportModelOperationsMixin("promocode"), NiceModel): class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): is_publicly_visible = True - discount_percent = IntegerField( + discount_percent: IntegerField = IntegerField( validators=[MinValueValidator(1), MaxValueValidator(100)], help_text=_("percentage discount for the selected products"), verbose_name=_("discount percentage"), ) - name = CharField( + name: CharField = CharField( max_length=256, unique=True, help_text=_("provide a unique name for this promotion"), @@ -1142,7 +1147,7 @@ class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): help_text=_("add a detailed description of the product"), verbose_name=_("promotion description"), ) - products = ManyToManyField( + products: ManyToManyField = ManyToManyField( "core.Product", blank=True, help_text=_("select which products are included in this promotion"), @@ -1162,7 +1167,7 @@ class Promotion(ExportModelOperationsMixin("promotion"), NiceModel): class Stock(ExportModelOperationsMixin("stock"), NiceModel): is_publicly_visible = False - vendor = ForeignKey( + vendor: ForeignKey = ForeignKey( "core.Vendor", on_delete=CASCADE, help_text=_("the vendor supplying this product stock"), @@ -1173,7 +1178,7 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): help_text=_("final price to the customer after markups"), verbose_name=_("selling price"), ) - product = ForeignKey( + product: ForeignKey = ForeignKey( "core.Product", on_delete=CASCADE, help_text=_("the product associated with this stock entry"), @@ -1187,12 +1192,12 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): help_text=_("the price paid to the vendor for this product"), verbose_name=_("vendor purchase price"), ) - quantity = IntegerField( + quantity: IntegerField = IntegerField( default=0, help_text=_("available quantity of the product in stock"), verbose_name=_("quantity in stock"), ) - sku = CharField( + sku: CharField = CharField( max_length=255, help_text=_("vendor-assigned SKU for identifying the product"), verbose_name=_("vendor sku"), @@ -1217,13 +1222,13 @@ class Stock(ExportModelOperationsMixin("stock"), NiceModel): class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): is_publicly_visible = False - products = ManyToManyField( + products: ManyToManyField = ManyToManyField( "core.Product", blank=True, help_text=_("products that the user has marked as wanted"), verbose_name=_("wishlisted products"), ) - user = OneToOneField( + user: OneToOneField = OneToOneField( "vibes_auth.User", on_delete=CASCADE, blank=True, @@ -1278,8 +1283,8 @@ class Wishlist(ExportModelOperationsMixin("wishlist"), NiceModel): class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceModel): is_publicly_visible = False - order_product = OneToOneField(to=OrderProduct, on_delete=CASCADE, related_name="download") - num_downloads = IntegerField(default=0) + order_product: OneToOneField = OneToOneField(to=OrderProduct, on_delete=CASCADE, related_name="download") + num_downloads: IntegerField = IntegerField(default=0) class Meta: verbose_name = _("download") @@ -1293,13 +1298,15 @@ class DigitalAssetDownload(ExportModelOperationsMixin("attribute_group"), NiceMo if self.order_product.status != "FINISHED": raise ValueError(_("you can not download a digital asset for a non-finished order")) - return f"https://api.{config.BASE_URL}/download/{urlsafe_base64_encode(force_bytes(self.order_product.uuid))}" + return ( + f"https://api.{config.BASE_DOMAIN}/download/{urlsafe_base64_encode(force_bytes(self.order_product.uuid))}" + ) class Documentary(ExportModelOperationsMixin("attribute_group"), NiceModel): is_publicly_visible = True - product = ForeignKey(to=Product, on_delete=CASCADE, related_name="documentaries") + product: ForeignKey = ForeignKey(to=Product, on_delete=CASCADE, related_name="documentaries") document = FileField(upload_to=get_product_uuid_as_path) class Meta: @@ -1326,22 +1333,26 @@ class Address(ExportModelOperationsMixin("address"), NiceModel): help_text=_("address line for the customer"), verbose_name=_("address line"), ) - street = CharField(_("street"), max_length=255, null=True) # noqa: DJ001 - district = CharField(_("district"), max_length=255, null=True) # noqa: DJ001 - city = CharField(_("city"), max_length=100, null=True) # noqa: DJ001 - region = CharField(_("region"), max_length=100, null=True) # noqa: DJ001 - postal_code = CharField(_("postal code"), max_length=20, null=True) # noqa: DJ001 - country = CharField(_("country"), max_length=40, null=True) # noqa: DJ001 + street: CharField = CharField(_("street"), max_length=255, null=True) + district: CharField = CharField(_("district"), max_length=255, null=True) + city: CharField = CharField(_("city"), max_length=100, null=True) + region: CharField = CharField(_("region"), max_length=100, null=True) + postal_code: CharField = CharField(_("postal code"), max_length=20, null=True) + country: CharField = CharField(_("country"), max_length=40, null=True) - location = PointField( + location: PointField = PointField( geography=True, srid=4326, null=True, blank=True, help_text=_("geolocation point: (longitude, latitude)") ) - raw_data = JSONField(blank=True, null=True, help_text=_("full JSON response from geocoder for this address")) + raw_data: JSONField = JSONField( + blank=True, null=True, help_text=_("full JSON response from geocoder for this address") + ) - api_response = JSONField(blank=True, null=True, help_text=_("stored JSON response from the geocoding service")) + api_response: JSONField = JSONField( + blank=True, null=True, help_text=_("stored JSON response from the geocoding service") + ) - user = ForeignKey(to="vibes_auth.User", on_delete=CASCADE, blank=True, null=True) + user: ForeignKey = ForeignKey(to="vibes_auth.User", on_delete=CASCADE, blank=True, null=True) objects = AddressManager() diff --git a/core/permissions.py b/core/permissions.py index fab96962..5da35b3e 100644 --- a/core/permissions.py +++ b/core/permissions.py @@ -13,6 +13,7 @@ class IsOwnerOrReadOnly(permissions.BasePermission): return obj.user == request.user +# noinspection PyProtectedMember class EvibesPermission(permissions.BasePermission): ACTION_PERM_MAP = { "retrieve": "view", diff --git a/core/serializers/__init__.py b/core/serializers/__init__.py index f936a28a..f0610f6a 100644 --- a/core/serializers/__init__.py +++ b/core/serializers/__init__.py @@ -1,109 +1,3 @@ -from rest_framework.fields import ( - BooleanField, - CharField, - Field, - IntegerField, - JSONField, - ListField, - UUIDField, -) -from rest_framework.serializers import ListSerializer, Serializer - from .detail import * # noqa: F403 from .simple import * # noqa: F403 - - -class CacheOperatorSerializer(Serializer): - key = CharField(required=True) - data = JSONField(required=False) - timeout = IntegerField(required=False) - - -class ContactUsSerializer(Serializer): - email = CharField(required=True) - name = CharField(required=True) - subject = CharField(required=True) - phone_number = CharField(required=False) - message = CharField(required=True) - - -class LanguageSerializer(Serializer): - code = CharField(required=True) - name = CharField(required=True) - flag = CharField() - - -class RecursiveField(Field): - def to_representation(self, value): - parent = self.parent - if isinstance(parent, ListSerializer): - parent = parent.parent - - serializer_class = parent.__class__ - return serializer_class(value, context=self.context).data - - def to_internal_value(self, data): - return data - - -class AddOrderProductSerializer(Serializer): - product_uuid = CharField(required=True) - attributes = JSONField(required=False, default=dict) - - -class BulkAddOrderProductsSerializer(Serializer): - products = ListField(child=AddOrderProductSerializer(), required=True) - - -class RemoveOrderProductSerializer(Serializer): - product_uuid = CharField(required=True) - attributes = JSONField(required=False, default=dict) - - -class BulkRemoveOrderProductsSerializer(Serializer): - products = ListField(child=RemoveOrderProductSerializer(), required=True) - - -class AddWishlistProductSerializer(Serializer): - product_uuid = CharField(required=True) - - -class RemoveWishlistProductSerializer(Serializer): - product_uuid = CharField(required=True) - - -class BulkAddWishlistProductSerializer(Serializer): - product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64) - - -class BulkRemoveWishlistProductSerializer(Serializer): - product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64) - - -class BuyOrderSerializer(Serializer): - force_balance = BooleanField(required=False, default=False) - force_payment = BooleanField(required=False, default=False) - promocode_uuid = CharField(required=False) - shipping_address_uuid = CharField(required=False) - billing_address_uuid = CharField(required=False) - - -class BuyUnregisteredOrderSerializer(Serializer): - products = ListField(child=AddOrderProductSerializer(), required=True) - promocode_uuid = UUIDField(required=False) - customer_name = CharField(required=True) - customer_email = CharField(required=True) - customer_phone_number = CharField(required=True) - billing_customer_address_uuid = CharField(required=False) - shipping_customer_address_uuid = CharField(required=False) - payment_method = CharField(required=True) - - -class BuyAsBusinessOrderSerializer(Serializer): - products = ListField(child=AddOrderProductSerializer(), required=True) - business_inn = CharField(required=True) - business_email = CharField(required=True) - business_phone_number = CharField(required=True) - billing_business_address_uuid = CharField(required=False) - shipping_business_address_uuid = CharField(required=False) - payment_method = CharField(required=True) +from .utility import * # noqa: F403 diff --git a/core/serializers/detail.py b/core/serializers/detail.py index 309f101f..6f9d48dd 100644 --- a/core/serializers/detail.py +++ b/core/serializers/detail.py @@ -1,10 +1,12 @@ import logging from contextlib import suppress -from typing import Optional +from typing import Any, Collection, Optional +from django.contrib.auth.models import AnonymousUser from django.core.cache import cache from django.db.models.functions import Length from rest_framework.fields import JSONField, SerializerMethodField +from rest_framework.request import Request from rest_framework.serializers import ModelSerializer from rest_framework_recursive.fields import RecursiveField @@ -28,6 +30,7 @@ from core.models import ( ) from core.serializers.simple import CategorySimpleSerializer, ProductSimpleSerializer from core.serializers.utility import AddressSerializer +from vibes_auth.models import User logger = logging.getLogger(__name__) @@ -77,8 +80,11 @@ class CategoryDetailSerializer(ModelSerializer): if filterable_results: return filterable_results - request = self.context.get("request") - user = getattr(request, "user", None) + request: Request | None = self.context.get("request") + user: User | AnonymousUser | None = getattr(request, "user") # noqa: B009 + + if user is None: + user = AnonymousUser() attributes = obj.attributes.all() if user.has_perm("view_attribute") else obj.attributes.filter(is_active=True) @@ -100,12 +106,15 @@ class CategoryDetailSerializer(ModelSerializer): } ) + if user is None: + user = AnonymousUser() + if not user.has_perm("view_attribute"): cache.set(f"{obj.uuid}_filterable_results", filterable_results, 86400) return filterable_results - def get_children(self, obj) -> list[dict]: + def get_children(self, obj) -> Collection[Any]: request = self.context.get("request") if request is not None and request.user.has_perm("view_category"): children = obj.children.all() diff --git a/core/serializers/simple.py b/core/serializers/simple.py index fe596f93..587dfd8f 100644 --- a/core/serializers/simple.py +++ b/core/serializers/simple.py @@ -1,5 +1,5 @@ from contextlib import suppress -from typing import Optional +from typing import Collection, Optional from rest_framework.fields import JSONField, SerializerMethodField from rest_framework.relations import PrimaryKeyRelatedField @@ -27,8 +27,8 @@ from core.serializers.utility import AddressSerializer class AttributeGroupSimpleSerializer(ModelSerializer): - parent = PrimaryKeyRelatedField(read_only=True) - children = PrimaryKeyRelatedField(many=True, read_only=True) + parent: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) + children: PrimaryKeyRelatedField = PrimaryKeyRelatedField(many=True, read_only=True) class Meta: model = AttributeGroup @@ -59,7 +59,7 @@ class CategorySimpleSerializer(ModelSerializer): return obj.image.url return None - def get_children(self, obj) -> list[dict]: + def get_children(self, obj) -> Collection: request = self.context.get("request") if request is not None and request.user.has_perm("view_category"): children = obj.children.all() @@ -111,7 +111,7 @@ class ProductTagSimpleSerializer(ModelSerializer): class ProductImageSimpleSerializer(ModelSerializer): - product = PrimaryKeyRelatedField(read_only=True) + product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) class Meta: model = ProductImage @@ -139,7 +139,7 @@ class AttributeSimpleSerializer(ModelSerializer): class AttributeValueSimpleSerializer(ModelSerializer): attribute = AttributeSimpleSerializer(read_only=True) - product = PrimaryKeyRelatedField(read_only=True) + product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) class Meta: model = AttributeValue @@ -246,7 +246,7 @@ class PromotionSimpleSerializer(ModelSerializer): class WishlistSimpleSerializer(ModelSerializer): - user = PrimaryKeyRelatedField(read_only=True) + user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) products = ProductSimpleSerializer(many=True, read_only=True) class Meta: @@ -259,7 +259,7 @@ class WishlistSimpleSerializer(ModelSerializer): class FeedbackSimpleSerializer(ModelSerializer): - order_product = PrimaryKeyRelatedField(read_only=True) + order_product: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) class Meta: model = Feedback @@ -285,7 +285,7 @@ class OrderProductSimpleSerializer(ModelSerializer): class OrderSimpleSerializer(ModelSerializer): - user = PrimaryKeyRelatedField(read_only=True) + user: PrimaryKeyRelatedField = PrimaryKeyRelatedField(read_only=True) promo_code = PromoCodeSimpleSerializer(read_only=True) order_products = OrderProductSimpleSerializer(many=True, read_only=True) billing_address = AddressSerializer(read_only=True, required=False) diff --git a/core/serializers/utility.py b/core/serializers/utility.py index f36b0603..0fc2437e 100644 --- a/core/serializers/utility.py +++ b/core/serializers/utility.py @@ -1,7 +1,17 @@ from django.utils.translation import gettext_lazy as _ from rest_framework.exceptions import ValidationError -from rest_framework.fields import CharField, DictField, FloatField, IntegerField -from rest_framework.serializers import ModelSerializer, Serializer +from rest_framework.fields import ( + BooleanField, + CharField, + DictField, + Field, + FloatField, + IntegerField, + JSONField, + ListField, + UUIDField, +) +from rest_framework.serializers import ListSerializer, ModelSerializer, Serializer from core.models import Address @@ -75,3 +85,99 @@ class DoFeedbackSerializer(Serializer): def validate(self, data): if data["action"] == "add" and not all([data["comment"], data["rating"]]): raise ValidationError(_("you must provide a comment, rating, and order product uuid to add feedback.")) + + +class CacheOperatorSerializer(Serializer): + key = CharField(required=True) + data = JSONField(required=False) # type: ignore + timeout = IntegerField(required=False) + + +class ContactUsSerializer(Serializer): + email = CharField(required=True) + name = CharField(required=True) + subject = CharField(required=True) + phone_number = CharField(required=False) + message = CharField(required=True) + + +class LanguageSerializer(Serializer): + code = CharField(required=True) + name = CharField(required=True) + flag = CharField() + + +class RecursiveField(Field): + def to_representation(self, value): + parent = self.parent + if isinstance(parent, ListSerializer): + parent = parent.parent + + serializer_class = parent.__class__ + return serializer_class(value, context=self.context).data + + def to_internal_value(self, data): + return data + + +class AddOrderProductSerializer(Serializer): + product_uuid = CharField(required=True) + attributes = JSONField(required=False, default=dict) + + +class BulkAddOrderProductsSerializer(Serializer): + products = ListField(child=AddOrderProductSerializer(), required=True) + + +class RemoveOrderProductSerializer(Serializer): + product_uuid = CharField(required=True) + attributes = JSONField(required=False, default=dict) + + +class BulkRemoveOrderProductsSerializer(Serializer): + products = ListField(child=RemoveOrderProductSerializer(), required=True) + + +class AddWishlistProductSerializer(Serializer): + product_uuid = CharField(required=True) + + +class RemoveWishlistProductSerializer(Serializer): + product_uuid = CharField(required=True) + + +class BulkAddWishlistProductSerializer(Serializer): + product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64) + + +class BulkRemoveWishlistProductSerializer(Serializer): + product_uuids = ListField(child=CharField(required=True), allow_empty=False, max_length=64) + + +class BuyOrderSerializer(Serializer): + force_balance = BooleanField(required=False, default=False) + force_payment = BooleanField(required=False, default=False) + promocode_uuid = CharField(required=False) + shipping_address_uuid = CharField(required=False) + billing_address_uuid = CharField(required=False) + + +class BuyUnregisteredOrderSerializer(Serializer): + products = ListField(child=AddOrderProductSerializer(), required=True) + promocode_uuid = UUIDField(required=False) + customer_name = CharField(required=True) + customer_email = CharField(required=True) + customer_phone_number = CharField(required=True) + billing_customer_address_uuid = CharField(required=False) + shipping_customer_address_uuid = CharField(required=False) + payment_method = CharField(required=True) + + +class BuyAsBusinessOrderSerializer(Serializer): + products = ListField(child=AddOrderProductSerializer(), required=True) + business_inn = CharField(required=True) + business_email = CharField(required=True) + business_phone_number = CharField(required=True) + billing_business_address_uuid = CharField(required=False) + shipping_business_address_uuid = CharField(required=False) + payment_method = CharField(required=True) diff --git a/core/static/maintenance.html b/core/static/maintenance.html index d8369a81..452c1f59 100644 --- a/core/static/maintenance.html +++ b/core/static/maintenance.html @@ -1,209 +1,212 @@ + - - Maintenance - - - - - + + Maintenance + + + + + diff --git a/core/tasks.py b/core/tasks.py index 8c174176..6efb1732 100644 --- a/core/tasks.py +++ b/core/tasks.py @@ -30,7 +30,7 @@ def update_products_task(): includes invoking the `update_stock` method of vendor classes and removing stale products. Finally, it clears the flag in the cache. - Just write integrations with your vendors' APIs into core/vendors/.py and use it here :) + Write integrations with your vendors' APIs into core/vendors/.py and use it here :) :return: A tuple consisting of a status boolean and a message string :rtype: tuple[bool, str] @@ -64,7 +64,7 @@ def update_orderproducts_task(): `vendors_classes`. Each vendor class in the `vendors_classes` list is instantiated, and the `update_order_products_statuses` method of the respective vendor instance is executed to handle the update process. - Just write integrations with your vendors' APIs into core/vendors/.py and use it here :) + Write integrations with your vendors' APIs into core/vendors/.py and use it here :) :return: A tuple containing a boolean indicating success and a string message confirming the successful execution of the task. @@ -104,7 +104,7 @@ def remove_stale_product_images(): The task scans the product images directory to locate subdirectories named after product UUIDs. It verifies whether each UUID is part of the database's current product records. If a directory's UUID is not found in the database, it deletes - the directory, as it is considered stale. This helps in maintaining a clean storage + the directory, as it is considered stale. This helps in maintaining clean storage and removing unused image data. :raises ValueError: If a directory name is not a valid UUID. @@ -203,7 +203,7 @@ def process_promotions() -> tuple[bool, str]: if eligible_products.count() < 48: return False, "Not enough products to choose from [< 48]." - selected_products = [] + selected_products: list = [] while len(selected_products) < 48: product = eligible_products.order_by("?").first() @@ -211,8 +211,9 @@ def process_promotions() -> tuple[bool, str]: promotion = Promotion.objects.update_or_create( name=promotion_name, defaults={"discount_percent": discount_percent, "is_active": True} - ) + )[0] - promotion.products.set(selected_products) + for product in selected_products: + promotion.products.add(product) return True, "Promotions updated successfully." diff --git a/core/templates/admin/__init__.py b/core/templates/admin/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/core/templates/admin/constance/change_list.html b/core/templates/admin/constance/change_list.html deleted file mode 100644 index 696a1175..00000000 --- a/core/templates/admin/constance/change_list.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load admin_list static i18n %} - -{% block extrastyle %} - {{ block.super }} - - - {{ media.css }} - -{% endblock %} - -{% block extrahead %} - {% url 'admin:jsi18n' as jsi18nurl %} - - {{ block.super }} - {{ media.js }} - - {% if django_version < "5.1" %} - - {% endif %} -{% endblock %} - -{% block bodyclass %}{{ block.super }} change-list{% endblock %} - -{% block content %} -
-
-
{% csrf_token %} - {% if form.non_field_errors %} -
    - {% for error in form.non_field_errors %} -
  • {{ error }}
  • - {% endfor %} -
- {% endif %} - {% if form.errors %} -
    - {% endif %} - {% for field in form.hidden_fields %} - {% for error in field.errors %} -
  • {{ error }}
  • - {% endfor %} - {{ field }} - {% endfor %} - {% if form.errors %} -
- {% endif %} - -
-

{% trans "configuration" %}

- {% include "admin/constance/includes/results_list.html" %} -
- - -
-
-
-{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} diff --git a/core/templates/admin/constance/includes/results_list.html b/core/templates/admin/constance/includes/results_list.html deleted file mode 100644 index da185917..00000000 --- a/core/templates/admin/constance/includes/results_list.html +++ /dev/null @@ -1,57 +0,0 @@ -{% load admin_list static i18n %} -
- - - - - - - - - - {% for item in config_values %} - - - - - - - {% endfor %} -
{% trans "name" %}
{% trans "default" %}
{% trans "value" %}
{% trans "is modified" %}
- - {{ item.name }} - - -
{{ item.help_text|linebreaksbr }}
-
- {{ item.default|linebreaks }} - - {{ item.form_field.errors }} - {% if item.is_file %}{% trans "current file" %}: {{ item.value }}{% endif %} - {{ item.form_field }} - {% if not item.is_file %} -
- {% trans "reset to default" %} - {% endif %} -
- {% if item.modified %} - {{ item.modified }} - {% else %} - {{ item.modified }} - {% endif %} -
-
diff --git a/core/templates/contact_us_email.html b/core/templates/contact_us_email.html index 818caaf7..b8b0d073 100644 --- a/core/templates/contact_us_email.html +++ b/core/templates/contact_us_email.html @@ -11,15 +11,18 @@ -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } + table { border-collapse: collapse !important; } + body { margin: 0 !important; padding: 0 !important; width: 100% !important; font-family: Arial, sans-serif; } + .email-container { max-width: 600px; margin: 0 auto; @@ -28,18 +31,22 @@ overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } + .header { background-color: #f4f4f4; padding: 20px; text-align: center; } + .header h1 { margin: 0; font-size: 24px; } + .content-cell { padding: 20px; } + .footer { background-color: #f4f4f4; padding: 10px; @@ -47,13 +54,16 @@ font-size: 12px; color: #888; } + .content-cell h2 { font-size: 18px; margin-bottom: 10px; } + .content-cell p { margin: 5px 0; } + .content-cell strong { display: inline-block; width: 150px; @@ -61,28 +71,28 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/core/templates/digital_order_created_email.html b/core/templates/digital_order_created_email.html index c274cfc8..45bb1f59 100644 --- a/core/templates/digital_order_created_email.html +++ b/core/templates/digital_order_created_email.html @@ -85,10 +85,10 @@ - +
- + diff --git a/core/templates/digital_order_delivered_email.html b/core/templates/digital_order_delivered_email.html index 3f7c8e03..7b2df364 100644 --- a/core/templates/digital_order_delivered_email.html +++ b/core/templates/digital_order_delivered_email.html @@ -85,10 +85,10 @@ - +
- + diff --git a/core/templates/json_table_widget.html b/core/templates/json_table_widget.html index 3f3a5764..5871a651 100644 --- a/core/templates/json_table_widget.html +++ b/core/templates/json_table_widget.html @@ -1,28 +1,38 @@ {% load static i18n %} - - - - + + + + - {% for key, value in widget.value.items %} + {% for key, value in widget.value.items %} - + - {% endfor %} - - - - + {% endfor %} + + + +
{% blocktrans %}key{% endblocktrans %}{% blocktrans %}value{% endblocktrans %}
{% blocktrans %}key{% endblocktrans %}{% blocktrans %}value{% endblocktrans %}
{% if value is list %} - + {% else %} - + {% endif %}
@@ -39,20 +49,20 @@ }); function addRow(event) { - var tableId = event.target.getAttribute("data-table-id"); - var table = document.getElementById(tableId); + let tableId = event.target.getAttribute("data-table-id"); + let table = document.getElementById(tableId); if (table) { - var lastRow = table.querySelector("tr:last-child"); - var rowIndex = parseInt(lastRow.getAttribute("data-row-index"), 10) + 1; + let lastRow = table.querySelector("tr:last-child"); + let rowIndex = (parseInt(lastRow.getAttribute("data-row-index"), 10) + 1).toString(); - var row = table.insertRow(); + let row = table.insertRow(); row.setAttribute("data-row-index", rowIndex); - var keyCell = row.insertCell(0); - var valueCell = row.insertCell(1); + let keyCell = row.insertCell(0); + let valueCell = row.insertCell(1); - var namePrefix = tableId.replace("json-fields-", ""); + let namePrefix = tableId.replace("json-fields-", ""); keyCell.innerHTML = ``; valueCell.innerHTML = ``; diff --git a/core/templates/shipped_order_created_email.html b/core/templates/shipped_order_created_email.html index 87e1ee8e..722b7a53 100644 --- a/core/templates/shipped_order_created_email.html +++ b/core/templates/shipped_order_created_email.html @@ -9,41 +9,50 @@ * { box-sizing: border-box; } + body, table, td, a { text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } + table { } + body { margin: 0 !important; padding: 0 !important; width: 100% !important; } + img { max-width: 100%; height: auto; } + .email-container { max-width: 600px; margin: 0 auto; } + .content-cell { border: 3px solid #000000; padding: 20px; font-family: Arial, sans-serif; } + .header { background-color: #000000; padding: 20px; text-align: center; } + .header img { width: 120px; height: auto; } + .footer { background-color: #000000; padding: 10px; @@ -51,18 +60,22 @@ font-size: 12px; color: #888; } + .order-table { width: 100%; margin-top: 20px; border-collapse: collapse; } + .order-table th, .order-table td { border: 1px solid #ddd; padding: 8px; } + .order-table th { background-color: #f4f4f4; } + @media only screen and (max-width: 600px) { .email-container { width: 100% !important; @@ -72,69 +85,72 @@ - - - + +
- - - - - - + + + + + +
diff --git a/core/templates/shipped_order_delivered_email.html b/core/templates/shipped_order_delivered_email.html index 87e1ee8e..722b7a53 100644 --- a/core/templates/shipped_order_delivered_email.html +++ b/core/templates/shipped_order_delivered_email.html @@ -9,41 +9,50 @@ * { box-sizing: border-box; } + body, table, td, a { text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } + table { } + body { margin: 0 !important; padding: 0 !important; width: 100% !important; } + img { max-width: 100%; height: auto; } + .email-container { max-width: 600px; margin: 0 auto; } + .content-cell { border: 3px solid #000000; padding: 20px; font-family: Arial, sans-serif; } + .header { background-color: #000000; padding: 20px; text-align: center; } + .header img { width: 120px; height: auto; } + .footer { background-color: #000000; padding: 10px; @@ -51,18 +60,22 @@ font-size: 12px; color: #888; } + .order-table { width: 100%; margin-top: 20px; border-collapse: collapse; } + .order-table th, .order-table td { border: 1px solid #ddd; padding: 8px; } + .order-table th { background-color: #f4f4f4; } + @media only screen and (max-width: 600px) { .email-container { width: 100% !important; @@ -72,69 +85,72 @@ - - - + +
- - - - - - + + + + + +
diff --git a/core/urls.py b/core/urls.py index 637600f5..e8ac27db 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1 +1 @@ -urlpatterns = [] +urlpatterns: list = [] diff --git a/core/utils/__init__.py b/core/utils/__init__.py index c163e3dd..a1013daf 100644 --- a/core/utils/__init__.py +++ b/core/utils/__init__.py @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) def get_random_code() -> str: """ - Generates a random string of a specified length. This method utilizes the + Generates a random string of a specified length. This method calls the get_random_string function to create a random alphanumeric string of 20 characters in length. @@ -78,7 +78,7 @@ def is_url_safe(url: str) -> bool: """ Determine if a given URL is safe. This function evaluates whether the provided URL starts with "https://", making it a potentially - secure resource, by evaluating its prefix using a regular expression. + secure resource by evaluating its prefix using a regular expression. Arguments: url (str): The URL to evaluate. diff --git a/core/utils/nominatim.py b/core/utils/nominatim.py index 80142039..90029742 100644 --- a/core/utils/nominatim.py +++ b/core/utils/nominatim.py @@ -10,7 +10,7 @@ def fetch_address_suggestions(query: str, limit: int = 5) -> List[Dict]: raise ValueError(_("NOMINATIM_URL must be configured.")) url = config.NOMINATIM_URL.rstrip("/") + "/search" - params = { + params: dict[str, str | int] = { "format": "json", "addressdetails": 1, "q": query, diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index e66d8e99..be8bb641 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -1,6 +1,7 @@ import json from contextlib import suppress from math import ceil, log10 +from typing import Any from django.db import IntegrityError @@ -10,13 +11,49 @@ from payments.errors import RatesError from payments.utils import get_rates +class NotEnoughBalanceError(Exception): + """ + Custom exception raised when a financial operation exceeds + the available balance. + + This exception is designed to enforce balance constraints on + operations such as withdrawals or payments, ensuring that + transactions do not cause the balance to go below the allowed + limit. + """ + + pass + + +class WrongUserAttributesError(Exception): + """ + Exception class representing an error for incorrect user attributes. + + This exception is raised when invalid or inconsistent attributes + are provided for a user during an operation. It can be used to + signal issues related to user data validation or parameter checks. + """ + + pass + + +class VendorError(Exception): + """ + Exception class representing an error for vendor-related operations. + + This exception is raised when unexpected output is received from Vendor API. + """ + + pass + + class AbstractVendor: """ Abstract class defining vendor-related operations and handling. This class provides methods to manage and manipulate data related to a vendor and its associated products, stocks, and attributes. These include utility - methods for chunking data, resolving prices based on vendor or category + methods for chunking data, resolving prices based on vendor's or category's specific markup percentages, retrieving vendor instances, fetching queryset data for products and stocks, and performing bulk operations like updates or deletions on inactive objects. @@ -37,10 +74,10 @@ class AbstractVendor: if total == 0: return [] chunk_size = max(1, (total + num_chunks - 1) // num_chunks) - return [data[i: i + chunk_size] for i in range(0, total, chunk_size)] + return [data[i : i + chunk_size] for i in range(0, total, chunk_size)] @staticmethod - def auto_convert_value(value): + def auto_convert_value(value: Any): """ Attempts to convert a value to a more specific type. Handles booleans, numbers, objects (dicts), and arrays (lists), @@ -58,7 +95,7 @@ class AbstractVendor: # Convert dict to a JSON string for consistency in storage return json.dumps(value), "object" if isinstance(value, list): - # Similarly, convert list to JSON string + # Similarly, convert a list to JSON string return json.dumps(value), "array" # Now, if it's a string, try to parse it further @@ -85,12 +122,12 @@ class AbstractVendor: # Try to detect a JSON object or array. stripped_value = value.strip() if (stripped_value.startswith("{") and stripped_value.endswith("}")) or ( - stripped_value.startswith("[") and stripped_value.endswith("]") + stripped_value.startswith("[") and stripped_value.endswith("]") ): with suppress(Exception): parsed = json.loads(value) if isinstance(parsed, dict): - # Store as JSON string for consistency. + # Store as a JSON string for consistency. return json.dumps(parsed), "object" elif isinstance(parsed, list): return json.dumps(parsed), "array" @@ -99,7 +136,7 @@ class AbstractVendor: return value, "string" @staticmethod - def auto_resolver_helper(model: type[Brand] | type[Category], resolving_name: str): + def auto_resolver_helper(model: Brand | Category, resolving_name: str) -> Brand | Category | None: queryset = model.objects.filter(name=resolving_name) if not queryset.exists(): return model.objects.get_or_create(name=resolving_name, defaults={"is_active": False})[0] @@ -108,6 +145,8 @@ class AbstractVendor: elif queryset.filter(is_active=False).count() > 1: queryset = queryset.filter(is_active=False) chosen = queryset.first() + if not chosen: + raise VendorError(f"No matching {model.__name__} found with name {resolving_name!r}...") queryset = queryset.exclude(uuid=chosen.uuid) queryset.delete() return chosen @@ -127,7 +166,7 @@ class AbstractVendor: except Category.DoesNotExist: pass - return self.auto_resolver_helper(Category, category_name) + return self.auto_resolver_helper(Category, category_name) # type: ignore def auto_resolve_brand(self, brand_name: str): if brand_name: @@ -144,9 +183,11 @@ class AbstractVendor: except Brand.DoesNotExist: pass - return self.auto_resolver_helper(Brand, brand_name) + return self.auto_resolver_helper(Brand, brand_name) # type: ignore - def resolve_price(self, original_price: int | float, vendor: Vendor = None, category: Category = None) -> float: + def resolve_price( + self, original_price: int | float, vendor: Vendor | None = None, category: Category | None = None + ) -> float: if not vendor: vendor = self.get_vendor_instance() @@ -182,7 +223,7 @@ class AbstractVendor: bump to the next 'psychological' threshold at the correct order of magnitude and subtract 1. - E.g. 2.34 → 2 → 3 – 1 = 2 + E.g., 2.34 → 2 → 3 – 1 = 2 12.34 → 12 → 13 – 1 = 12 123.45 → 123 → 130 – 1 = 129 """ @@ -193,12 +234,12 @@ class AbstractVendor: # strip off any cents whole = int(price) - # figure out the magnitude: + # figure out the size: # 10**0 = 1 for [1–9], 10**1 = 10 for [10–99], 10**2 = 100 for [100–999], etc. - magnitude = 10 ** max(int(log10(whole)) - 1, 0) + size = 10 ** max(int(log10(whole)) - 1, 0) - # next multiple of that magnitude - next_threshold = ceil(whole / magnitude) * magnitude + # next multiple of that size + next_threshold = ceil(whole / size) * size # step back 1 to land on a “9” ending psychological = next_threshold - 1 @@ -261,7 +302,7 @@ class AbstractVendor: defaults={"is_active": True}, ) except Attribute.MultipleObjectsReturned: - attribute = Attribute.objects.filter(name=key, group=attr_group).order_by("uuid").first() + attribute = Attribute.objects.filter(name=key, group=attr_group).order_by("uuid").first() # type: ignore attribute.is_active = True attribute.value_type = attr_value_type attribute.save() @@ -290,39 +331,3 @@ class AbstractVendor: def delete_stale(): Product.objects.filter(stocks__isnull=True, orderproduct__isnull=True).delete() - - -class NotEnoughBalanceError(Exception): - """ - Custom exception raised when a financial operation exceeds - the available balance. - - This exception is designed to enforce balance constraints on - operations such as withdrawals or payments, ensuring that - transactions do not cause the balance to go below the allowed - limit. - """ - - pass - - -class WrongUserAttributesError(Exception): - """ - Exception class representing an error for incorrect user attributes. - - This exception is raised when invalid or inconsistent attributes - are provided for a user during an operation. It can be used to - signal issues related to user data validation or parameter checks. - """ - - pass - - -class VendorError(Exception): - """ - Exception class representing an error for vendor-related operations. - - This exception is raised when unexpected output is received from Vendor API. - """ - - pass diff --git a/core/viewsets.py b/core/viewsets.py index 15bda5f5..ee3db6ad 100644 --- a/core/viewsets.py +++ b/core/viewsets.py @@ -2,7 +2,7 @@ import logging import uuid from uuid import UUID -from django.db.models import Q +from django.db.models import Q, QuerySet from django.http import Http404 from django.shortcuts import get_object_or_404 from django.utils.decorators import method_decorator @@ -55,7 +55,10 @@ from core.models import ( from core.permissions import EvibesPermission from core.serializers import ( AddOrderProductSerializer, + AddressAutocompleteInputSerializer, + AddressCreateSerializer, AddressSerializer, + AddressSuggestionSerializer, AddWishlistProductSerializer, AttributeDetailSerializer, AttributeGroupDetailSerializer, @@ -73,6 +76,7 @@ from core.serializers import ( BuyUnregisteredOrderSerializer, CategoryDetailSerializer, CategorySimpleSerializer, + DoFeedbackSerializer, FeedbackDetailSerializer, FeedbackSimpleSerializer, OrderDetailSerializer, @@ -97,12 +101,6 @@ from core.serializers import ( WishlistDetailSerializer, WishlistSimpleSerializer, ) -from core.serializers.utility import ( - AddressAutocompleteInputSerializer, - AddressCreateSerializer, - AddressSuggestionSerializer, - DoFeedbackSerializer, -) from core.utils import format_attributes from core.utils.messages import permission_denied_message from core.utils.nominatim import fetch_address_suggestions @@ -113,8 +111,8 @@ logger = logging.getLogger("django.request") class EvibesViewSet(ModelViewSet): - action_serializer_classes = {} - additional = {} + action_serializer_classes: dict = {} + additional: dict = {} permission_classes = [EvibesPermission] renderer_classes = [CamelCaseJSONRenderer, MultiPartRenderer, XMLRenderer, YAMLRenderer] @@ -227,7 +225,7 @@ class ProductViewSet(EvibesViewSet): lookup_val = kwargs.get(self.lookup_field) try: product = Product.objects.get(uuid=lookup_val) - feedbacks = ( + feedbacks: QuerySet[Feedback] = ( # type: ignore Feedback.objects.filter(order_product__product=product) if request.user.has_perm("core.view_feedback") else Feedback.objects.filter(order_product__product=product, is_active=True) diff --git a/docker-compose.yml b/docker-compose.yml index a6d82d5a..bbbb781e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,15 +9,8 @@ services: container_name: app build: context: . - dockerfile: Dockerfile + dockerfile: ./Dockerfiles/Dockerfile.app restart: always - command: > - sh -c "poetry run python manage.py await_services && - if [ \"$DEBUG\" = \"1\" ]; then - poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 2 --reload --log-level debug --access-logfile - --error-logfile -; - else - poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 12 --timeout 120; - fi" volumes: - .:/app ports: @@ -68,11 +61,6 @@ services: database: condition: service_healthy logging: *default-logging - healthcheck: - test: [ "CMD-SHELL", "curl -f http://localhost:9187/metrics || exit 1" ] - interval: 30s - timeout: 10s - retries: 5 redis: container_name: redis @@ -105,11 +93,6 @@ services: redis: condition: service_healthy logging: *default-logging - healthcheck: - test: [ "CMD-SHELL", "curl -f http://localhost:9121/metrics || exit 1" ] - interval: 30s - timeout: 10s - retries: 5 elasticsearch: container_name: elasticsearch @@ -146,20 +129,13 @@ services: elasticsearch: condition: service_healthy logging: *default-logging - healthcheck: - test: [ "CMD-SHELL", "curl -f http://localhost:9114/metrics || exit 1" ] - interval: 30s - timeout: 10s - retries: 5 worker: container_name: worker build: context: . - dockerfile: Dockerfile + dockerfile: ./Dockerfiles/Dockerfile.worker restart: always - command: > - sh -c "poetry run celery -A evibes worker --loglevel=info -E --concurrency=4 --autoscale=4,2 --max-tasks-per-child=100 --max-memory-per-child=512000 --soft-time-limit=10800 --time-limit=21600 & /usr/local/bin/celery-prometheus-exporter" volumes: - .:/app env_file: @@ -185,10 +161,8 @@ services: container_name: beat build: context: . - dockerfile: Dockerfile + dockerfile: ./Dockerfiles/Dockerfile.beat restart: always - command: > - sh -c "poetry run celery -A evibes beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler" volumes: - .:/app env_file: @@ -220,26 +194,6 @@ services: - --web.config.file=/etc/prometheus/web.yml logging: *default-logging -# storefront: -# container_name: storefront -# build: -# - context: storefront -# - dockerfile: Dockerfile -# env_file: -# - .env -# restart: always -# ports: -# - "3000:3000" -# command: > -# sh -c "npm run start" -# depends_on: -# app: -# condition: service_healthy -# logging: *default-logging - -# nginx: - - volumes: es-data: diff --git a/evibes/asgi.py b/evibes/asgi.py index ed21b452..7564b7dd 100644 --- a/evibes/asgi.py +++ b/evibes/asgi.py @@ -1,5 +1,5 @@ """ -ASGI config for evibes project. +ASGI config for the eVibes project. It exposes the ASGI callable as a module-level variable named ``application``. diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.mo b/evibes/locale/ar_AR/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/ar_AR/LC_MESSAGES/django.mo and b/evibes/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.po b/evibes/locale/ar_AR/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/ar_AR/LC_MESSAGES/django.po +++ b/evibes/locale/ar_AR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/cs_CZ/LC_MESSAGES/django.mo and b/evibes/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.po b/evibes/locale/cs_CZ/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/cs_CZ/LC_MESSAGES/django.po +++ b/evibes/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.mo b/evibes/locale/da_DK/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/da_DK/LC_MESSAGES/django.mo and b/evibes/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/da_DK/LC_MESSAGES/django.po +++ b/evibes/locale/da_DK/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.mo b/evibes/locale/de_DE/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/de_DE/LC_MESSAGES/django.mo and b/evibes/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ b/evibes/locale/de_DE/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.mo b/evibes/locale/en_GB/LC_MESSAGES/django.mo index fd7d1a9b..703b6606 100644 Binary files a/evibes/locale/en_GB/LC_MESSAGES/django.mo and b/evibes/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po index edf1b797..c6611145 100644 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ b/evibes/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,187 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: evibes/settings/constance.py:10 + +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.mo b/evibes/locale/en_US/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/en_US/LC_MESSAGES/django.mo and b/evibes/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ b/evibes/locale/en_US/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.mo b/evibes/locale/es_ES/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/es_ES/LC_MESSAGES/django.mo and b/evibes/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.po b/evibes/locale/es_ES/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/es_ES/LC_MESSAGES/django.po +++ b/evibes/locale/es_ES/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.mo b/evibes/locale/fr_FR/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/fr_FR/LC_MESSAGES/django.mo and b/evibes/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ b/evibes/locale/fr_FR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.mo b/evibes/locale/hi_IN/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/hi_IN/LC_MESSAGES/django.mo and b/evibes/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.po b/evibes/locale/hi_IN/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/hi_IN/LC_MESSAGES/django.po +++ b/evibes/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.mo b/evibes/locale/it_IT/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/it_IT/LC_MESSAGES/django.mo and b/evibes/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ b/evibes/locale/it_IT/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.mo b/evibes/locale/ja_JP/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/ja_JP/LC_MESSAGES/django.mo and b/evibes/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.po b/evibes/locale/ja_JP/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/ja_JP/LC_MESSAGES/django.po +++ b/evibes/locale/ja_JP/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/kk_KZ/LC_MESSAGES/django.mo and b/evibes/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.po b/evibes/locale/kk_KZ/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/kk_KZ/LC_MESSAGES/django.po +++ b/evibes/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.mo b/evibes/locale/nl_NL/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/nl_NL/LC_MESSAGES/django.mo and b/evibes/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/nl_NL/LC_MESSAGES/django.po +++ b/evibes/locale/nl_NL/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.mo b/evibes/locale/pl_PL/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/pl_PL/LC_MESSAGES/django.mo and b/evibes/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/pl_PL/LC_MESSAGES/django.po +++ b/evibes/locale/pl_PL/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.mo b/evibes/locale/pt_BR/LC_MESSAGES/django.mo index 228c5fcf..708c5a2b 100644 Binary files a/evibes/locale/pt_BR/LC_MESSAGES/django.mo and b/evibes/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po index 7e404129..f2dbd9d7 100644 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ b/evibes/locale/pt_BR/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,187 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: evibes/settings/constance.py:10 + +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.mo b/evibes/locale/ro_RO/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/ro_RO/LC_MESSAGES/django.mo and b/evibes/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ b/evibes/locale/ro_RO/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.mo b/evibes/locale/ru_RU/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/evibes/locale/ru_RU/LC_MESSAGES/django.mo and b/evibes/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po index 02f4e4f4..fd8babab 100644 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ b/evibes/locale/ru_RU/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: evibes/settings/constance.py:10 +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo index 47859401..eecd9753 100644 Binary files a/evibes/locale/zh_Hans/LC_MESSAGES/django.mo and b/evibes/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po index b13ca1e9..c3d9dcac 100644 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ b/evibes/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-16 08:59+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,107 +16,187 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: evibes/settings/constance.py:10 + +#: evibes/settings/constance.py:18 msgid "Name of the project" msgstr "" -#: evibes/settings/constance.py:11 +#: evibes/settings/constance.py:19 msgid "Frontend domain name" msgstr "" -#: evibes/settings/constance.py:12 +#: evibes/settings/constance.py:20 msgid "Base domain name" msgstr "" -#: evibes/settings/constance.py:13 +#: evibes/settings/constance.py:21 msgid "Name of the company" msgstr "" -#: evibes/settings/constance.py:14 +#: evibes/settings/constance.py:22 msgid "Address of the company" msgstr "" -#: evibes/settings/constance.py:15 +#: evibes/settings/constance.py:23 msgid "Phone number of the company" msgstr "" -#: evibes/settings/constance.py:17 +#: evibes/settings/constance.py:26 msgid "Designates whether every product has one stock or not" msgstr "" -#: evibes/settings/constance.py:18 +#: evibes/settings/constance.py:28 msgid "SMTP host" msgstr "" -#: evibes/settings/constance.py:19 +#: evibes/settings/constance.py:29 msgid "SMTP port" msgstr "" -#: evibes/settings/constance.py:20 +#: evibes/settings/constance.py:30 msgid "Use TLS (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:21 +#: evibes/settings/constance.py:31 msgid "Use SSL (Specify 0 for No and 1 for Yes)" msgstr "" -#: evibes/settings/constance.py:22 +#: evibes/settings/constance.py:32 msgid "SMTP username" msgstr "" -#: evibes/settings/constance.py:23 +#: evibes/settings/constance.py:33 msgid "SMTP password" msgstr "" -#: evibes/settings/constance.py:24 +#: evibes/settings/constance.py:34 msgid "Mail from option" msgstr "" -#: evibes/settings/constance.py:25 +#: evibes/settings/constance.py:35 msgid "Payment gateway URL" msgstr "" -#: evibes/settings/constance.py:26 +#: evibes/settings/constance.py:36 msgid "Payment gateway token" msgstr "" -#: evibes/settings/constance.py:27 +#: evibes/settings/constance.py:37 msgid "Payment gateway minimum amount" msgstr "" -#: evibes/settings/constance.py:28 +#: evibes/settings/constance.py:38 msgid "Payment gateway maximum amount" msgstr "" -#: evibes/settings/constance.py:29 +#: evibes/settings/constance.py:39 msgid "Exchange rate API key" msgstr "" -#: evibes/settings/constance.py:30 +#: evibes/settings/constance.py:40 msgid "OpenStreetMap Nominatim API URL" msgstr "" -#: evibes/settings/constance.py:31 +#: evibes/settings/constance.py:41 msgid "OpenAI API Key" msgstr "" -#: evibes/settings/constance.py:34 +#: evibes/settings/constance.py:44 msgid "Abstract API Key, if empty - no Abstract features provided" msgstr "" -#: evibes/settings/constance.py:36 +#: evibes/settings/constance.py:46 msgid "HTTP Proxy" msgstr "" -#: evibes/settings/constance.py:37 +#: evibes/settings/constance.py:47 msgid "Disable buy functionality" msgstr "" -#: evibes/settings/constance.py:40 +#: evibes/settings/constance.py:50 msgid "An entity for storing advertisiment data" msgstr "" -#: evibes/settings/constance.py:45 +#: evibes/settings/constance.py:55 msgid "An entity for storing analytics data" msgstr "" +#: evibes/settings/drf.py:48 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} B2B API is designed to " +"provide seamless integration for merchants selling a wide range of " +"electronics. Through this API, partnered merchants can manage products, " +"orders, and inventory with ease, while accessing real-time stock levels.\n" +"\n" +"## Key Features\n" +"- **Product Management:** Easily create, update, and manage your product " +"listings with detailed specifications.\n" +"- **Order Processing:** Handle bulk orders efficiently with streamlined " +"operations for merchants.\n" +"- **Inventory Management:** Keep track of stock levels in real-time, " +"ensuring smooth fulfillment.\n" +"- **Secure Transactions:** Secure and encrypted transactions to protect " +"sensitive business information.\n" +"- **Multi-Currency Support:** Expand your market reach with multi-currency " +"transactions.\n" +"- **Real-Time Notifications:** Stay updated with instant alerts on stock " +"changes and order statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via your merchant token. Include the token in " +"the `X-EVIBES-B2B-AUTH` header of your requests in the format `Bearer " +"`.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" + +#: evibes/settings/drf.py:72 +msgid "" +"\n" +"Welcome to the {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} Platform API " +"documentation.\n" +"\n" +"The {CONSTANCE_CONFIG.get(\"PROJECT_NAME\")[0]} API is the central hub for " +"managing product listings, monitoring orders, and accessing analytics for " +"your electronics store. It provides RESTful endpoints for managing your " +"store’s backend operations and includes both REST and GraphQL options.\n" +"\n" +"## Key Features\n" +"- **Product Catalog:** Manage product details, pricing, and availability.\n" +"- **Order Management:** Access detailed order information and process " +"customer requests efficiently.\n" +"- **User Roles & Permissions:** Set user roles and permissions for internal " +"management.\n" +"- **Custom Integrations:** Connect your system with external platforms " +"through powerful APIs.\n" +"- **Detailed Reporting:** Generate comprehensive reports on orders, sales " +"performance, and product data.\n" +"- **Real-Time Data:** Get live updates on inventory, pricing, and order " +"statuses.\n" +"\n" +"## Authentication\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Access token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 60 if not DEBUG else 3600} {\"minutes\" if not DEBUG else " +"\"hours\"}.\n" +"- Refresh token lifetime is {SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\")." +"total_seconds() // 3600} hours.\n" +"- Refresh tokens are automatically invalidated after usage.\n" +"\n" +"## I18N\n" +"- Apply an `Accept-Language` header to use non-default language. A list of " +"all languages is available at `/app/languages/`.\n" +"\n" +"## Version\n" +"Current API version: {EVIBES_VERSION}\n" +msgstr "" diff --git a/evibes/pagination.py b/evibes/pagination.py index 2f7e1082..b1632180 100644 --- a/evibes/pagination.py +++ b/evibes/pagination.py @@ -3,22 +3,22 @@ from rest_framework.response import Response class CustomPagination(PageNumberPagination): - page_size_query_param = "page_size" # name of the query parameter, you can use any + page_size_query_param: str = "page_size" # name of the query parameter, you can use any - def get_paginated_response(self, data): + def get_paginated_response(self, data: dict) -> Response: return Response( { "links": {"forward": self.get_next_link(), "backward": self.get_previous_link()}, "counts": { - "total_pages": self.page.paginator.num_pages, - "page_size": self.page_size, - "total_items": self.page.paginator.count, + "total_pages": None or self.page.paginator.num_pages, + "page_size": None or self.page_size, + "total_items": None or self.page.paginator.count, }, "data": data, } ) - def get_paginated_response_schema(self, data_schema): + def get_paginated_response_schema(self, data_schema: dict) -> dict: return { "type": "object", "properties": { diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 971c9a86..bc042600 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -2,12 +2,12 @@ import logging from os import getenv from pathlib import Path -EVIBES_VERSION = "2.8.5" +EVIBES_VERSION = "2.8.9" BASE_DIR = Path(__file__).resolve().parent.parent.parent -SECRET_KEY = getenv("SECRET_KEY") -DEBUG = bool(int(getenv("DEBUG"))) +SECRET_KEY = getenv("SECRET_KEY", "SUPER_SECRET_KEY") +DEBUG = bool(int(getenv("DEBUG", "1"))) ALLOWED_HOSTS = { "app:8000", @@ -24,10 +24,10 @@ ALLOWED_HOSTS = { if DEBUG: ALLOWED_HOSTS.add("*") else: - for entry in getenv("ALLOWED_HOSTS").split(" "): + for entry in getenv("ALLOWED_HOSTS", "").split(" "): ALLOWED_HOSTS.add(entry) -ALLOWED_HOSTS = tuple(ALLOWED_HOSTS) +ALLOWED_HOSTS = tuple(ALLOWED_HOSTS) # type: ignore CSRF_TRUSTED_ORIGINS = { "http://127.0.0.1", @@ -35,10 +35,10 @@ CSRF_TRUSTED_ORIGINS = { "http://b2b.localhost", } -for entry in getenv("CSRF_TRUSTED_ORIGINS").split(" "): +for entry in getenv("CSRF_TRUSTED_ORIGINS", "").split(" "): CSRF_TRUSTED_ORIGINS.add(entry) -CSRF_TRUSTED_ORIGINS = tuple(CSRF_TRUSTED_ORIGINS) +CSRF_TRUSTED_ORIGINS = tuple(CSRF_TRUSTED_ORIGINS) # type: ignore if DEBUG: CORS_ALLOW_ALL_ORIGINS = True @@ -48,10 +48,10 @@ else: "http://api.localhost", "http://b2b.localhost", } - for entry in getenv("CORS_ALLOWED_ORIGINS").split(" "): + for entry in getenv("CORS_ALLOWED_ORIGINS", "").split(" "): CORS_ALLOWED_ORIGINS.add(entry) - CORS_ALLOWED_ORIGINS = tuple(CORS_ALLOWED_ORIGINS) + CORS_ALLOWED_ORIGINS = tuple(CORS_ALLOWED_ORIGINS) # type: ignore CORS_ALLOW_METHODS = ( "DELETE", @@ -89,11 +89,11 @@ USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") if not DEBUG else None X_FRAME_OPTIONS = "SAMEORIGIN" -UNSAFE_CACHE_KEYS = [] +UNSAFE_CACHE_KEYS: list[str] = [] -SITE_ID = 1 +SITE_ID: int = 1 -INSTALLED_APPS = [ +INSTALLED_APPS: list[str] = [ "django_prometheus", "constance", "django_daisy", @@ -143,7 +143,7 @@ INSTALLED_APPS = [ "blog", ] -MIDDLEWARE = [ +MIDDLEWARE: list[str] = [ "evibes.middleware.BlockInvalidHostMiddleware", "django_prometheus.middleware.PrometheusBeforeMiddleware", "django_hosts.middleware.HostsRequestMiddleware", @@ -161,7 +161,7 @@ MIDDLEWARE = [ "django_prometheus.middleware.PrometheusAfterMiddleware", ] -TEMPLATES = [ +TEMPLATES: list[dict] = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [ @@ -181,9 +181,9 @@ TEMPLATES = [ }, ] -USE_I18N = True +USE_I18N: bool = True -LANGUAGES = ( +LANGUAGES: tuple[tuple[str, str], ...] = ( ("en-gb", "English (British)"), ("ar-ar", "العربية"), ("cs-cz", "Česky"), @@ -204,9 +204,9 @@ LANGUAGES = ( ("zh-hans", "简体中文"), ) -LANGUAGE_CODE = "en-gb" +LANGUAGE_CODE: str = "en-gb" -CURRENCIES = ( +CURRENCIES: tuple[tuple[str, str], ...] = ( ("en-gb", "EUR"), ("ar-ar", "AED"), ("cs-cz", "CZK"), @@ -227,29 +227,29 @@ CURRENCIES = ( ("zh-hans", "CNY"), ) -CURRENCY_CODE = dict(CURRENCIES).get(LANGUAGE_CODE) +CURRENCY_CODE: str = dict(CURRENCIES).get(LANGUAGE_CODE) -MODELTRANSLATION_FALLBACK_LANGUAGES = (LANGUAGE_CODE, "en-us", "de-de") +MODELTRANSLATION_FALLBACK_LANGUAGES: tuple = (LANGUAGE_CODE, "en-us", "de-de") -ROOT_URLCONF = "evibes.urls" +ROOT_URLCONF: str = "evibes.urls" -WSGI_APPLICATION = "evibes.wsgi.application" +WSGI_APPLICATION: str = "evibes.wsgi.application" -ASGI_APPLICATION = "evibes.asgi.application" +ASGI_APPLICATION: str = "evibes.asgi.application" -DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" +DEFAULT_AUTO_FIELD: str = "django.db.models.BigAutoField" -TIME_ZONE = getenv("TIME_ZONE", "Europe/London") +TIME_ZONE: str = getenv("TIME_ZONE", "Europe/London") -STATIC_URL = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/static/" -STATIC_ROOT = BASE_DIR / "static" +STATIC_URL: str = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/static/" +STATIC_ROOT: Path = BASE_DIR / "static" -MEDIA_URL = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/media/" -MEDIA_ROOT = BASE_DIR / "media" +MEDIA_URL: str = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/media/" +MEDIA_ROOT: Path = BASE_DIR / "media" -AUTH_USER_MODEL = "vibes_auth.User" +AUTH_USER_MODEL: str = "vibes_auth.User" -AUTH_PASSWORD_VALIDATORS = [ +AUTH_PASSWORD_VALIDATORS: list[dict[str, str | int]] = [ { "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", }, @@ -264,17 +264,17 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] -APPEND_SLASH = True +APPEND_SLASH: bool = True -ROOT_HOSTCONF = "evibes.hosts" -DEFAULT_HOST = "api" -REDIS_PASSWORD = getenv("REDIS_PASSWORD", default="") +ROOT_HOSTCONF: str = "evibes.hosts" +DEFAULT_HOST: str = "api" +REDIS_PASSWORD: str = getenv("REDIS_PASSWORD", default="") -INTERNAL_IPS = [ +INTERNAL_IPS: list[str] = [ "127.0.0.1", ] -DAISY_SETTINGS = { +DAISY_SETTINGS: dict[str, str | list[str] | dict[str, str] | None | bool | int | float | list[dict[str, str]]] = { "SITE_LOGO": "/static/favicon.ico", "EXTRA_STYLES": [], "EXTRA_SCRIPTS": [], @@ -335,7 +335,7 @@ if getenv("SENTRY_DSN"): from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.redis import RedisIntegration - ignore_errors = [ + ignore_errors: list[str] = [ "django.http.response.Http404", "django.core.exceptions.PermissionDenied", "django.core.exceptions.BadRequest", @@ -370,15 +370,15 @@ if getenv("SENTRY_DSN"): ignore_errors=ignore_errors, ) -SESSION_COOKIE_HTTPONLY = True -CSRF_COOKIE_HTTPONLY = True -LANGUAGE_COOKIE_HTTPONLY = True +SESSION_COOKIE_HTTPONLY: bool = True +CSRF_COOKIE_HTTPONLY: bool = True +LANGUAGE_COOKIE_HTTPONLY: bool = True -DATA_UPLOAD_MAX_NUMBER_FIELDS = 8888 +DATA_UPLOAD_MAX_NUMBER_FIELDS: int = 8888 -ADMINS = [("Egor Gorbunov", "contact@fureunoir.com")] +ADMINS: list[tuple[str, ...]] = [("Egor Gorbunov", "contact@fureunoir.com")] -STORAGES = { +STORAGES: dict[str, dict[str, str | int | bool | None]] = { "default": { "BACKEND": "django.core.files.storage.FileSystemStorage", }, diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index 46bb4c4f..a7841b97 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -1,9 +1,11 @@ from datetime import timedelta +from django.utils.translation import gettext_lazy as _ + from evibes.settings.base import * # noqa: F403 from evibes.settings.constance import CONSTANCE_CONFIG -REST_FRAMEWORK = { +REST_FRAMEWORK: dict[str, int | str | dict[str, str | bool]] = { "DEFAULT_PAGINATION_CLASS": "evibes.pagination.CustomPagination", "PAGE_SIZE": 30, "DEFAULT_AUTHENTICATION_CLASSES": [ @@ -28,7 +30,7 @@ REST_FRAMEWORK = { }, } -SIMPLE_JWT = { +SIMPLE_JWT: dict[str, timedelta | str | bool] = { "ACCESS_TOKEN_LIFETIME": timedelta(hours=8) if not DEBUG # noqa: F405 else timedelta(hours=88), @@ -42,7 +44,8 @@ SIMPLE_JWT = { "AUTH_HEADER_NAME": "HTTP_X_EVIBES_AUTH", } -SPECTACULAR_B2B_DESCRIPTION = f""" +# type: ignore +SPECTACULAR_B2B_DESCRIPTION = _(f""" Welcome to the {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} B2B API documentation. The {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} B2B API is designed to provide seamless integration for merchants selling a wide range of electronics. Through this API, partnered merchants can manage products, orders, and inventory with ease, while accessing real-time stock levels. @@ -63,9 +66,10 @@ The {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} B2B API is designed to provide sea ## Version Current API version: {EVIBES_VERSION} -""" # noqa: E501, F405 +""") # noqa: E501, F405 -SPECTACULAR_PLATFORM_DESCRIPTION = f""" +# type: ignore +SPECTACULAR_PLATFORM_DESCRIPTION = _(f""" Welcome to the {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} Platform API documentation. The {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} API is the central hub for managing product listings, monitoring orders, and accessing analytics for your electronics store. It provides RESTful endpoints for managing your store’s backend operations and includes both REST and GraphQL options. @@ -89,7 +93,7 @@ The {CONSTANCE_CONFIG.get("PROJECT_NAME")[0]} API is the central hub for managin ## Version Current API version: {EVIBES_VERSION} -""" # noqa: E501, F405 +""") # noqa: E501, F405 SPECTACULAR_PLATFORM_SETTINGS = { "TITLE": f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]} API", diff --git a/evibes/urls.py b/evibes/urls.py index 637600f5..e8ac27db 100644 --- a/evibes/urls.py +++ b/evibes/urls.py @@ -1 +1 @@ -urlpatterns = [] +urlpatterns: list = [] diff --git a/evibes/wsgi.py b/evibes/wsgi.py index 4f41335b..dc47d3ed 100644 --- a/evibes/wsgi.py +++ b/evibes/wsgi.py @@ -1,5 +1,5 @@ """ -WSGI config for evibes project. +WSGI config for the eVibes project. It exposes the WSGI callable as a module-level variable named ``application``. diff --git a/payments/locale/ar_AR/LC_MESSAGES/django.mo b/payments/locale/ar_AR/LC_MESSAGES/django.mo index b92f99c3..d0be91f6 100644 Binary files a/payments/locale/ar_AR/LC_MESSAGES/django.mo and b/payments/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ar_AR/LC_MESSAGES/django.po b/payments/locale/ar_AR/LC_MESSAGES/django.po index 4cfacc0f..967a5023 100644 --- a/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: ar-ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "تفعيل حسابك" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "الشعار" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "مرحباً %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "شكرًا لك على تسجيلك في %(config.PROJECT_NAME)s. يرجى تفعيل حسابك بالنقر فوق " "الزر أدناه:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "تفعيل الحساب" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"تفعيل\n" +" الحساب" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "إذا كان الزر أعلاه لا يعمل، يرجى نسخ عنوان URL التالي ولصقه في متصفح الويب " "الخاص بك:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "مع أطيب التحيات,
فريق %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "جميع الحقوق محفوظة." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"جميع الحقوق\n" +" محفوظة." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/cs_CZ/LC_MESSAGES/django.mo b/payments/locale/cs_CZ/LC_MESSAGES/django.mo index bd52b609..c07bb4e6 100644 Binary files a/payments/locale/cs_CZ/LC_MESSAGES/django.mo and b/payments/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/payments/locale/cs_CZ/LC_MESSAGES/django.po b/payments/locale/cs_CZ/LC_MESSAGES/django.po index fa490283..ad12c44e 100644 --- a/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: cs-cz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Aktivace účtu" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hello %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Děkujeme, že jste se přihlásili k odběru %(config.PROJECT_NAME)s. Aktivujte " "prosím svůj účet kliknutím na tlačítko níže:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Aktivace účtu" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Aktivace\n" +" Účet" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte do webového " "prohlížeče následující adresu URL:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "S pozdravem,
Tým %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Všechna práva vyhrazena." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Všechna práva\n" +" vyhrazena." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/da_DK/LC_MESSAGES/django.mo b/payments/locale/da_DK/LC_MESSAGES/django.mo index 4b997c64..135fd067 100644 Binary files a/payments/locale/da_DK/LC_MESSAGES/django.mo and b/payments/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/payments/locale/da_DK/LC_MESSAGES/django.po b/payments/locale/da_DK/LC_MESSAGES/django.po index adb8d11d..a681b853 100644 --- a/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/payments/locale/da_DK/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: da-dk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Aktivér din konto" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hej %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Tak, fordi du har tilmeldt dig %(config.PROJECT_NAME)s. Aktivér venligst din" " konto ved at klikke på knappen nedenfor:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Aktiver konto" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Aktiver\n" +" Konto" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Hvis ovenstående knap ikke virker, bedes du kopiere og sætte følgende URL " "ind i din webbrowser:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Med venlig hilsen,
%(config.PROJECT_NAME)s Team" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Alle rettigheder forbeholdes." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Alle rettigheder\n" +" forbeholdt." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/de_DE/LC_MESSAGES/django.mo b/payments/locale/de_DE/LC_MESSAGES/django.mo index 3e1ae073..c9c9d2de 100644 Binary files a/payments/locale/de_DE/LC_MESSAGES/django.mo and b/payments/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/payments/locale/de_DE/LC_MESSAGES/django.po b/payments/locale/de_DE/LC_MESSAGES/django.po index c42f4f84..608692f2 100644 --- a/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/payments/locale/de_DE/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: de-de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,49 +67,57 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM} liegen" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Aktivieren Sie Ihr Konto" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hallo %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Vielen Dank, dass Sie sich für %(config.PROJECT_NAME)s angemeldet haben. " "Bitte aktivieren Sie Ihr Konto, indem Sie auf die Schaltfläche unten " "klicken:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Konto freischalten" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Aktivieren Sie\n" +" Konto" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die " "folgende URL und fügen Sie sie in Ihren Webbrowser ein:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Mit freundlichen Grüßen,
Das %(config.PROJECT_NAME)s Team" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Alle Rechte vorbehalten." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Alle Rechte\n" +" vorbehalten." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/en_GB/LC_MESSAGES/django.mo b/payments/locale/en_GB/LC_MESSAGES/django.mo index b580d82c..b8ff6978 100644 Binary files a/payments/locale/en_GB/LC_MESSAGES/django.mo and b/payments/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/payments/locale/en_GB/LC_MESSAGES/django.po b/payments/locale/en_GB/LC_MESSAGES/django.po index 57182a9f..843da461 100644 --- a/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/payments/locale/en_GB/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -63,44 +63,64 @@ msgstr "Processing details" #: payments/models.py:56 #, python-brace-format -msgid "transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" -msgstr "Transaction amount must fit into {config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +msgid "" +"transaction amount must fit into " +"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" +msgstr "" +"Transaction amount must fit into " +"{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Activate Your Account" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hello %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format -msgid "Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your account by clicking the button below:" -msgstr "Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your account by clicking the button below:" +msgid "" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" +msgstr "" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " +"account by clicking the button below:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Activate Account" +#: payments/templates/balance_deposit_email.html:105 +msgid "" +"Activate\n" +" Account" +msgstr "" +"Activate\n" +" Account" -#: payments/templates/balance_deposit_email.html:95 -msgid "If the button above does not work, please copy and paste the following URL into your web browser:" -msgstr "If the button above does not work, please copy and paste the following URL into your web browser:" +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"If the button above does not work, please copy and paste the following URL " +"into your web browser:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Best regards,
The %(config.PROJECT_NAME)s Team" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "All rights reserved." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"All rights\n" +" reserved." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" @@ -110,3 +130,6 @@ msgstr "A provider to get rates from is required" #, python-brace-format msgid "couldn't find provider {provider}" msgstr "Couldn't find provider {provider}" + +#~ msgid "Activate Account" +#~ msgstr "Activate Account" diff --git a/payments/locale/en_US/LC_MESSAGES/django.mo b/payments/locale/en_US/LC_MESSAGES/django.mo index 1544710d..ad9b1d06 100644 Binary files a/payments/locale/en_US/LC_MESSAGES/django.mo and b/payments/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/payments/locale/en_US/LC_MESSAGES/django.po b/payments/locale/en_US/LC_MESSAGES/django.po index a478d089..3f498872 100644 --- a/payments/locale/en_US/LC_MESSAGES/django.po +++ b/payments/locale/en_US/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: en-us\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Activate Your Account" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hello %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " "account by clicking the button below:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Activate Account" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Activate\n" +" Account" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "If the button above does not work, please copy and paste the following URL " "into your web browser:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Best regards,
The %(config.PROJECT_NAME)s Team" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "All rights reserved." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"All rights\n" +" reserved." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/es_ES/LC_MESSAGES/django.mo b/payments/locale/es_ES/LC_MESSAGES/django.mo index 785c3999..99797a81 100644 Binary files a/payments/locale/es_ES/LC_MESSAGES/django.mo and b/payments/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/payments/locale/es_ES/LC_MESSAGES/django.po b/payments/locale/es_ES/LC_MESSAGES/django.po index a0116ef6..b3ad4036 100644 --- a/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/payments/locale/es_ES/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: es-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Activar su cuenta" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logotipo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hola %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Gracias por registrarse en %(config.PROJECT_NAME)s. Por favor, active su " "cuenta haciendo clic en el botón de abajo:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Activar cuenta" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Activar\n" +" Cuenta" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Si el botón anterior no funciona, copie y pegue la siguiente URL en su " "navegador:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Saludos cordiales,
El equipo de %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Todos los derechos reservados." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Todos los derechos\n" +" reservados." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/fr_FR/LC_MESSAGES/django.mo b/payments/locale/fr_FR/LC_MESSAGES/django.mo index c41ed853..8a76bdf4 100644 Binary files a/payments/locale/fr_FR/LC_MESSAGES/django.mo and b/payments/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/fr_FR/LC_MESSAGES/django.po b/payments/locale/fr_FR/LC_MESSAGES/django.po index 225edb24..4389b03b 100644 --- a/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: fr-fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Activer votre compte" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Bonjour %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Merci de vous être inscrit à %(config.PROJECT_NAME)s. Veuillez activer votre" " compte en cliquant sur le bouton ci-dessous :" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Activer le compte" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Activer\n" +" Compte" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL " "suivante dans votre navigateur web :" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Meilleures salutations,
L'équipe %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Tous droits réservés." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Tous les droits\n" +" réservés." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/hi_IN/LC_MESSAGES/django.mo b/payments/locale/hi_IN/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/payments/locale/hi_IN/LC_MESSAGES/django.mo and b/payments/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/payments/locale/hi_IN/LC_MESSAGES/django.po b/payments/locale/hi_IN/LC_MESSAGES/django.po index 8ed7c724..4b4e6ee0 100644 --- a/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -68,43 +68,47 @@ msgid "" msgstr "" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "" -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" msgstr "" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" + +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." msgstr "" #: payments/utils/__init__.py:8 diff --git a/payments/locale/it_IT/LC_MESSAGES/django.mo b/payments/locale/it_IT/LC_MESSAGES/django.mo index 04efac62..4ce44610 100644 Binary files a/payments/locale/it_IT/LC_MESSAGES/django.mo and b/payments/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/payments/locale/it_IT/LC_MESSAGES/django.po b/payments/locale/it_IT/LC_MESSAGES/django.po index 837798b1..59d42b95 100644 --- a/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/payments/locale/it_IT/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: it-it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Attivare il proprio account" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Ciao %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Grazie per esservi iscritti a %(config.PROJECT_NAME)s. Attivate il vostro " "account facendo clic sul pulsante sottostante:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Attivare l'account" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Attivare\n" +" Conto" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Se il pulsante qui sopra non funziona, copiate e incollate il seguente URL " "nel vostro browser web:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Cordiali saluti,
Il team %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Tutti i diritti riservati." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Tutti i diritti\n" +" riservati." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/ja_JP/LC_MESSAGES/django.mo b/payments/locale/ja_JP/LC_MESSAGES/django.mo index b697f584..c7bac423 100644 Binary files a/payments/locale/ja_JP/LC_MESSAGES/django.mo and b/payments/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ja_JP/LC_MESSAGES/django.po b/payments/locale/ja_JP/LC_MESSAGES/django.po index a5ec6adf..b80436be 100644 --- a/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: ja-jp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -70,44 +66,53 @@ msgstr "" "取引金額は{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}に収まる必要があります。" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "アカウントの有効化" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "ロゴ" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "こんにちは、%(user.first_name)sです、" -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" -msgstr "%(config.PROJECT_NAME)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" +msgstr "" +"%(config.PROJECT_NAME)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "アカウントの有効化" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"アクティベート\n" +" アカウント" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付けてください:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "よろしくお願いします、
%(config.PROJECT_NAME)sチーム" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "無断転載を禁じます。" +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"無断転載を禁じます。\n" +" 予約済み" #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/kk_KZ/LC_MESSAGES/django.mo b/payments/locale/kk_KZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/payments/locale/kk_KZ/LC_MESSAGES/django.mo and b/payments/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/payments/locale/kk_KZ/LC_MESSAGES/django.po b/payments/locale/kk_KZ/LC_MESSAGES/django.po index 8ed7c724..4b4e6ee0 100644 --- a/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -68,43 +68,47 @@ msgid "" msgstr "" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "" -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" msgstr "" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" + +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." msgstr "" #: payments/utils/__init__.py:8 diff --git a/payments/locale/nl_NL/LC_MESSAGES/django.mo b/payments/locale/nl_NL/LC_MESSAGES/django.mo index 7411f65e..493f537a 100644 Binary files a/payments/locale/nl_NL/LC_MESSAGES/django.mo and b/payments/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/payments/locale/nl_NL/LC_MESSAGES/django.po b/payments/locale/nl_NL/LC_MESSAGES/django.po index e95ea444..8eb184b5 100644 --- a/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: nl-nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Uw account activeren" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Hallo %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Bedankt voor het aanmelden bij %(config.PROJECT_NAME)s. Activeer je account " "door op de onderstaande knop te klikken:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Account activeren" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Activeer\n" +" Account" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Als de bovenstaande knop niet werkt, kopieer en plak dan de volgende URL in " "je webbrowser:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Vriendelijke groeten,
Het %(config.PROJECT_NAME)s Team" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Alle rechten voorbehouden." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Alle rechten\n" +" voorbehouden." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/pl_PL/LC_MESSAGES/django.mo b/payments/locale/pl_PL/LC_MESSAGES/django.mo index 08eff677..a59f4c09 100644 Binary files a/payments/locale/pl_PL/LC_MESSAGES/django.mo and b/payments/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/payments/locale/pl_PL/LC_MESSAGES/django.po b/payments/locale/pl_PL/LC_MESSAGES/django.po index ccfc9957..ee7abfe6 100644 --- a/payments/locale/pl_PL/LC_MESSAGES/django.po +++ b/payments/locale/pl_PL/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: pl-PL\n" +"Language: pl-pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -67,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}." #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Aktywacja konta" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Witaj %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Dziękujemy za zarejestrowanie się w %(config.PROJECT_NAME)s. Aktywuj swoje " "konto, klikając poniższy przycisk:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Aktywuj konto" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Aktywuj\n" +" Konto" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Jeśli powyższy przycisk nie działa, skopiuj i wklej poniższy adres URL do " "przeglądarki internetowej:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Z wyrazami szacunku,
Zespół %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Wszelkie prawa zastrzeżone." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Wszelkie prawa\n" +" zastrzeżone." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/pt_BR/LC_MESSAGES/django.mo b/payments/locale/pt_BR/LC_MESSAGES/django.mo index 454cfb81..ffbddda2 100644 Binary files a/payments/locale/pt_BR/LC_MESSAGES/django.mo and b/payments/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/payments/locale/pt_BR/LC_MESSAGES/django.po b/payments/locale/pt_BR/LC_MESSAGES/django.po index 992a7cb7..0b0cd5fa 100644 --- a/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: pt-br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Ativar sua conta" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logotipo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Olá %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Obrigado por se inscrever no %(config.PROJECT_NAME)s. Ative sua conta " "clicando no botão abaixo:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Ativar conta" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Ativar\n" +" Conta" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador" " da Web:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Com os melhores cumprimentos,
A equipe de %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Todos os direitos reservados." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Todos os direitos\n" +" reservados." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/ro_RO/LC_MESSAGES/django.mo b/payments/locale/ro_RO/LC_MESSAGES/django.mo index f5715824..ad9753ae 100644 Binary files a/payments/locale/ro_RO/LC_MESSAGES/django.mo and b/payments/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ro_RO/LC_MESSAGES/django.po b/payments/locale/ro_RO/LC_MESSAGES/django.po index 609c9d55..d96ef17d 100644 --- a/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: ro-ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Activați contul dvs." -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Logo" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Bună ziua %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Vă mulțumim pentru înscrierea la %(config.PROJECT_NAME)s. Vă rugăm să vă " "activați contul făcând clic pe butonul de mai jos:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Activați contul" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Activare\n" +" Cont" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți " "următoarea adresă URL în browserul dvs. web:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "Salutări,
Echipa %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Toate drepturile rezervate." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Toate drepturile\n" +" rezervate." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/ru_RU/LC_MESSAGES/django.mo b/payments/locale/ru_RU/LC_MESSAGES/django.mo index 117e8355..cfaa0f4f 100644 Binary files a/payments/locale/ru_RU/LC_MESSAGES/django.mo and b/payments/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/payments/locale/ru_RU/LC_MESSAGES/django.po b/payments/locale/ru_RU/LC_MESSAGES/django.po index b18a846a..3d73d26b 100644 --- a/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: ru-ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,48 +67,56 @@ msgstr "" "{config.PAYMENT_GATEWAY_MINIMUM}-{config.PAYMENT_GATEWAY_MAXIMUM}" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "Активируйте свою учетную запись" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "Логотип" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "Здравствуйте %(user.first_name)s," -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" msgstr "" "Благодарим вас за регистрацию в %(config.PROJECT_NAME)s. Пожалуйста, " "активируйте свой аккаунт, нажав на кнопку ниже:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "Активировать учетную запись" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"Активировать\n" +" Учетная запись" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Если кнопка выше не работает, скопируйте и вставьте следующий URL-адрес в " "свой веб-браузер:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "С наилучшими пожеланиями,
Команда %(config.PROJECT_NAME)s" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "Все права защищены." +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"Все права\n" +" зарезервировано." #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/locale/zh_Hans/LC_MESSAGES/django.mo b/payments/locale/zh_Hans/LC_MESSAGES/django.mo index 010d2519..644ce2a8 100644 Binary files a/payments/locale/zh_Hans/LC_MESSAGES/django.mo and b/payments/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/payments/locale/zh_Hans/LC_MESSAGES/django.po b/payments/locale/zh_Hans/LC_MESSAGES/django.po index 3d57814e..fe89d3bc 100644 --- a/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,17 +1,13 @@ -# eVibes Translations. -# Copyright (C) 2025 Egor "fureunoir" Gorbunov -# This file is distributed under the same license as the eVibes package. -# EGOR GORBUNOV , 2025. # msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 14:09+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: BRITISH ENGLISH\n" +"Language: zh-hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -71,44 +67,52 @@ msgstr "" "的规定。" #: payments/templates/balance_deposit_email.html:8 -#: payments/templates/balance_deposit_email.html:89 +#: payments/templates/balance_deposit_email.html:100 msgid "Activate Your Account" msgstr "激活账户" -#: payments/templates/balance_deposit_email.html:83 +#: payments/templates/balance_deposit_email.html:94 msgid "Logo" msgstr "标志" -#: payments/templates/balance_deposit_email.html:90 +#: payments/templates/balance_deposit_email.html:101 #, python-format msgid "Hello %(user.first_name)s," msgstr "您好 %(user.first_name)s、" -#: payments/templates/balance_deposit_email.html:91 +#: payments/templates/balance_deposit_email.html:102 #, python-format msgid "" -"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your " -"account by clicking the button below:" -msgstr "感谢您注册 %(config.PROJECT_NAME)s。请点击下面的按钮激活您的帐户:" +"Thank you for signing up for %(config.PROJECT_NAME)s. Please activate your\n" +" account by clicking the button below:" +msgstr "感谢您注册%(config.PROJECT_NAME)s_。请点击下面的按钮激活您的帐户:" -#: payments/templates/balance_deposit_email.html:93 -msgid "Activate Account" -msgstr "激活账户" - -#: payments/templates/balance_deposit_email.html:95 +#: payments/templates/balance_deposit_email.html:105 msgid "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" Account" +msgstr "" +"激活\n" +" 账户" + +#: payments/templates/balance_deposit_email.html:108 +msgid "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "如果上面的按钮不起作用,请将以下 URL 复制并粘贴到您的浏览器中:" -#: payments/templates/balance_deposit_email.html:97 +#: payments/templates/balance_deposit_email.html:111 #, python-format msgid "Best regards,
The %(config.PROJECT_NAME)s Team" msgstr "致以最诚挚的问候,
%(config.PROJECT_NAME)s团队" -#: payments/templates/balance_deposit_email.html:102 -msgid "All rights reserved." -msgstr "保留所有权利。" +#: payments/templates/balance_deposit_email.html:116 +msgid "" +"All rights\n" +" reserved." +msgstr "" +"保留所有权利。\n" +" 保留所有权利。" #: payments/utils/__init__.py:8 msgid "a provider to get rates from is required" diff --git a/payments/models.py b/payments/models.py index b200262f..b5fc6d66 100644 --- a/payments/models.py +++ b/payments/models.py @@ -7,8 +7,8 @@ from core.abstract import NiceModel class Balance(NiceModel): - amount = FloatField(null=False, blank=False, default=0) - user = OneToOneField( + amount: FloatField = FloatField(null=False, blank=False, default=0) + user: OneToOneField = OneToOneField( to="vibes_auth.User", on_delete=CASCADE, blank=True, null=True, related_name="payments_balance" ) @@ -26,11 +26,11 @@ class Balance(NiceModel): class Transaction(NiceModel): - amount = FloatField(null=False, blank=False) - balance = ForeignKey(Balance, on_delete=CASCADE, blank=True, null=True, related_name="transactions") - currency = CharField(max_length=3, null=False, blank=False) - payment_method = CharField(max_length=20, null=True, blank=True) # noqa: DJ001 - order = ForeignKey( + amount: FloatField = FloatField(null=False, blank=False) + balance: ForeignKey = ForeignKey(Balance, on_delete=CASCADE, blank=True, null=True, related_name="transactions") + currency: CharField = CharField(max_length=3, null=False, blank=False) + payment_method: CharField = CharField(max_length=20, null=True, blank=True) + order: ForeignKey = ForeignKey( "core.Order", on_delete=CASCADE, blank=True, @@ -38,7 +38,7 @@ class Transaction(NiceModel): help_text=_("order to process after paid"), related_name="payments_transactions", ) - process = JSONField(verbose_name=_("processing details"), default=dict) + process: JSONField = JSONField(verbose_name=_("processing details"), default=dict) def __str__(self): return f"{self.balance.user.email} | {self.amount}" diff --git a/payments/templates/balance_deposit_email.html b/payments/templates/balance_deposit_email.html index c2ac1d1d..a330b7de 100644 --- a/payments/templates/balance_deposit_email.html +++ b/payments/templates/balance_deposit_email.html @@ -13,35 +13,42 @@ -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } + body { margin: 0 !important; padding: 0 !important; width: 100% !important; } + /* Use fluid layout for images */ img { max-width: 100%; height: auto; } + /* Style adjustments for different clients */ .email-container { max-width: 600px; margin: 0 auto; } + .content-cell { border: 3px solid #000000; padding: 20px; font-family: Arial, sans-serif; } + .header { background-color: #000000; padding: 20px; text-align: center; } + .header img { width: 120px; /* Adjust logo size */ height: auto; } + .footer { background-color: #000000; padding: 10px; @@ -49,6 +56,7 @@ font-size: 12px; color: #888; } + .button { background-color: #000000; color: white; @@ -58,9 +66,11 @@ margin-top: 20px; transition: 0.2s; } + .button:hover { background-color: #3a3a3a; } + @media only screen and (max-width: 600px) { .email-container { width: 100% !important; @@ -71,40 +81,45 @@ - - - - - -
- - - - - - - - - - - - -
+ + + + + +
+ + + + + + + + + + + + +
diff --git a/poetry.lock b/poetry.lock index 730ec0e7..60e90f8f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -7,8 +7,8 @@ description = "aiosmtpd - asyncio based SMTP server" optional = false python-versions = ">=3.8" files = [ - { file = "aiosmtpd-1.4.6-py3-none-any.whl", hash = "sha256:72c99179ba5aa9ae0abbda6994668239b64a5ce054471955fe75f581d2592475" }, - { file = "aiosmtpd-1.4.6.tar.gz", hash = "sha256:5a811826e1a5a06c25ebc3e6c4a704613eb9a1bcf6b78428fbe865f4f6c9a4b8" }, + {file = "aiosmtpd-1.4.6-py3-none-any.whl", hash = "sha256:72c99179ba5aa9ae0abbda6994668239b64a5ce054471955fe75f581d2592475"}, + {file = "aiosmtpd-1.4.6.tar.gz", hash = "sha256:5a811826e1a5a06c25ebc3e6c4a704613eb9a1bcf6b78428fbe865f4f6c9a4b8"}, ] [package.dependencies] @@ -22,8 +22,8 @@ description = "Low-level AMQP client for Python (fork of amqplib)." optional = false python-versions = ">=3.6" files = [ - { file = "amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2" }, - { file = "amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432" }, + {file = "amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2"}, + {file = "amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432"}, ] [package.dependencies] @@ -33,11 +33,11 @@ vine = ">=5.0.0,<6.0.0" name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" -optional = true +optional = false python-versions = ">=3.8" files = [ - { file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" }, - { file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" }, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -47,14 +47,14 @@ description = "High level compatibility layer for multiple asynchronous event lo optional = false python-versions = ">=3.9" files = [ - { file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" }, - { file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }, + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, ] [package.dependencies] idna = ">=2.8" sniffio = ">=1.1" -typing_extensions = { version = ">=4.5", markers = "python_version < \"3.13\"" } +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] @@ -68,8 +68,8 @@ description = "Disable App Nap on macOS >= 10.9" optional = true python-versions = ">=3.6" files = [ - { file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c" }, - { file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee" }, + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] [[package]] @@ -79,8 +79,8 @@ description = "Argon2 for Python" optional = true python-versions = ">=3.8" files = [ - { file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741" }, - { file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1" }, + {file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741"}, + {file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1"}, ] [package.dependencies] @@ -93,27 +93,27 @@ description = "Low-level CFFI bindings for Argon2" optional = true python-versions = ">=3.6" files = [ - { file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082" }, - { file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f" }, - { file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93" }, - { file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194" }, - { file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f" }, - { file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5" }, - { file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351" }, - { file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7" }, - { file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583" }, - { file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d" }, - { file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670" }, - { file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb" }, - { file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a" }, + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, ] [package.dependencies] @@ -130,8 +130,8 @@ description = "Better dates & times for Python" optional = true python-versions = ">=3.8" files = [ - { file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80" }, - { file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85" }, + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, ] [package.dependencies] @@ -149,8 +149,8 @@ description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" files = [ - { file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47" }, - { file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590" }, + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, ] [package.extras] @@ -163,8 +163,8 @@ description = "Annotate AST trees with source code positions" optional = true python-versions = ">=3.8" files = [ - { file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" }, - { file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7" }, + {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, + {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, ] [package.extras] @@ -178,8 +178,8 @@ description = "Simple LRU cache for asyncio" optional = true python-versions = ">=3.9" files = [ - { file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943" }, - { file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb" }, + {file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943"}, + {file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb"}, ] [[package]] @@ -189,8 +189,8 @@ description = "Keep all y'all's __all__'s in sync" optional = false python-versions = ">=3.9" files = [ - { file = "atpublic-6.0.1-py3-none-any.whl", hash = "sha256:f9a23902faf5ca1fdc6436b3712d79452f71abc61a810d22be1f31b40a8004c5" }, - { file = "atpublic-6.0.1.tar.gz", hash = "sha256:718932844f5bdfdf5d80ad4c64e13964f22274b4f8937d54a8d3811d6bc5dc05" }, + {file = "atpublic-6.0.1-py3-none-any.whl", hash = "sha256:f9a23902faf5ca1fdc6436b3712d79452f71abc61a810d22be1f31b40a8004c5"}, + {file = "atpublic-6.0.1.tar.gz", hash = "sha256:718932844f5bdfdf5d80ad4c64e13964f22274b4f8937d54a8d3811d6bc5dc05"}, ] [[package]] @@ -200,8 +200,8 @@ description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" files = [ - { file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3" }, - { file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" }, + {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, + {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, ] [package.extras] @@ -212,6 +212,20 @@ docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphi tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +[[package]] +name = "authlib" +version = "1.6.0" +description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." +optional = false +python-versions = ">=3.9" +files = [ + {file = "authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d"}, + {file = "authlib-1.6.0.tar.gz", hash = "sha256:4367d32031b7af175ad3a323d571dc7257b7099d55978087ceae4a0d88cd3210"}, +] + +[package.dependencies] +cryptography = "*" + [[package]] name = "babel" version = "2.17.0" @@ -219,13 +233,30 @@ description = "Internationalization utilities" optional = true python-versions = ">=3.8" files = [ - { file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2" }, - { file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d" }, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] +[[package]] +name = "bandit" +version = "1.2.0" +description = "Security oriented static analyser for python code." +optional = false +python-versions = "*" +files = [ + {file = "bandit-1.2.0-py2.py3-none-any.whl", hash = "sha256:d8ceaab1ed58cc26ed40097c48e16c4ad208e23cdd9a570bb54493482d732849"}, + {file = "bandit-1.2.0.tar.gz", hash = "sha256:cb2265e740ab2290f8621dc9d6cd0ef22b53c85f986ef6285b1867338192da87"}, +] + +[package.dependencies] +GitPython = ">=1.0.1" +PyYAML = ">=3.10.0" +six = ">=1.9.0" +stevedore = ">=1.17.1" + [[package]] name = "bcrypt" version = "4.3.0" @@ -233,57 +264,57 @@ description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.8" files = [ - { file = "bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd" }, - { file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af" }, - { file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231" }, - { file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c" }, - { file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f" }, - { file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d" }, - { file = "bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4" }, - { file = "bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669" }, - { file = "bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb" }, - { file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d" }, - { file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f" }, - { file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732" }, - { file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef" }, - { file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304" }, - { file = "bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51" }, - { file = "bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62" }, - { file = "bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe" }, - { file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0" }, - { file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f" }, - { file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23" }, - { file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe" }, - { file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505" }, - { file = "bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a" }, - { file = "bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b" }, - { file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1" }, - { file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d" }, - { file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492" }, - { file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90" }, - { file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a" }, - { file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce" }, - { file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8" }, - { file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938" }, - { file = "bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18" }, + {file = "bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd"}, + {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f"}, + {file = "bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d"}, + {file = "bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4"}, + {file = "bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669"}, + {file = "bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb"}, + {file = "bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef"}, + {file = "bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304"}, + {file = "bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51"}, + {file = "bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62"}, + {file = "bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe"}, + {file = "bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe"}, + {file = "bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505"}, + {file = "bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a"}, + {file = "bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492"}, + {file = "bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8"}, + {file = "bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938"}, + {file = "bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18"}, ] [package.extras] @@ -297,8 +328,8 @@ description = "Screen-scraping library" optional = true python-versions = ">=3.7.0" files = [ - { file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b" }, - { file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195" }, + {file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b"}, + {file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195"}, ] [package.dependencies] @@ -319,10 +350,54 @@ description = "Python multiprocessing fork with improvements and bugfixes" optional = false python-versions = ">=3.7" files = [ - { file = "billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb" }, - { file = "billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f" }, + {file = "billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb"}, + {file = "billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f"}, ] +[[package]] +name = "black" +version = "25.1.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +files = [ + {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, + {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, + {file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"}, + {file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"}, + {file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"}, + {file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"}, + {file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"}, + {file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"}, + {file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"}, + {file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"}, + {file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"}, + {file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"}, + {file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"}, + {file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"}, + {file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"}, + {file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"}, + {file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"}, + {file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"}, + {file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"}, + {file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"}, + {file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"}, + {file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "bleach" version = "6.2.0" @@ -330,12 +405,12 @@ description = "An easy safelist-based HTML-sanitizing tool." optional = true python-versions = ">=3.9" files = [ - { file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e" }, - { file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f" }, + {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, + {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, ] [package.dependencies] -tinycss2 = { version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\"" } +tinycss2 = {version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\""} webencodings = "*" [package.extras] @@ -348,8 +423,8 @@ description = "Distributed Task Queue." optional = false python-versions = ">=3.8" files = [ - { file = "celery-5.5.2-py3-none-any.whl", hash = "sha256:54425a067afdc88b57cd8d94ed4af2ffaf13ab8c7680041ac2c4ac44357bdf4c" }, - { file = "celery-5.5.2.tar.gz", hash = "sha256:4d6930f354f9d29295425d7a37261245c74a32807c45d764bedc286afd0e724e" }, + {file = "celery-5.5.2-py3-none-any.whl", hash = "sha256:54425a067afdc88b57cd8d94ed4af2ffaf13ab8c7680041ac2c4ac44357bdf4c"}, + {file = "celery-5.5.2.tar.gz", hash = "sha256:4d6930f354f9d29295425d7a37261245c74a32807c45d764bedc286afd0e724e"}, ] [package.dependencies] @@ -404,8 +479,8 @@ description = "Simple Prometheus metrics exporter for Celery" optional = true python-versions = "*" files = [ - { file = "celery-prometheus-exporter-1.7.0.tar.gz", hash = "sha256:8fc2d5909921c44f01c8c1b7d956d92e6966f2e14eec196bf60735e39a0e0991" }, - { file = "celery_prometheus_exporter-1.7.0-py2-none-any.whl", hash = "sha256:a3ba0d3340b546ae82b36fef7645ccbc54c2b696fc3df05bb9ee28a402e710e1" }, + {file = "celery-prometheus-exporter-1.7.0.tar.gz", hash = "sha256:8fc2d5909921c44f01c8c1b7d956d92e6966f2e14eec196bf60735e39a0e0991"}, + {file = "celery_prometheus_exporter-1.7.0-py2-none-any.whl", hash = "sha256:a3ba0d3340b546ae82b36fef7645ccbc54c2b696fc3df05bb9ee28a402e710e1"}, ] [package.dependencies] @@ -416,11 +491,11 @@ prometheus-client = ">=0.0.20" name = "celery-stubs" version = "0.1.3" description = "celery stubs" -optional = true +optional = false python-versions = "*" files = [ - { file = "celery-stubs-0.1.3.tar.gz", hash = "sha256:0fb5345820f8a2bd14e6ffcbef2d10181e12e40f8369f551d7acc99d8d514919" }, - { file = "celery_stubs-0.1.3-py3-none-any.whl", hash = "sha256:dfb9ad27614a8af028b2055bb4a4ae99ca5e9a8d871428a506646d62153218d7" }, + {file = "celery-stubs-0.1.3.tar.gz", hash = "sha256:0fb5345820f8a2bd14e6ffcbef2d10181e12e40f8369f551d7acc99d8d514919"}, + {file = "celery_stubs-0.1.3-py3-none-any.whl", hash = "sha256:dfb9ad27614a8af028b2055bb4a4ae99ca5e9a8d871428a506646d62153218d7"}, ] [package.dependencies] @@ -434,8 +509,8 @@ description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" files = [ - { file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057" }, - { file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b" }, + {file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057"}, + {file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"}, ] [[package]] @@ -445,78 +520,89 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - { file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14" }, - { file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67" }, - { file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382" }, - { file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702" }, - { file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3" }, - { file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6" }, - { file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17" }, - { file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8" }, - { file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e" }, - { file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be" }, - { file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c" }, - { file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15" }, - { file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401" }, - { file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf" }, - { file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4" }, - { file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41" }, - { file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1" }, - { file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6" }, - { file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d" }, - { file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6" }, - { file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f" }, - { file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" }, - { file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655" }, - { file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0" }, - { file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4" }, - { file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c" }, - { file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36" }, - { file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5" }, - { file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff" }, - { file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99" }, - { file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93" }, - { file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3" }, - { file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8" }, - { file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65" }, - { file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903" }, - { file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e" }, - { file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2" }, - { file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3" }, - { file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683" }, - { file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5" }, - { file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4" }, - { file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd" }, - { file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed" }, - { file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9" }, - { file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d" }, - { file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a" }, - { file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b" }, - { file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964" }, - { file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9" }, - { file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc" }, - { file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c" }, - { file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1" }, - { file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8" }, - { file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1" }, - { file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16" }, - { file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36" }, - { file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8" }, - { file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576" }, - { file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87" }, - { file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0" }, - { file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3" }, - { file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595" }, - { file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a" }, - { file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e" }, - { file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7" }, - { file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662" }, - { file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824" }, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] pycparser = "*" +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + [[package]] name = "charset-normalizer" version = "3.4.2" @@ -524,113 +610,113 @@ description = "The Real First Universal Charset Detector. Open, modern and activ optional = false python-versions = ">=3.7" files = [ - { file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a" }, - { file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a" }, - { file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" }, - { file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" }, - { file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58" }, - { file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7" }, - { file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471" }, - { file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e" }, - { file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" }, - { file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }, + {file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a"}, + {file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a"}, + {file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c"}, + {file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7"}, + {file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58"}, + {file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7"}, + {file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471"}, + {file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e"}, + {file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0"}, + {file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63"}, ] [[package]] name = "click" -version = "8.2.1" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.10" +python-versions = ">=3.7" files = [ - { file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" }, - { file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }, + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] -colorama = { version = "*", markers = "platform_system == \"Windows\"" } +colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "click-didyoumean" @@ -639,8 +725,8 @@ description = "Enables git-like *did-you-mean* feature in click" optional = false python-versions = ">=3.6.2" files = [ - { file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c" }, - { file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463" }, + {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, + {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, ] [package.dependencies] @@ -653,8 +739,8 @@ description = "An extension module for click to enable registering CLI commands optional = false python-versions = "*" files = [ - { file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b" }, - { file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8" }, + {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, + {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, ] [package.dependencies] @@ -670,8 +756,8 @@ description = "REPL plugin for Click" optional = false python-versions = ">=3.6" files = [ - { file = "click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9" }, - { file = "click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812" }, + {file = "click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9"}, + {file = "click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812"}, ] [package.dependencies] @@ -688,8 +774,8 @@ description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - { file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" }, - { file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" }, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] @@ -699,12 +785,12 @@ description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" files = [ - { file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff" }, - { file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2" }, + {file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff"}, + {file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] @@ -716,8 +802,8 @@ description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus- optional = true python-versions = ">=3.8" files = [ - { file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3" }, - { file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e" }, + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, ] [package.dependencies] @@ -726,6 +812,85 @@ traitlets = ">=4" [package.extras] test = ["pytest"] +[[package]] +name = "coverage" +version = "7.8.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd8ec21e1443fd7a447881332f7ce9d35b8fbd2849e761bb290b584535636b0a"}, + {file = "coverage-7.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26c2396674816deaeae7ded0e2b42c26537280f8fe313335858ffff35019be"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aec326ed237e5880bfe69ad41616d333712c7937bcefc1343145e972938f9b3"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e818796f71702d7a13e50c70de2a1924f729228580bcba1607cccf32eea46e6"}, + {file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:546e537d9e24efc765c9c891328f30f826e3e4808e31f5d0f87c4ba12bbd1622"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab9b09a2349f58e73f8ebc06fac546dd623e23b063e5398343c5270072e3201c"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd51355ab8a372d89fb0e6a31719e825cf8df8b6724bee942fb5b92c3f016ba3"}, + {file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0774df1e093acb6c9e4d58bce7f86656aeed6c132a16e2337692c12786b32404"}, + {file = "coverage-7.8.2-cp310-cp310-win32.whl", hash = "sha256:00f2e2f2e37f47e5f54423aeefd6c32a7dbcedc033fcd3928a4f4948e8b96af7"}, + {file = "coverage-7.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:145b07bea229821d51811bf15eeab346c236d523838eda395ea969d120d13347"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b99058eef42e6a8dcd135afb068b3d53aff3921ce699e127602efff9956457a9"}, + {file = "coverage-7.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5feb7f2c3e6ea94d3b877def0270dff0947b8d8c04cfa34a17be0a4dc1836879"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:670a13249b957bb9050fab12d86acef7bf8f6a879b9d1a883799276e0d4c674a"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bdc8bf760459a4a4187b452213e04d039990211f98644c7292adf1e471162b5"}, + {file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07a989c867986c2a75f158f03fdb413128aad29aca9d4dbce5fc755672d96f11"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2db10dedeb619a771ef0e2949ccba7b75e33905de959c2643a4607bef2f3fb3a"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e6ea7dba4e92926b7b5f0990634b78ea02f208d04af520c73a7c876d5a8d36cb"}, + {file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ef2f22795a7aca99fc3c84393a55a53dd18ab8c93fb431004e4d8f0774150f54"}, + {file = "coverage-7.8.2-cp311-cp311-win32.whl", hash = "sha256:641988828bc18a6368fe72355df5f1703e44411adbe49bba5644b941ce6f2e3a"}, + {file = "coverage-7.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8ab4a51cb39dc1933ba627e0875046d150e88478dbe22ce145a68393e9652975"}, + {file = "coverage-7.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:8966a821e2083c74d88cca5b7dcccc0a3a888a596a04c0b9668a891de3a0cc53"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2f6fe3654468d061942591aef56686131335b7a8325684eda85dacdf311356c"}, + {file = "coverage-7.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76090fab50610798cc05241bf83b603477c40ee87acd358b66196ab0ca44ffa1"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bd0a0a5054be160777a7920b731a0570284db5142abaaf81bcbb282b8d99279"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da23ce9a3d356d0affe9c7036030b5c8f14556bd970c9b224f9c8205505e3b99"}, + {file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9392773cffeb8d7e042a7b15b82a414011e9d2b5fdbbd3f7e6a6b17d5e21b20"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:876cbfd0b09ce09d81585d266c07a32657beb3eaec896f39484b631555be0fe2"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3da9b771c98977a13fbc3830f6caa85cae6c9c83911d24cb2d218e9394259c57"}, + {file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a990f6510b3292686713bfef26d0049cd63b9c7bb17e0864f133cbfd2e6167f"}, + {file = "coverage-7.8.2-cp312-cp312-win32.whl", hash = "sha256:bf8111cddd0f2b54d34e96613e7fbdd59a673f0cf5574b61134ae75b6f5a33b8"}, + {file = "coverage-7.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:86a323a275e9e44cdf228af9b71c5030861d4d2610886ab920d9945672a81223"}, + {file = "coverage-7.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:820157de3a589e992689ffcda8639fbabb313b323d26388d02e154164c57b07f"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea561010914ec1c26ab4188aef8b1567272ef6de096312716f90e5baa79ef8ca"}, + {file = "coverage-7.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cb86337a4fcdd0e598ff2caeb513ac604d2f3da6d53df2c8e368e07ee38e277d"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a4636ddb666971345541b59899e969f3b301143dd86b0ddbb570bd591f1e85"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5040536cf9b13fb033f76bcb5e1e5cb3b57c4807fef37db9e0ed129c6a094257"}, + {file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc67994df9bcd7e0150a47ef41278b9e0a0ea187caba72414b71dc590b99a108"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e6c86888fd076d9e0fe848af0a2142bf606044dc5ceee0aa9eddb56e26895a0"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:684ca9f58119b8e26bef860db33524ae0365601492e86ba0b71d513f525e7050"}, + {file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8165584ddedb49204c4e18da083913bdf6a982bfb558632a79bdaadcdafd0d48"}, + {file = "coverage-7.8.2-cp313-cp313-win32.whl", hash = "sha256:34759ee2c65362163699cc917bdb2a54114dd06d19bab860725f94ef45a3d9b7"}, + {file = "coverage-7.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:2f9bc608fbafaee40eb60a9a53dbfb90f53cc66d3d32c2849dc27cf5638a21e3"}, + {file = "coverage-7.8.2-cp313-cp313-win_arm64.whl", hash = "sha256:9fe449ee461a3b0c7105690419d0b0aba1232f4ff6d120a9e241e58a556733f7"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8369a7c8ef66bded2b6484053749ff220dbf83cba84f3398c84c51a6f748a008"}, + {file = "coverage-7.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:159b81df53a5fcbc7d45dae3adad554fdbde9829a994e15227b3f9d816d00b36"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6fcbbd35a96192d042c691c9e0c49ef54bd7ed865846a3c9d624c30bb67ce46"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05364b9cc82f138cc86128dc4e2e1251c2981a2218bfcd556fe6b0fbaa3501be"}, + {file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46d532db4e5ff3979ce47d18e2fe8ecad283eeb7367726da0e5ef88e4fe64740"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4000a31c34932e7e4fa0381a3d6deb43dc0c8f458e3e7ea6502e6238e10be625"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:43ff5033d657cd51f83015c3b7a443287250dc14e69910577c3e03bd2e06f27b"}, + {file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94316e13f0981cbbba132c1f9f365cac1d26716aaac130866ca812006f662199"}, + {file = "coverage-7.8.2-cp313-cp313t-win32.whl", hash = "sha256:3f5673888d3676d0a745c3d0e16da338c5eea300cb1f4ada9c872981265e76d8"}, + {file = "coverage-7.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:2c08b05ee8d7861e45dc5a2cc4195c8c66dca5ac613144eb6ebeaff2d502e73d"}, + {file = "coverage-7.8.2-cp313-cp313t-win_arm64.whl", hash = "sha256:1e1448bb72b387755e1ff3ef1268a06617afd94188164960dba8d0245a46004b"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:496948261eaac5ac9cf43f5d0a9f6eb7a6d4cb3bedb2c5d294138142f5c18f2a"}, + {file = "coverage-7.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eacd2de0d30871eff893bab0b67840a96445edcb3c8fd915e6b11ac4b2f3fa6d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b039ffddc99ad65d5078ef300e0c7eed08c270dc26570440e3ef18beb816c1ca"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e49824808d4375ede9dd84e9961a59c47f9113039f1a525e6be170aa4f5c34d"}, + {file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b069938961dfad881dc2f8d02b47645cd2f455d3809ba92a8a687bf513839787"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:de77c3ba8bb686d1c411e78ee1b97e6e0b963fb98b1637658dd9ad2c875cf9d7"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1676628065a498943bd3f64f099bb573e08cf1bc6088bbe33cf4424e0876f4b3"}, + {file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8e1a26e7e50076e35f7afafde570ca2b4d7900a491174ca357d29dece5aacee7"}, + {file = "coverage-7.8.2-cp39-cp39-win32.whl", hash = "sha256:6782a12bf76fa61ad9350d5a6ef5f3f020b57f5e6305cbc663803f2ebd0f270a"}, + {file = "coverage-7.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1efa4166ba75ccefd647f2d78b64f53f14fb82622bc94c5a5cb0a622f50f1c9e"}, + {file = "coverage-7.8.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:ec455eedf3ba0bbdf8f5a570012617eb305c63cb9f03428d39bf544cb2b94837"}, + {file = "coverage-7.8.2-py3-none-any.whl", hash = "sha256:726f32ee3713f7359696331a18daf0c3b3a70bb0ae71141b9d3c52be7c595e32"}, + {file = "coverage-7.8.2.tar.gz", hash = "sha256:a886d531373a1f6ff9fad2a2ba4a045b68467b779ae729ee0b3b10ac20033b27"}, +] + +[package.extras] +toml = ["tomli"] + [[package]] name = "cron-descriptor" version = "1.4.5" @@ -733,8 +898,8 @@ description = "A Python library that converts cron expressions into human readab optional = true python-versions = "*" files = [ - { file = "cron_descriptor-1.4.5-py3-none-any.whl", hash = "sha256:736b3ae9d1a99bc3dbfc5b55b5e6e7c12031e7ba5de716625772f8b02dcd6013" }, - { file = "cron_descriptor-1.4.5.tar.gz", hash = "sha256:f51ce4ffc1d1f2816939add8524f206c376a42c87a5fca3091ce26725b3b1bca" }, + {file = "cron_descriptor-1.4.5-py3-none-any.whl", hash = "sha256:736b3ae9d1a99bc3dbfc5b55b5e6e7c12031e7ba5de716625772f8b02dcd6013"}, + {file = "cron_descriptor-1.4.5.tar.gz", hash = "sha256:f51ce4ffc1d1f2816939add8524f206c376a42c87a5fca3091ce26725b3b1bca"}, ] [package.extras] @@ -747,47 +912,47 @@ description = "cryptography is a package which provides cryptographic recipes an optional = false python-versions = "!=3.9.0,!=3.9.1,>=3.7" files = [ - { file = "cryptography-44.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01" }, - { file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d" }, - { file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904" }, - { file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44" }, - { file = "cryptography-44.0.3-cp37-abi3-win32.whl", hash = "sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d" }, - { file = "cryptography-44.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d" }, - { file = "cryptography-44.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c" }, - { file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f" }, - { file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5" }, - { file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b" }, - { file = "cryptography-44.0.3-cp39-abi3-win32.whl", hash = "sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028" }, - { file = "cryptography-44.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:cad399780053fb383dc067475135e41c9fe7d901a97dd5d9c5dfb5611afc0d7d" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:21a83f6f35b9cc656d71b5de8d519f566df01e660ac2578805ab245ffd8523f8" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fc3c9babc1e1faefd62704bb46a69f359a9819eb0292e40df3fb6e3574715cd4" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:e909df4053064a97f1e6565153ff8bb389af12c5c8d29c343308760890560aff" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:dad80b45c22e05b259e33ddd458e9e2ba099c86ccf4e88db7bbab4b747b18d06" }, - { file = "cryptography-44.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:479d92908277bed6e1a1c69b277734a7771c2b78633c224445b5c60a9f4bc1d9" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:896530bc9107b226f265effa7ef3f21270f18a2026bc09fed1ebd7b66ddf6375" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9b4d4a5dbee05a2c390bf212e78b99434efec37b17a4bff42f50285c5c8c9647" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02f55fb4f8b79c1221b0961488eaae21015b69b210e18c386b69de182ebb1259" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:dd3db61b8fe5be220eee484a17233287d0be6932d056cf5738225b9c05ef4fff" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:978631ec51a6bbc0b7e58f23b68a8ce9e5f09721940933e9c217068388789fe5" }, - { file = "cryptography-44.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c" }, - { file = "cryptography-44.0.3.tar.gz", hash = "sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053" }, + {file = "cryptography-44.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01"}, + {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d"}, + {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904"}, + {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44"}, + {file = "cryptography-44.0.3-cp37-abi3-win32.whl", hash = "sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d"}, + {file = "cryptography-44.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d"}, + {file = "cryptography-44.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c"}, + {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f"}, + {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5"}, + {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b"}, + {file = "cryptography-44.0.3-cp39-abi3-win32.whl", hash = "sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028"}, + {file = "cryptography-44.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:cad399780053fb383dc067475135e41c9fe7d901a97dd5d9c5dfb5611afc0d7d"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:21a83f6f35b9cc656d71b5de8d519f566df01e660ac2578805ab245ffd8523f8"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fc3c9babc1e1faefd62704bb46a69f359a9819eb0292e40df3fb6e3574715cd4"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:e909df4053064a97f1e6565153ff8bb389af12c5c8d29c343308760890560aff"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:dad80b45c22e05b259e33ddd458e9e2ba099c86ccf4e88db7bbab4b747b18d06"}, + {file = "cryptography-44.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:479d92908277bed6e1a1c69b277734a7771c2b78633c224445b5c60a9f4bc1d9"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:896530bc9107b226f265effa7ef3f21270f18a2026bc09fed1ebd7b66ddf6375"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9b4d4a5dbee05a2c390bf212e78b99434efec37b17a4bff42f50285c5c8c9647"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02f55fb4f8b79c1221b0961488eaae21015b69b210e18c386b69de182ebb1259"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:dd3db61b8fe5be220eee484a17233287d0be6932d056cf5738225b9c05ef4fff"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:978631ec51a6bbc0b7e58f23b68a8ce9e5f09721940933e9c217068388789fe5"}, + {file = "cryptography-44.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c"}, + {file = "cryptography-44.0.3.tar.gz", hash = "sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053"}, ] [package.dependencies] -cffi = { version = ">=1.12", markers = "platform_python_implementation != \"PyPy\"" } +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0)"] @@ -806,32 +971,32 @@ description = "An implementation of the Debug Adapter Protocol for Python" optional = true python-versions = ">=3.8" files = [ - { file = "debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339" }, - { file = "debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79" }, - { file = "debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987" }, - { file = "debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84" }, - { file = "debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9" }, - { file = "debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2" }, - { file = "debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2" }, - { file = "debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01" }, - { file = "debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84" }, - { file = "debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826" }, - { file = "debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f" }, - { file = "debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f" }, - { file = "debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f" }, - { file = "debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15" }, - { file = "debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e" }, - { file = "debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e" }, - { file = "debugpy-1.8.14-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:d5582bcbe42917bc6bbe5c12db1bffdf21f6bfc28d4554b738bf08d50dc0c8c3" }, - { file = "debugpy-1.8.14-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5349b7c3735b766a281873fbe32ca9cca343d4cc11ba4a743f84cb854339ff35" }, - { file = "debugpy-1.8.14-cp38-cp38-win32.whl", hash = "sha256:7118d462fe9724c887d355eef395fae68bc764fd862cdca94e70dcb9ade8a23d" }, - { file = "debugpy-1.8.14-cp38-cp38-win_amd64.whl", hash = "sha256:d235e4fa78af2de4e5609073972700523e372cf5601742449970110d565ca28c" }, - { file = "debugpy-1.8.14-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:413512d35ff52c2fb0fd2d65e69f373ffd24f0ecb1fac514c04a668599c5ce7f" }, - { file = "debugpy-1.8.14-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c9156f7524a0d70b7a7e22b2e311d8ba76a15496fb00730e46dcdeedb9e1eea" }, - { file = "debugpy-1.8.14-cp39-cp39-win32.whl", hash = "sha256:b44985f97cc3dd9d52c42eb59ee9d7ee0c4e7ecd62bca704891f997de4cef23d" }, - { file = "debugpy-1.8.14-cp39-cp39-win_amd64.whl", hash = "sha256:b1528cfee6c1b1c698eb10b6b096c598738a8238822d218173d21c3086de8123" }, - { file = "debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20" }, - { file = "debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322" }, + {file = "debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339"}, + {file = "debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79"}, + {file = "debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987"}, + {file = "debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84"}, + {file = "debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9"}, + {file = "debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2"}, + {file = "debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2"}, + {file = "debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01"}, + {file = "debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84"}, + {file = "debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826"}, + {file = "debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f"}, + {file = "debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f"}, + {file = "debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f"}, + {file = "debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15"}, + {file = "debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e"}, + {file = "debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e"}, + {file = "debugpy-1.8.14-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:d5582bcbe42917bc6bbe5c12db1bffdf21f6bfc28d4554b738bf08d50dc0c8c3"}, + {file = "debugpy-1.8.14-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5349b7c3735b766a281873fbe32ca9cca343d4cc11ba4a743f84cb854339ff35"}, + {file = "debugpy-1.8.14-cp38-cp38-win32.whl", hash = "sha256:7118d462fe9724c887d355eef395fae68bc764fd862cdca94e70dcb9ade8a23d"}, + {file = "debugpy-1.8.14-cp38-cp38-win_amd64.whl", hash = "sha256:d235e4fa78af2de4e5609073972700523e372cf5601742449970110d565ca28c"}, + {file = "debugpy-1.8.14-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:413512d35ff52c2fb0fd2d65e69f373ffd24f0ecb1fac514c04a668599c5ce7f"}, + {file = "debugpy-1.8.14-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c9156f7524a0d70b7a7e22b2e311d8ba76a15496fb00730e46dcdeedb9e1eea"}, + {file = "debugpy-1.8.14-cp39-cp39-win32.whl", hash = "sha256:b44985f97cc3dd9d52c42eb59ee9d7ee0c4e7ecd62bca704891f997de4cef23d"}, + {file = "debugpy-1.8.14-cp39-cp39-win_amd64.whl", hash = "sha256:b1528cfee6c1b1c698eb10b6b096c598738a8238822d218173d21c3086de8123"}, + {file = "debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20"}, + {file = "debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322"}, ] [[package]] @@ -841,8 +1006,8 @@ description = "Decorators for Humans" optional = true python-versions = ">=3.8" files = [ - { file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" }, - { file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360" }, + {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, + {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, ] [[package]] @@ -852,8 +1017,19 @@ description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - { file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" }, - { file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69" }, + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "distlib" +version = "0.3.9" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] @@ -863,8 +1039,8 @@ description = "Distro - an OS platform information API" optional = true python-versions = ">=3.6" files = [ - { file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2" }, - { file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed" }, + {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, + {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, ] [[package]] @@ -874,14 +1050,14 @@ description = "A high-level Python web framework that encourages rapid developme optional = false python-versions = ">=3.10" files = [ - { file = "Django-5.2-py3-none-any.whl", hash = "sha256:91ceed4e3a6db5aedced65e3c8f963118ea9ba753fc620831c77074e620e7d83" }, - { file = "Django-5.2.tar.gz", hash = "sha256:1a47f7a7a3d43ce64570d350e008d2949abe8c7e21737b351b6a1611277c6d89" }, + {file = "Django-5.2-py3-none-any.whl", hash = "sha256:91ceed4e3a6db5aedced65e3c8f963118ea9ba753fc620831c77074e620e7d83"}, + {file = "Django-5.2.tar.gz", hash = "sha256:1a47f7a7a3d43ce64570d350e008d2949abe8c7e21737b351b6a1611277c6d89"}, ] [package.dependencies] asgiref = ">=3.8.1" sqlparse = ">=0.3.1" -tzdata = { version = "*", markers = "sys_platform == \"win32\"" } +tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] argon2 = ["argon2-cffi (>=19.1.0)"] @@ -894,8 +1070,8 @@ description = "A slick ORM cache with automatic granular event-driven invalidati optional = false python-versions = ">=3.7" files = [ - { file = "django_cacheops-7.2-py2.py3-none-any.whl", hash = "sha256:c3b4399474919e62aa91bbd97e7b68cfc50e8cb4384d743bde686c37fe8c010b" }, - { file = "django_cacheops-7.2.tar.gz", hash = "sha256:cbc11cc0321295a3644e27bcb26940f08cb9c2e71d3ee506cbcff0bdda1a9f33" }, + {file = "django_cacheops-7.2-py2.py3-none-any.whl", hash = "sha256:c3b4399474919e62aa91bbd97e7b68cfc50e8cb4384d743bde686c37fe8c010b"}, + {file = "django_cacheops-7.2.tar.gz", hash = "sha256:cbc11cc0321295a3644e27bcb26940f08cb9c2e71d3ee506cbcff0bdda1a9f33"}, ] [package.dependencies] @@ -910,8 +1086,8 @@ description = "Database-backed Periodic Tasks." optional = true python-versions = ">=3.8" files = [ - { file = "django_celery_beat-2.8.0-py3-none-any.whl", hash = "sha256:f8fd2e1ffbfa8e570ab9439383b2cd15a6642b347662d0de79c62ba6f68d4b38" }, - { file = "django_celery_beat-2.8.0.tar.gz", hash = "sha256:955bfb3c4b8f1026a8d20144d0da39c941e1eb23acbaee9e12a7e7cc1f74959a" }, + {file = "django_celery_beat-2.8.0-py3-none-any.whl", hash = "sha256:f8fd2e1ffbfa8e570ab9439383b2cd15a6642b347662d0de79c62ba6f68d4b38"}, + {file = "django_celery_beat-2.8.0.tar.gz", hash = "sha256:955bfb3c4b8f1026a8d20144d0da39c941e1eb23acbaee9e12a7e7cc1f74959a"}, ] [package.dependencies] @@ -929,8 +1105,8 @@ description = "Celery result backends for Django." optional = true python-versions = "*" files = [ - { file = "django_celery_results-2.6.0-py3-none-any.whl", hash = "sha256:b9ccdca2695b98c7cbbb8dea742311ba9a92773d71d7b4944a676e69a7df1c73" }, - { file = "django_celery_results-2.6.0.tar.gz", hash = "sha256:9abcd836ae6b61063779244d8887a88fe80bbfaba143df36d3cb07034671277c" }, + {file = "django_celery_results-2.6.0-py3-none-any.whl", hash = "sha256:b9ccdca2695b98c7cbbb8dea742311ba9a92773d71d7b4944a676e69a7df1c73"}, + {file = "django_celery_results-2.6.0.tar.gz", hash = "sha256:9abcd836ae6b61063779244d8887a88fe80bbfaba143df36d3cb07034671277c"}, ] [package.dependencies] @@ -944,8 +1120,8 @@ description = "Django live settings with pluggable backends, including Redis." optional = false python-versions = ">=3.8" files = [ - { file = "django_constance-4.3.2-py3-none-any.whl", hash = "sha256:cd3e08f4cac457016db550a9244177da39cef8e39f4a56859692306cc8f11dc1" }, - { file = "django_constance-4.3.2.tar.gz", hash = "sha256:d86e6b6a797157a4b49d0c679f1b7b9c70b1b540f36dfcda5346736997ae51bd" }, + {file = "django_constance-4.3.2-py3-none-any.whl", hash = "sha256:cd3e08f4cac457016db550a9244177da39cef8e39f4a56859692306cc8f11dc1"}, + {file = "django_constance-4.3.2.tar.gz", hash = "sha256:d86e6b6a797157a4b49d0c679f1b7b9c70b1b540f36dfcda5346736997ae51bd"}, ] [package.extras] @@ -958,8 +1134,8 @@ description = "django-cors-headers is a Django application for handling the serv optional = false python-versions = ">=3.9" files = [ - { file = "django_cors_headers-4.7.0-py3-none-any.whl", hash = "sha256:f1c125dcd58479fe7a67fe2499c16ee38b81b397463cf025f0e2c42937421070" }, - { file = "django_cors_headers-4.7.0.tar.gz", hash = "sha256:6fdf31bf9c6d6448ba09ef57157db2268d515d94fc5c89a0a1028e1fc03ee52b" }, + {file = "django_cors_headers-4.7.0-py3-none-any.whl", hash = "sha256:f1c125dcd58479fe7a67fe2499c16ee38b81b397463cf025f0e2c42937421070"}, + {file = "django_cors_headers-4.7.0.tar.gz", hash = "sha256:6fdf31bf9c6d6448ba09ef57157db2268d515d94fc5c89a0a1028e1fc03ee52b"}, ] [package.dependencies] @@ -973,8 +1149,8 @@ description = "A modern Django dashboard built with DaisyUI" optional = false python-versions = "*" files = [ - { file = "django_daisy-1.0.23-py3-none-any.whl", hash = "sha256:8561032d6a3045f82f39bdfd7fb8497c05cc213bcb2950c53ec7f81096832ae8" }, - { file = "django_daisy-1.0.23.tar.gz", hash = "sha256:2f913517d0ac437952233bd64db90740a3904565c16ffae8a5d604d22c71d318" }, + {file = "django_daisy-1.0.23-py3-none-any.whl", hash = "sha256:8561032d6a3045f82f39bdfd7fb8497c05cc213bcb2950c53ec7f81096832ae8"}, + {file = "django_daisy-1.0.23.tar.gz", hash = "sha256:2f913517d0ac437952233bd64db90740a3904565c16ffae8a5d604d22c71d318"}, ] [package.dependencies] @@ -987,8 +1163,8 @@ description = "Management commands to help backup and restore a project database optional = false python-versions = ">=3.7" files = [ - { file = "django_dbbackup-4.2.1-py3-none-any.whl", hash = "sha256:b23265600ead0780ca781b1b4b594949aaa8a20d74f08701f91ee9d7eb1f08cd" }, - { file = "django_dbbackup-4.2.1.tar.gz", hash = "sha256:157a2ec10d482345cd75092e510ac40d6e2ee6084604a1d17abe178c2f06bc69" }, + {file = "django_dbbackup-4.2.1-py3-none-any.whl", hash = "sha256:b23265600ead0780ca781b1b4b594949aaa8a20d74f08701f91ee9d7eb1f08cd"}, + {file = "django_dbbackup-4.2.1.tar.gz", hash = "sha256:157a2ec10d482345cd75092e510ac40d6e2ee6084604a1d17abe178c2f06bc69"}, ] [package.dependencies] @@ -1002,8 +1178,8 @@ description = "Wrapper around elasticsearch-dsl-py for django models" optional = false python-versions = ">=3.8" files = [ - { file = "django-elasticsearch-dsl-8.0.tar.gz", hash = "sha256:64ee0612ced6d57515a6b7f29f1a3e1c2eea1996a6226fc72079a95c067b27ca" }, - { file = "django_elasticsearch_dsl-8.0-py2.py3-none-any.whl", hash = "sha256:423784a4af336d109c3763622f1edc4973664cb5154beb55b3ff9390c1e4525e" }, + {file = "django-elasticsearch-dsl-8.0.tar.gz", hash = "sha256:64ee0612ced6d57515a6b7f29f1a3e1c2eea1996a6226fc72079a95c067b27ca"}, + {file = "django_elasticsearch_dsl-8.0-py2.py3-none-any.whl", hash = "sha256:423784a4af336d109c3763622f1edc4973664cb5154beb55b3ff9390c1e4525e"}, ] [package.dependencies] @@ -1020,8 +1196,8 @@ description = "Integrate Elasticsearch DSL with Django REST framework." optional = false python-versions = ">=2.7" files = [ - { file = "django-elasticsearch-dsl-drf-0.22.5.tar.gz", hash = "sha256:b444f168535ff99244cc995ec354a31abcbf3fc03bd7b11ec1a3f43c7208f63a" }, - { file = "django_elasticsearch_dsl_drf-0.22.5-py2.py3-none-any.whl", hash = "sha256:fc0b3960e16f6c06de4f2ca4daf1134376fce4d496c1ddc218c23daddf6bcaa0" }, + {file = "django-elasticsearch-dsl-drf-0.22.5.tar.gz", hash = "sha256:b444f168535ff99244cc995ec354a31abcbf3fc03bd7b11ec1a3f43c7208f63a"}, + {file = "django_elasticsearch_dsl_drf-0.22.5-py2.py3-none-any.whl", hash = "sha256:fc0b3960e16f6c06de4f2ca4daf1134376fce4d496c1ddc218c23daddf6bcaa0"}, ] [package.dependencies] @@ -1039,8 +1215,8 @@ description = "Extensions for Django" optional = false python-versions = ">=3.9" files = [ - { file = "django_extensions-4.1-py3-none-any.whl", hash = "sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336" }, - { file = "django_extensions-4.1.tar.gz", hash = "sha256:7b70a4d28e9b840f44694e3f7feb54f55d495f8b3fa6c5c0e5e12bcb2aa3cdeb" }, + {file = "django_extensions-4.1-py3-none-any.whl", hash = "sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336"}, + {file = "django_extensions-4.1.tar.gz", hash = "sha256:7b70a4d28e9b840f44694e3f7feb54f55d495f8b3fa6c5c0e5e12bcb2aa3cdeb"}, ] [package.dependencies] @@ -1053,8 +1229,8 @@ description = "Django-filter is a reusable Django application for allowing users optional = false python-versions = ">=3.9" files = [ - { file = "django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80" }, - { file = "django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153" }, + {file = "django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80"}, + {file = "django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153"}, ] [package.dependencies] @@ -1067,8 +1243,8 @@ description = "Monitor the health of your Django app and its connected services. optional = false python-versions = ">=3.9" files = [ - { file = "django_health_check-3.19.1-py3-none-any.whl", hash = "sha256:558aa260102ae5c53a2925692e1b08fc1a9b181db3675b00a8e320e088a669db" }, - { file = "django_health_check-3.19.1.tar.gz", hash = "sha256:f1e287190a15d5c2f53db67877a4360ed0256bf5f3d6773f0fe4903d052a6c14" }, + {file = "django_health_check-3.19.1-py3-none-any.whl", hash = "sha256:558aa260102ae5c53a2925692e1b08fc1a9b181db3675b00a8e320e088a669db"}, + {file = "django_health_check-3.19.1.tar.gz", hash = "sha256:f1e287190a15d5c2f53db67877a4360ed0256bf5f3d6773f0fe4903d052a6c14"}, ] [package.dependencies] @@ -1086,8 +1262,8 @@ description = "Dynamic and static host resolving for Django. Maps hostnames to U optional = false python-versions = ">=3.8" files = [ - { file = "django-hosts-6.0.tar.gz", hash = "sha256:e7aec357504d36f384c65fba67deabc4552f36f347b96bb7a3d131a1250d7299" }, - { file = "django_hosts-6.0-py3-none-any.whl", hash = "sha256:34a97a183b3fb8a00de3e0a8af5355a25ff5203019d2e213edd8f12c330cc303" }, + {file = "django-hosts-6.0.tar.gz", hash = "sha256:e7aec357504d36f384c65fba67deabc4552f36f347b96bb7a3d131a1250d7299"}, + {file = "django_hosts-6.0-py3-none-any.whl", hash = "sha256:34a97a183b3fb8a00de3e0a8af5355a25ff5203019d2e213edd8f12c330cc303"}, ] [[package]] @@ -1097,8 +1273,8 @@ description = "script tag with additional attributes for django.forms.Media" optional = false python-versions = ">=3.10" files = [ - { file = "django_js_asset-3.1.2-py3-none-any.whl", hash = "sha256:b5ffe376aebbd73b7af886d675ac9f43ca63b39540190fa8409c9f8e79145f68" }, - { file = "django_js_asset-3.1.2.tar.gz", hash = "sha256:1fc7584199ed1941ed7c8e7b87ca5524bb0f2ba941561d2a104e88ee9f07bedd" }, + {file = "django_js_asset-3.1.2-py3-none-any.whl", hash = "sha256:b5ffe376aebbd73b7af886d675ac9f43ca63b39540190fa8409c9f8e79145f68"}, + {file = "django_js_asset-3.1.2.tar.gz", hash = "sha256:1fc7584199ed1941ed7c8e7b87ca5524bb0f2ba941561d2a104e88ee9f07bedd"}, ] [package.dependencies] @@ -1114,7 +1290,7 @@ description = "Django json widget is an alternative widget that makes it easy to optional = false python-versions = "*" files = [ - { file = "django-json-widget-2.0.1.tar.gz", hash = "sha256:adb4cab17fe5a04139037d7d84725369530ef35b912c3790d3a7b13f99351358" }, + {file = "django-json-widget-2.0.1.tar.gz", hash = "sha256:adb4cab17fe5a04139037d7d84725369530ef35b912c3790d3a7b13f99351358"}, ] [[package]] @@ -1124,7 +1300,7 @@ description = "Import mail from POP3, IMAP, local mailboxes or directly from Pos optional = false python-versions = ">=3.8" files = [ - { file = "django-mailbox-4.10.1.tar.gz", hash = "sha256:9060a4ddc81d16aa699e266649c12eaf4f29671b5266352e2fad3043a6832b52" }, + {file = "django-mailbox-4.10.1.tar.gz", hash = "sha256:9060a4ddc81d16aa699e266649c12eaf4f29671b5266352e2fad3043a6832b52"}, ] [package.extras] @@ -1138,8 +1314,8 @@ description = "A Django model field that integrates Python-Markdown for handling optional = false python-versions = "<3.13,>=3.10" files = [ - { file = "django_md_field-0.1.0-py3-none-any.whl", hash = "sha256:041cd2e55551ab6aa8085ffd1819a9036de7f832f29e66ef3a0eb649c6c7bfc5" }, - { file = "django_md_field-0.1.0.tar.gz", hash = "sha256:87dff61316dfd8825b93793b91de2b9fe7e2d7f3b52478ed751565931195c2ff" }, + {file = "django_md_field-0.1.0-py3-none-any.whl", hash = "sha256:041cd2e55551ab6aa8085ffd1819a9036de7f832f29e66ef3a0eb649c6c7bfc5"}, + {file = "django_md_field-0.1.0.tar.gz", hash = "sha256:87dff61316dfd8825b93793b91de2b9fe7e2d7f3b52478ed751565931195c2ff"}, ] [package.dependencies] @@ -1152,8 +1328,8 @@ description = "Django model mixins and utilities" optional = false python-versions = ">=3.8" files = [ - { file = "django_model_utils-5.0.0-py3-none-any.whl", hash = "sha256:fec78e6c323d565a221f7c4edc703f4567d7bb1caeafe1acd16a80c5ff82056b" }, - { file = "django_model_utils-5.0.0.tar.gz", hash = "sha256:041cdd6230d2fbf6cd943e1969318bce762272077f4ecd333ab2263924b4e5eb" }, + {file = "django_model_utils-5.0.0-py3-none-any.whl", hash = "sha256:fec78e6c323d565a221f7c4edc703f4567d7bb1caeafe1acd16a80c5ff82056b"}, + {file = "django_model_utils-5.0.0.tar.gz", hash = "sha256:041cdd6230d2fbf6cd943e1969318bce762272077f4ecd333ab2263924b4e5eb"}, ] [package.dependencies] @@ -1166,8 +1342,8 @@ description = "Translates Django models using a registration approach." optional = false python-versions = "<4,>=3.9" files = [ - { file = "django_modeltranslation-0.19.14-py3-none-any.whl", hash = "sha256:2b7d6fe0b26b5050f1fd38960162df84ea6a9eaf7b690f428b55eb0e87720c57" }, - { file = "django_modeltranslation-0.19.14.tar.gz", hash = "sha256:1ba875b51296f41105587e6c1c6b161c32c7c81b7cbab23111ffdb8310471db8" }, + {file = "django_modeltranslation-0.19.14-py3-none-any.whl", hash = "sha256:2b7d6fe0b26b5050f1fd38960162df84ea6a9eaf7b690f428b55eb0e87720c57"}, + {file = "django_modeltranslation-0.19.14.tar.gz", hash = "sha256:1ba875b51296f41105587e6c1c6b161c32c7c81b7cbab23111ffdb8310471db8"}, ] [package.dependencies] @@ -1180,8 +1356,8 @@ description = "Utilities for implementing Modified Preorder Tree Traversal with optional = false python-versions = ">=3.9" files = [ - { file = "django_mptt-0.17.0-py3-none-any.whl", hash = "sha256:e77dd4b4d0de14f50239b0900def44c1d31403664ab3682b80b27fa1319fe7f0" }, - { file = "django_mptt-0.17.0.tar.gz", hash = "sha256:e2dca00536450b91bdc80d8fc1454993b84307728394ae42c72947fc09574d3d" }, + {file = "django_mptt-0.17.0-py3-none-any.whl", hash = "sha256:e77dd4b4d0de14f50239b0900def44c1d31403664ab3682b80b27fa1319fe7f0"}, + {file = "django_mptt-0.17.0.tar.gz", hash = "sha256:e2dca00536450b91bdc80d8fc1454993b84307728394ae42c72947fc09574d3d"}, ] [package.dependencies] @@ -1197,8 +1373,8 @@ description = "Version checking library." optional = false python-versions = "*" files = [ - { file = "django-nine-0.2.7.tar.gz", hash = "sha256:304e0f83cea5a35359375fc919d00f9917b655c1d388244cbfc7363f59489177" }, - { file = "django_nine-0.2.7-py2.py3-none-any.whl", hash = "sha256:4d93208ca5bb4a63bf65cf098a82ee469127b04ebde698d72fe12d258b73c291" }, + {file = "django-nine-0.2.7.tar.gz", hash = "sha256:304e0f83cea5a35359375fc919d00f9917b655c1d388244cbfc7363f59489177"}, + {file = "django_nine-0.2.7-py2.py3-none-any.whl", hash = "sha256:4d93208ca5bb4a63bf65cf098a82ee469127b04ebde698d72fe12d258b73c291"}, ] [package.dependencies] @@ -1212,8 +1388,8 @@ description = "Django middlewares to monitor your application with Prometheus.io optional = false python-versions = "*" files = [ - { file = "django-prometheus-2.3.1.tar.gz", hash = "sha256:f9c8b6c780c9419ea01043c63a437d79db2c33353451347894408184ad9c3e1e" }, - { file = "django_prometheus-2.3.1-py2.py3-none-any.whl", hash = "sha256:cf9b26f7ba2e4568f08f8f91480a2882023f5908579681bcf06a4d2465f12168" }, + {file = "django-prometheus-2.3.1.tar.gz", hash = "sha256:f9c8b6c780c9419ea01043c63a437d79db2c33353451347894408184ad9c3e1e"}, + {file = "django_prometheus-2.3.1-py2.py3-none-any.whl", hash = "sha256:cf9b26f7ba2e4568f08f8f91480a2882023f5908579681bcf06a4d2465f12168"}, ] [package.dependencies] @@ -1226,8 +1402,8 @@ description = "Cache-based rate-limiting for Django." optional = false python-versions = ">=3.7" files = [ - { file = "django-ratelimit-4.1.0.tar.gz", hash = "sha256:555943b283045b917ad59f196829530d63be2a39adb72788d985b90c81ba808b" }, - { file = "django_ratelimit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d047a31cf94d83ef1465d7543ca66c6fc16695559b5f8d814d1b51df15110b92" }, + {file = "django-ratelimit-4.1.0.tar.gz", hash = "sha256:555943b283045b917ad59f196829530d63be2a39adb72788d985b90c81ba808b"}, + {file = "django_ratelimit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d047a31cf94d83ef1465d7543ca66c6fc16695559b5f8d814d1b51df15110b92"}, ] [[package]] @@ -1237,8 +1413,8 @@ description = "Full featured redis cache backend for Django." optional = false python-versions = ">=3.6" files = [ - { file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42" }, - { file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b" }, + {file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42"}, + {file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b"}, ] [package.dependencies] @@ -1255,8 +1431,8 @@ description = "Support for many storage backends in Django" optional = false python-versions = ">=3.7" files = [ - { file = "django_storages-1.14.6-py3-none-any.whl", hash = "sha256:11b7b6200e1cb5ffcd9962bd3673a39c7d6a6109e8096f0e03d46fab3d3aabd9" }, - { file = "django_storages-1.14.6.tar.gz", hash = "sha256:7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9" }, + {file = "django_storages-1.14.6-py3-none-any.whl", hash = "sha256:11b7b6200e1cb5ffcd9962bd3673a39c7d6a6109e8096f0e03d46fab3d3aabd9"}, + {file = "django_storages-1.14.6.tar.gz", hash = "sha256:7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9"}, ] [package.dependencies] @@ -1278,8 +1454,8 @@ description = "Mypy stubs for Django" optional = false python-versions = ">=3.10" files = [ - { file = "django_stubs-5.2.0-py3-none-any.whl", hash = "sha256:cd52da033489afc1357d6245f49e3cc57bf49015877253fb8efc6722ea3d2d2b" }, - { file = "django_stubs-5.2.0.tar.gz", hash = "sha256:07e25c2d3cbff5be540227ff37719cc89f215dfaaaa5eb038a75b01bbfbb2722" }, + {file = "django_stubs-5.2.0-py3-none-any.whl", hash = "sha256:cd52da033489afc1357d6245f49e3cc57bf49015877253fb8efc6722ea3d2d2b"}, + {file = "django_stubs-5.2.0.tar.gz", hash = "sha256:07e25c2d3cbff5be540227ff37719cc89f215dfaaaa5eb038a75b01bbfbb2722"}, ] [package.dependencies] @@ -1296,13 +1472,13 @@ redis = ["redis"] [[package]] name = "django-stubs-ext" -version = "5.2.0" +version = "5.2.1" description = "Monkey-patching and extensions for django-stubs" optional = false python-versions = ">=3.10" files = [ - { file = "django_stubs_ext-5.2.0-py3-none-any.whl", hash = "sha256:b27ae0aab970af4894ba4e9b3fcd3e03421dc8731516669659ee56122d148b23" }, - { file = "django_stubs_ext-5.2.0.tar.gz", hash = "sha256:00c4ae307b538f5643af761a914c3f8e4e3f25f4e7c6d7098f1906c0d8f2aac9" }, + {file = "django_stubs_ext-5.2.1-py3-none-any.whl", hash = "sha256:98fb0646f1a1ef07708eec5f6f7d27523f12c0c8714abae8db981571ff957588"}, + {file = "django_stubs_ext-5.2.1.tar.gz", hash = "sha256:fc0582cb3289306c43ce4a0a15af86922ce1dbec3c19eab80980ee70c04e0392"}, ] [package.dependencies] @@ -1316,8 +1492,8 @@ description = "A Django app providing DB, form, and REST framework fields for zo optional = true python-versions = "<4.0,>=3.8" files = [ - { file = "django_timezone_field-7.1-py3-none-any.whl", hash = "sha256:93914713ed882f5bccda080eda388f7006349f25930b6122e9b07bf8db49c4b4" }, - { file = "django_timezone_field-7.1.tar.gz", hash = "sha256:b3ef409d88a2718b566fabe10ea996f2838bc72b22d3a2900c0aa905c761380c" }, + {file = "django_timezone_field-7.1-py3-none-any.whl", hash = "sha256:93914713ed882f5bccda080eda388f7006349f25930b6122e9b07bf8db49c4b4"}, + {file = "django_timezone_field-7.1.tar.gz", hash = "sha256:b3ef409d88a2718b566fabe10ea996f2838bc72b22d3a2900c0aa905c761380c"}, ] [package.dependencies] @@ -1330,8 +1506,8 @@ description = "Tweak the form field rendering in templates, not in python-level optional = false python-versions = ">=3.8" files = [ - { file = "django-widget-tweaks-1.5.0.tar.gz", hash = "sha256:1c2180681ebb994e922c754804c7ffebbe1245014777ac47897a81f57cc629c7" }, - { file = "django_widget_tweaks-1.5.0-py3-none-any.whl", hash = "sha256:a41b7b2f05bd44d673d11ebd6c09a96f1d013ee98121cb98c384fe84e33b881e" }, + {file = "django-widget-tweaks-1.5.0.tar.gz", hash = "sha256:1c2180681ebb994e922c754804c7ffebbe1245014777ac47897a81f57cc629c7"}, + {file = "django_widget_tweaks-1.5.0-py3-none-any.whl", hash = "sha256:a41b7b2f05bd44d673d11ebd6c09a96f1d013ee98121cb98c384fe84e33b881e"}, ] [[package]] @@ -1341,8 +1517,8 @@ description = "Web APIs for Django, made easy." optional = false python-versions = ">=3.9" files = [ - { file = "djangorestframework-3.16.0-py3-none-any.whl", hash = "sha256:bea7e9f6b96a8584c5224bfb2e4348dfb3f8b5e34edbecb98da258e892089361" }, - { file = "djangorestframework-3.16.0.tar.gz", hash = "sha256:f022ff46613584de994c0c6a4aebbace5fd700555fbe9d33b865ebf173eba6c9" }, + {file = "djangorestframework-3.16.0-py3-none-any.whl", hash = "sha256:bea7e9f6b96a8584c5224bfb2e4348dfb3f8b5e34edbecb98da258e892089361"}, + {file = "djangorestframework-3.16.0.tar.gz", hash = "sha256:f022ff46613584de994c0c6a4aebbace5fd700555fbe9d33b865ebf173eba6c9"}, ] [package.dependencies] @@ -1355,7 +1531,7 @@ description = "Camel case JSON support for Django REST framework." optional = false python-versions = ">=3.5" files = [ - { file = "djangorestframework-camel-case-1.4.2.tar.gz", hash = "sha256:cdae75846648abb6585c7470639a1d2fb064dc45f8e8b62aaa50be7f1a7a61f4" }, + {file = "djangorestframework-camel-case-1.4.2.tar.gz", hash = "sha256:cdae75846648abb6585c7470639a1d2fb064dc45f8e8b62aaa50be7f1a7a61f4"}, ] [[package]] @@ -1365,8 +1541,8 @@ description = "Recursive Serialization for Django REST framework" optional = false python-versions = "*" files = [ - { file = "djangorestframework-recursive-0.1.2.tar.gz", hash = "sha256:f8fc2d677ccb32fe53ec4153a45f66c822d0ce444824cba56edc76ca89b704ae" }, - { file = "djangorestframework_recursive-0.1.2-py2.py3-none-any.whl", hash = "sha256:e4e51b26b7ee3c9f9b838885d638b91293e7c66e85b5955f278a6e10eb34ce7c" }, + {file = "djangorestframework-recursive-0.1.2.tar.gz", hash = "sha256:f8fc2d677ccb32fe53ec4153a45f66c822d0ce444824cba56edc76ca89b704ae"}, + {file = "djangorestframework_recursive-0.1.2-py2.py3-none-any.whl", hash = "sha256:e4e51b26b7ee3c9f9b838885d638b91293e7c66e85b5955f278a6e10eb34ce7c"}, ] [package.dependencies] @@ -1380,12 +1556,12 @@ description = "A minimal JSON Web Token authentication plugin for Django REST Fr optional = false python-versions = ">=3.9" files = [ - { file = "djangorestframework_simplejwt-5.5.0-py3-none-any.whl", hash = "sha256:4ef6b38af20cdde4a4a51d1fd8e063cbbabb7b45f149cc885d38d905c5a62edb" }, - { file = "djangorestframework_simplejwt-5.5.0.tar.gz", hash = "sha256:474a1b737067e6462b3609627a392d13a4da8a08b1f0574104ac6d7b1406f90e" }, + {file = "djangorestframework_simplejwt-5.5.0-py3-none-any.whl", hash = "sha256:4ef6b38af20cdde4a4a51d1fd8e063cbbabb7b45f149cc885d38d905c5a62edb"}, + {file = "djangorestframework_simplejwt-5.5.0.tar.gz", hash = "sha256:474a1b737067e6462b3609627a392d13a4da8a08b1f0574104ac6d7b1406f90e"}, ] [package.dependencies] -cryptography = { version = ">=3.3.1", optional = true, markers = "extra == \"crypto\"" } +cryptography = {version = ">=3.3.1", optional = true, markers = "extra == \"crypto\""} django = ">=4.2" djangorestframework = ">=3.14" pyjwt = ">=1.7.1,<2.10.0" @@ -1398,6 +1574,29 @@ lint = ["pre-commit", "pyupgrade", "ruff", "yesqa"] python-jose = ["python-jose (==3.3.0)"] test = ["cryptography", "freezegun", "pytest", "pytest-cov", "pytest-django", "pytest-xdist", "tox"] +[[package]] +name = "djangorestframework-stubs" +version = "3.16.0" +description = "PEP-484 stubs for django-rest-framework" +optional = false +python-versions = ">=3.10" +files = [ + {file = "djangorestframework_stubs-3.16.0-py3-none-any.whl", hash = "sha256:2085a6e023de65843d4d53fe5abc73fbbc3ef380a59919ad9801182f6bb435de"}, + {file = "djangorestframework_stubs-3.16.0.tar.gz", hash = "sha256:8c5ccdfe9271b1a37946a3564dc3714d521cd3f2f8695e528808e0c700538243"}, +] + +[package.dependencies] +django-stubs = ">=5.2.0" +requests = ">=2.0" +types-PyYAML = "*" +types-requests = "*" +typing-extensions = ">=4.0" + +[package.extras] +compatible-mypy = ["django-stubs[compatible-mypy]", "mypy (>=1.13,<1.16)"] +coreapi = ["coreapi (>=2.0.0)"] +markdown = ["types-Markdown (>=0.1.5)"] + [[package]] name = "djangorestframework-xml" version = "2.0.0" @@ -1405,8 +1604,8 @@ description = "XML support for Django REST Framework" optional = false python-versions = ">=3.5" files = [ - { file = "djangorestframework-xml-2.0.0.tar.gz", hash = "sha256:35f6c811d0ab8c8466b26db234e16a2ed32d76381715257aebf4c7be2c202ca1" }, - { file = "djangorestframework_xml-2.0.0-py2.py3-none-any.whl", hash = "sha256:975955fbb0d49ac44a90bdeb33b7923d95b79884d283f983e116c80a936ef4d0" }, + {file = "djangorestframework-xml-2.0.0.tar.gz", hash = "sha256:35f6c811d0ab8c8466b26db234e16a2ed32d76381715257aebf4c7be2c202ca1"}, + {file = "djangorestframework_xml-2.0.0-py2.py3-none-any.whl", hash = "sha256:975955fbb0d49ac44a90bdeb33b7923d95b79884d283f983e116c80a936ef4d0"}, ] [package.dependencies] @@ -1424,8 +1623,8 @@ description = "YAML support for Django REST Framework" optional = false python-versions = ">=3.5" files = [ - { file = "djangorestframework-yaml-2.0.0.tar.gz", hash = "sha256:1b2cfd7482425f3c6924a8eb803d6f73276e76b03293cd7144c755753e029f15" }, - { file = "djangorestframework_yaml-2.0.0-py2.py3-none-any.whl", hash = "sha256:7fe744e6004d2191fa1cb8a4fc62f98150202bfebd60702a04f8187cc240b7c4" }, + {file = "djangorestframework-yaml-2.0.0.tar.gz", hash = "sha256:1b2cfd7482425f3c6924a8eb803d6f73276e76b03293cd7144c755753e029f15"}, + {file = "djangorestframework_yaml-2.0.0-py2.py3-none-any.whl", hash = "sha256:7fe744e6004d2191fa1cb8a4fc62f98150202bfebd60702a04f8187cc240b7c4"}, ] [package.dependencies] @@ -1436,6 +1635,26 @@ dev = ["Django (>=1.6)", "djangorestframework (>=2.4.3)", "flake8", "mkdocs (>=0 docs = ["mkdocs (>=0.11.1)"] tests = ["Django (>=1.6)", "djangorestframework (>=2.4.3)", "flake8", "pytest", "pytest-django"] +[[package]] +name = "dparse" +version = "0.6.4" +description = "A parser for Python dependency files" +optional = false +python-versions = ">=3.7" +files = [ + {file = "dparse-0.6.4-py3-none-any.whl", hash = "sha256:fbab4d50d54d0e739fbb4dedfc3d92771003a5b9aa8545ca7a7045e3b174af57"}, + {file = "dparse-0.6.4.tar.gz", hash = "sha256:90b29c39e3edc36c6284c82c4132648eaf28a01863eb3c231c2512196132201a"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +all = ["pipenv", "poetry", "pyyaml"] +conda = ["pyyaml"] +pipenv = ["pipenv"] +poetry = ["poetry"] + [[package]] name = "drf-spectacular" version = "0.28.0" @@ -1443,14 +1662,14 @@ description = "Sane and flexible OpenAPI 3 schema generation for Django REST fra optional = false python-versions = ">=3.7" files = [ - { file = "drf_spectacular-0.28.0-py3-none-any.whl", hash = "sha256:856e7edf1056e49a4245e87a61e8da4baff46c83dbc25be1da2df77f354c7cb4" }, - { file = "drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061" }, + {file = "drf_spectacular-0.28.0-py3-none-any.whl", hash = "sha256:856e7edf1056e49a4245e87a61e8da4baff46c83dbc25be1da2df77f354c7cb4"}, + {file = "drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061"}, ] [package.dependencies] Django = ">=2.2" djangorestframework = ">=3.10.3" -drf-spectacular-sidecar = { version = "*", optional = true, markers = "extra == \"sidecar\"" } +drf-spectacular-sidecar = {version = "*", optional = true, markers = "extra == \"sidecar\""} inflection = ">=0.3.1" jsonschema = ">=2.6.0" PyYAML = ">=5.1" @@ -1467,8 +1686,8 @@ description = "Serve self-contained distribution builds of Swagger UI and Redoc optional = false python-versions = ">=3.6" files = [ - { file = "drf_spectacular_sidecar-2025.6.1-py3-none-any.whl", hash = "sha256:c7c4768c03faa3d2f7afacd1464f67732e7d6866d2cf2e8f649175c27318745c" }, - { file = "drf_spectacular_sidecar-2025.6.1.tar.gz", hash = "sha256:ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf" }, + {file = "drf_spectacular_sidecar-2025.6.1-py3-none-any.whl", hash = "sha256:c7c4768c03faa3d2f7afacd1464f67732e7d6866d2cf2e8f649175c27318745c"}, + {file = "drf_spectacular_sidecar-2025.6.1.tar.gz", hash = "sha256:ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf"}, ] [package.dependencies] @@ -1481,8 +1700,8 @@ description = "Transport classes and utilities shared among Python Elastic clien optional = false python-versions = ">=3.8" files = [ - { file = "elastic_transport-8.17.1-py3-none-any.whl", hash = "sha256:192718f498f1d10c5e9aa8b9cf32aed405e469a7f0e9d6a8923431dbb2c59fb8" }, - { file = "elastic_transport-8.17.1.tar.gz", hash = "sha256:5edef32ac864dca8e2f0a613ef63491ee8d6b8cfb52881fa7313ba9290cac6d2" }, + {file = "elastic_transport-8.17.1-py3-none-any.whl", hash = "sha256:192718f498f1d10c5e9aa8b9cf32aed405e469a7f0e9d6a8923431dbb2c59fb8"}, + {file = "elastic_transport-8.17.1.tar.gz", hash = "sha256:5edef32ac864dca8e2f0a613ef63491ee8d6b8cfb52881fa7313ba9290cac6d2"}, ] [package.dependencies] @@ -1499,8 +1718,8 @@ description = "Python client for Elasticsearch" optional = false python-versions = ">=3.8" files = [ - { file = "elasticsearch-8.18.1-py3-none-any.whl", hash = "sha256:1a8c8b5ec3ce5be88f96d2f898375671648e96272978bce0dee3137d9326aabb" }, - { file = "elasticsearch-8.18.1.tar.gz", hash = "sha256:998035f17a8c1fba7ae26b183dca797dcf95db86da6a7ecba56d31afc40f07c7" }, + {file = "elasticsearch-8.18.1-py3-none-any.whl", hash = "sha256:1a8c8b5ec3ce5be88f96d2f898375671648e96272978bce0dee3137d9326aabb"}, + {file = "elasticsearch-8.18.1.tar.gz", hash = "sha256:998035f17a8c1fba7ae26b183dca797dcf95db86da6a7ecba56d31afc40f07c7"}, ] [package.dependencies] @@ -1524,8 +1743,8 @@ description = "Python client for Elasticsearch" optional = false python-versions = ">=3.8" files = [ - { file = "elasticsearch_dsl-8.18.0-py3-none-any.whl", hash = "sha256:0522c5bb20c7abae69855109e650bf1166d486cbf706b5e1b29c28936a9102a3" }, - { file = "elasticsearch_dsl-8.18.0.tar.gz", hash = "sha256:763465dba9eae166add10567e924c65730aa122819b08bfe9a077e91b13b30d1" }, + {file = "elasticsearch_dsl-8.18.0-py3-none-any.whl", hash = "sha256:0522c5bb20c7abae69855109e650bf1166d486cbf706b5e1b29c28936a9102a3"}, + {file = "elasticsearch_dsl-8.18.0.tar.gz", hash = "sha256:763465dba9eae166add10567e924c65730aa122819b08bfe9a077e91b13b30d1"}, ] [package.dependencies] @@ -1545,8 +1764,8 @@ description = "Get the currently executing AST node of a frame, and other inform optional = true python-versions = ">=3.8" files = [ - { file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa" }, - { file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755" }, + {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, + {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, ] [package.extras] @@ -1559,13 +1778,29 @@ description = "Fastest Python implementation of JSON schema" optional = true python-versions = "*" files = [ - { file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667" }, - { file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4" }, + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, ] [package.extras] devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +[[package]] +name = "filelock" +version = "3.16.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] + [[package]] name = "filetype" version = "1.2.0" @@ -1573,10 +1808,26 @@ description = "Infer file type and MIME type of any file/buffer. No external dep optional = false python-versions = "*" files = [ - { file = "filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25" }, - { file = "filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb" }, + {file = "filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25"}, + {file = "filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb"}, ] +[[package]] +name = "flake8" +version = "7.2.0" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.9" +files = [ + {file = "flake8-7.2.0-py2.py3-none-any.whl", hash = "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343"}, + {file = "flake8-7.2.0.tar.gz", hash = "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.13.0,<2.14.0" +pyflakes = ">=3.3.0,<3.4.0" + [[package]] name = "fqdn" version = "1.5.1" @@ -1584,8 +1835,8 @@ description = "Validates fully-qualified domain names against RFC 1123, so that optional = true python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ - { file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014" }, - { file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f" }, + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, ] [[package]] @@ -1595,10 +1846,42 @@ description = "A fancy and practical functional tools" optional = false python-versions = "*" files = [ - { file = "funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0" }, - { file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb" }, + {file = "funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0"}, + {file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"}, ] +[[package]] +name = "gitdb" +version = "4.0.12" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf"}, + {file = "gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.44" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"}, + {file = "gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (>=7.1.2,<7.2)", "sphinx-autodoc-typehints", "sphinx_rtd_theme"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + [[package]] name = "graphene" version = "3.4.3" @@ -1606,8 +1889,8 @@ description = "GraphQL Framework for Python" optional = false python-versions = "*" files = [ - { file = "graphene-3.4.3-py2.py3-none-any.whl", hash = "sha256:820db6289754c181007a150db1f7fff544b94142b556d12e3ebc777a7bf36c71" }, - { file = "graphene-3.4.3.tar.gz", hash = "sha256:2a3786948ce75fe7e078443d37f609cbe5bb36ad8d6b828740ad3b95ed1a0aaa" }, + {file = "graphene-3.4.3-py2.py3-none-any.whl", hash = "sha256:820db6289754c181007a150db1f7fff544b94142b556d12e3ebc777a7bf36c71"}, + {file = "graphene-3.4.3.tar.gz", hash = "sha256:2a3786948ce75fe7e078443d37f609cbe5bb36ad8d6b828740ad3b95ed1a0aaa"}, ] [package.dependencies] @@ -1627,8 +1910,8 @@ description = "Graphene Django integration" optional = false python-versions = "*" files = [ - { file = "graphene-django-3.2.3.tar.gz", hash = "sha256:d831bfe8e9a6e77e477b7854faef4addb318f386119a69ee4c57b74560f3e07d" }, - { file = "graphene_django-3.2.3-py2.py3-none-any.whl", hash = "sha256:0c673a4dad315b26b4d18eb379ad0c7027fd6a36d23a1848b7c7c09a14a9271e" }, + {file = "graphene-django-3.2.3.tar.gz", hash = "sha256:d831bfe8e9a6e77e477b7854faef4addb318f386119a69ee4c57b74560f3e07d"}, + {file = "graphene_django-3.2.3-py2.py3-none-any.whl", hash = "sha256:0c673a4dad315b26b4d18eb379ad0c7027fd6a36d23a1848b7c7c09a14a9271e"}, ] [package.dependencies] @@ -1651,8 +1934,8 @@ description = "Lib for adding file upload functionality to GraphQL mutations in optional = false python-versions = "*" files = [ - { file = "graphene_file_upload-1.3.0-py3-none-any.whl", hash = "sha256:5afe50f409f50e3d198fd92c883d98d868e6c6aaadf5df3a3f4d88ecad90ed97" }, - { file = "graphene_file_upload-1.3.0.tar.gz", hash = "sha256:6898480b0556826472c80971032917c01968ade5800d84054008fe598795b063" }, + {file = "graphene_file_upload-1.3.0-py3-none-any.whl", hash = "sha256:5afe50f409f50e3d198fd92c883d98d868e6c6aaadf5df3a3f4d88ecad90ed97"}, + {file = "graphene_file_upload-1.3.0.tar.gz", hash = "sha256:6898480b0556826472c80971032917c01968ade5800d84054008fe598795b063"}, ] [package.dependencies] @@ -1671,8 +1954,8 @@ description = "GraphQL implementation for Python, a port of GraphQL.js, the Java optional = false python-versions = "<4,>=3.6" files = [ - { file = "graphql_core-3.2.6-py3-none-any.whl", hash = "sha256:78b016718c161a6fb20a7d97bbf107f331cd1afe53e45566c59f776ed7f0b45f" }, - { file = "graphql_core-3.2.6.tar.gz", hash = "sha256:c08eec22f9e40f0bd61d805907e3b3b1b9a320bc606e23dc145eebca07c8fbab" }, + {file = "graphql_core-3.2.6-py3-none-any.whl", hash = "sha256:78b016718c161a6fb20a7d97bbf107f331cd1afe53e45566c59f776ed7f0b45f"}, + {file = "graphql_core-3.2.6.tar.gz", hash = "sha256:c08eec22f9e40f0bd61d805907e3b3b1b9a320bc606e23dc145eebca07c8fbab"}, ] [[package]] @@ -1682,8 +1965,8 @@ description = "Relay library for graphql-core" optional = false python-versions = ">=3.6,<4" files = [ - { file = "graphql-relay-3.2.0.tar.gz", hash = "sha256:1ff1c51298356e481a0be009ccdff249832ce53f30559c1338f22a0e0d17250c" }, - { file = "graphql_relay-3.2.0-py3-none-any.whl", hash = "sha256:c9b22bd28b170ba1fe674c74384a8ff30a76c8e26f88ac3aa1584dd3179953e5" }, + {file = "graphql-relay-3.2.0.tar.gz", hash = "sha256:1ff1c51298356e481a0be009ccdff249832ce53f30559c1338f22a0e0d17250c"}, + {file = "graphql_relay-3.2.0-py3-none-any.whl", hash = "sha256:c9b22bd28b170ba1fe674c74384a8ff30a76c8e26f88ac3aa1584dd3179953e5"}, ] [package.dependencies] @@ -1696,8 +1979,8 @@ description = "WSGI HTTP Server for UNIX" optional = false python-versions = ">=3.7" files = [ - { file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d" }, - { file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec" }, + {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, + {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, ] [package.dependencies] @@ -1717,8 +2000,8 @@ description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" files = [ - { file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" }, - { file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] @@ -1728,8 +2011,8 @@ description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - { file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" }, - { file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] @@ -1749,8 +2032,8 @@ description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - { file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" }, - { file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -1766,6 +2049,20 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "identify" +version = "2.6.12" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2"}, + {file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6"}, +] + +[package.extras] +license = ["ukkonen"] + [[package]] name = "idna" version = "3.10" @@ -1773,8 +2070,8 @@ description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - { file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" }, - { file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" }, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [package.extras] @@ -1787,8 +2084,8 @@ description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" files = [ - { file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd" }, - { file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000" }, + {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, + {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, ] [package.dependencies] @@ -1810,8 +2107,19 @@ description = "A port of Ruby on Rails inflector to Python" optional = false python-versions = ">=3.5" files = [ - { file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2" }, - { file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417" }, + {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, + {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] [[package]] @@ -1821,12 +2129,12 @@ description = "IPython Kernel for Jupyter" optional = true python-versions = ">=3.8" files = [ - { file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5" }, - { file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215" }, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [package.dependencies] -appnope = { version = "*", markers = "platform_system == \"Darwin\"" } +appnope = {version = "*", markers = "platform_system == \"Darwin\""} comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" @@ -1854,17 +2162,17 @@ description = "IPython: Productive Interactive Computing" optional = true python-versions = ">=3.11" files = [ - { file = "ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04" }, - { file = "ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8" }, + {file = "ipython-9.3.0-py3-none-any.whl", hash = "sha256:1a0b6dd9221a1f5dddf725b57ac0cb6fddc7b5f470576231ae9162b9b3455a04"}, + {file = "ipython-9.3.0.tar.gz", hash = "sha256:79eb896f9f23f50ad16c3bc205f686f6e030ad246cc309c6279a242b14afe9d8"}, ] [package.dependencies] -colorama = { version = "*", markers = "sys_platform == \"win32\"" } +colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" ipython-pygments-lexers = "*" jedi = ">=0.16" matplotlib-inline = "*" -pexpect = { version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" } +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack_data = "*" @@ -1885,8 +2193,8 @@ description = "Defines a variety of Pygments lexers for highlighting IPython cod optional = true python-versions = ">=3.8" files = [ - { file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" }, - { file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81" }, + {file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c"}, + {file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81"}, ] [package.dependencies] @@ -1899,8 +2207,8 @@ description = "Jupyter interactive widgets" optional = true python-versions = ">=3.7" files = [ - { file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb" }, - { file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376" }, + {file = "ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb"}, + {file = "ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376"}, ] [package.dependencies] @@ -1920,8 +2228,8 @@ description = "An ISO 8601 date/time/duration parser and formatter" optional = false python-versions = ">=3.7" files = [ - { file = "isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15" }, - { file = "isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6" }, + {file = "isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15"}, + {file = "isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6"}, ] [[package]] @@ -1931,13 +2239,27 @@ description = "Operations with ISO 8601 durations" optional = true python-versions = ">=3.7" files = [ - { file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042" }, - { file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9" }, + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, ] [package.dependencies] arrow = ">=0.15.0" +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + [[package]] name = "jedi" version = "0.19.2" @@ -1945,8 +2267,8 @@ description = "An autocompletion tool for Python that can be used for text edito optional = true python-versions = ">=3.6" files = [ - { file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9" }, - { file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0" }, + {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, + {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, ] [package.dependencies] @@ -1961,11 +2283,11 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] name = "jinja2" version = "3.1.6" description = "A very fast and expressive template engine." -optional = true +optional = false python-versions = ">=3.7" files = [ - { file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" }, - { file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d" }, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -1981,83 +2303,94 @@ description = "Fast iterable JSON parser." optional = true python-versions = ">=3.9" files = [ - { file = "jiter-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cd2fb72b02478f06a900a5782de2ef47e0396b3e1f7d5aba30daeb1fce66f303" }, - { file = "jiter-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32bb468e3af278f095d3fa5b90314728a6916d89ba3d0ffb726dd9bf7367285e" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8b3e0068c26ddedc7abc6fac37da2d0af16b921e288a5a613f4b86f050354f" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:286299b74cc49e25cd42eea19b72aa82c515d2f2ee12d11392c56d8701f52224" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ed5649ceeaeffc28d87fb012d25a4cd356dcd53eff5acff1f0466b831dda2a7" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2ab0051160cb758a70716448908ef14ad476c3774bd03ddce075f3c1f90a3d6" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03997d2f37f6b67d2f5c475da4412be584e1cec273c1cfc03d642c46db43f8cf" }, - { file = "jiter-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c404a99352d839fed80d6afd6c1d66071f3bacaaa5c4268983fc10f769112e90" }, - { file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66e989410b6666d3ddb27a74c7e50d0829704ede652fd4c858e91f8d64b403d0" }, - { file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b532d3af9ef4f6374609a3bcb5e05a1951d3bf6190dc6b176fdb277c9bbf15ee" }, - { file = "jiter-0.10.0-cp310-cp310-win32.whl", hash = "sha256:da9be20b333970e28b72edc4dff63d4fec3398e05770fb3205f7fb460eb48dd4" }, - { file = "jiter-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:f59e533afed0c5b0ac3eba20d2548c4a550336d8282ee69eb07b37ea526ee4e5" }, - { file = "jiter-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3bebe0c558e19902c96e99217e0b8e8b17d570906e72ed8a87170bc290b1e978" }, - { file = "jiter-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:558cc7e44fd8e507a236bee6a02fa17199ba752874400a0ca6cd6e2196cdb7dc" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d613e4b379a07d7c8453c5712ce7014e86c6ac93d990a0b8e7377e18505e98d" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f62cf8ba0618eda841b9bf61797f21c5ebd15a7a1e19daab76e4e4b498d515b2" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:919d139cdfa8ae8945112398511cb7fca58a77382617d279556b344867a37e61" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ddbc6ae311175a3b03bd8994881bc4635c923754932918e18da841632349db" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c440ea003ad10927a30521a9062ce10b5479592e8a70da27f21eeb457b4a9c5" }, - { file = "jiter-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc347c87944983481e138dea467c0551080c86b9d21de6ea9306efb12ca8f606" }, - { file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13252b58c1f4d8c5b63ab103c03d909e8e1e7842d302473f482915d95fefd605" }, - { file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d1bbf3c465de4a24ab12fb7766a0003f6f9bce48b8b6a886158c4d569452dc5" }, - { file = "jiter-0.10.0-cp311-cp311-win32.whl", hash = "sha256:db16e4848b7e826edca4ccdd5b145939758dadf0dc06e7007ad0e9cfb5928ae7" }, - { file = "jiter-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c9c1d5f10e18909e993f9641f12fe1c77b3e9b533ee94ffa970acc14ded3812" }, - { file = "jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b" }, - { file = "jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a" }, - { file = "jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95" }, - { file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea" }, - { file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b" }, - { file = "jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01" }, - { file = "jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49" }, - { file = "jiter-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0588107ec8e11b6f5ef0e0d656fb2803ac6cf94a96b2b9fc675c0e3ab5e8644" }, - { file = "jiter-0.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cafc4628b616dc32530c20ee53d71589816cf385dd9449633e910d596b1f5c8a" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520ef6d981172693786a49ff5b09eda72a42e539f14788124a07530f785c3ad6" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:554dedfd05937f8fc45d17ebdf298fe7e0c77458232bcb73d9fbbf4c6455f5b3" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bc299da7789deacf95f64052d97f75c16d4fc8c4c214a22bf8d859a4288a1c2" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5161e201172de298a8a1baad95eb85db4fb90e902353b1f6a41d64ea64644e25" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e2227db6ba93cb3e2bf67c87e594adde0609f146344e8207e8730364db27041" }, - { file = "jiter-0.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15acb267ea5e2c64515574b06a8bf393fbfee6a50eb1673614aa45f4613c0cca" }, - { file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:901b92f2e2947dc6dfcb52fd624453862e16665ea909a08398dde19c0731b7f4" }, - { file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d0cb9a125d5a3ec971a094a845eadde2db0de85b33c9f13eb94a0c63d463879e" }, - { file = "jiter-0.10.0-cp313-cp313-win32.whl", hash = "sha256:48a403277ad1ee208fb930bdf91745e4d2d6e47253eedc96e2559d1e6527006d" }, - { file = "jiter-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:75f9eb72ecb640619c29bf714e78c9c46c9c4eaafd644bf78577ede459f330d4" }, - { file = "jiter-0.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:28ed2a4c05a1f32ef0e1d24c2611330219fed727dae01789f4a335617634b1ca" }, - { file = "jiter-0.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a4c418b1ec86a195f1ca69da8b23e8926c752b685af665ce30777233dfe070" }, - { file = "jiter-0.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d7bfed2fe1fe0e4dda6ef682cee888ba444b21e7a6553e03252e4feb6cf0adca" }, - { file = "jiter-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:5e9251a5e83fab8d87799d3e1a46cb4b7f2919b895c6f4483629ed2446f66522" }, - { file = "jiter-0.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:023aa0204126fe5b87ccbcd75c8a0d0261b9abdbbf46d55e7ae9f8e22424eeb8" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c189c4f1779c05f75fc17c0c1267594ed918996a231593a21a5ca5438445216" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:15720084d90d1098ca0229352607cd68256c76991f6b374af96f36920eae13c4" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f2fb68e5f1cfee30e2b2a09549a00683e0fde4c6a2ab88c94072fc33cb7426" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce541693355fc6da424c08b7edf39a2895f58d6ea17d92cc2b168d20907dee12" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31c50c40272e189d50006ad5c73883caabb73d4e9748a688b216e85a9a9ca3b9" }, - { file = "jiter-0.10.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa3402a2ff9815960e0372a47b75c76979d74402448509ccd49a275fa983ef8a" }, - { file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:1956f934dca32d7bb647ea21d06d93ca40868b505c228556d3373cbd255ce853" }, - { file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:fcedb049bdfc555e261d6f65a6abe1d5ad68825b7202ccb9692636c70fcced86" }, - { file = "jiter-0.10.0-cp314-cp314-win32.whl", hash = "sha256:ac509f7eccca54b2a29daeb516fb95b6f0bd0d0d8084efaf8ed5dfc7b9f0b357" }, - { file = "jiter-0.10.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5ed975b83a2b8639356151cef5c0d597c68376fc4922b45d0eb384ac058cfa00" }, - { file = "jiter-0.10.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa96f2abba33dc77f79b4cf791840230375f9534e5fac927ccceb58c5e604a5" }, - { file = "jiter-0.10.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bd6292a43c0fc09ce7c154ec0fa646a536b877d1e8f2f96c19707f65355b5a4d" }, - { file = "jiter-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39de429dcaeb6808d75ffe9effefe96a4903c6a4b376b2f6d08d77c1aaee2f18" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52ce124f13a7a616fad3bb723f2bfb537d78239d1f7f219566dc52b6f2a9e48d" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:166f3606f11920f9a1746b2eea84fa2c0a5d50fd313c38bdea4edc072000b0af" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28dcecbb4ba402916034fc14eba7709f250c4d24b0c43fc94d187ee0580af181" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86c5aa6910f9bebcc7bc4f8bc461aff68504388b43bfe5e5c0bd21efa33b52f4" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ceeb52d242b315d7f1f74b441b6a167f78cea801ad7c11c36da77ff2d42e8a28" }, - { file = "jiter-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ff76d8887c8c8ee1e772274fcf8cc1071c2c58590d13e33bd12d02dc9a560397" }, - { file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a9be4d0fa2b79f7222a88aa488bd89e2ae0a0a5b189462a12def6ece2faa45f1" }, - { file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ab7fd8738094139b6c1ab1822d6f2000ebe41515c537235fd45dabe13ec9324" }, - { file = "jiter-0.10.0-cp39-cp39-win32.whl", hash = "sha256:5f51e048540dd27f204ff4a87f5d79294ea0aa3aa552aca34934588cf27023cf" }, - { file = "jiter-0.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b28302349dc65703a9e4ead16f163b1c339efffbe1049c30a44b001a2a4fff9" }, - { file = "jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500" }, + {file = "jiter-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cd2fb72b02478f06a900a5782de2ef47e0396b3e1f7d5aba30daeb1fce66f303"}, + {file = "jiter-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32bb468e3af278f095d3fa5b90314728a6916d89ba3d0ffb726dd9bf7367285e"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8b3e0068c26ddedc7abc6fac37da2d0af16b921e288a5a613f4b86f050354f"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:286299b74cc49e25cd42eea19b72aa82c515d2f2ee12d11392c56d8701f52224"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ed5649ceeaeffc28d87fb012d25a4cd356dcd53eff5acff1f0466b831dda2a7"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2ab0051160cb758a70716448908ef14ad476c3774bd03ddce075f3c1f90a3d6"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03997d2f37f6b67d2f5c475da4412be584e1cec273c1cfc03d642c46db43f8cf"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c404a99352d839fed80d6afd6c1d66071f3bacaaa5c4268983fc10f769112e90"}, + {file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66e989410b6666d3ddb27a74c7e50d0829704ede652fd4c858e91f8d64b403d0"}, + {file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b532d3af9ef4f6374609a3bcb5e05a1951d3bf6190dc6b176fdb277c9bbf15ee"}, + {file = "jiter-0.10.0-cp310-cp310-win32.whl", hash = "sha256:da9be20b333970e28b72edc4dff63d4fec3398e05770fb3205f7fb460eb48dd4"}, + {file = "jiter-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:f59e533afed0c5b0ac3eba20d2548c4a550336d8282ee69eb07b37ea526ee4e5"}, + {file = "jiter-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3bebe0c558e19902c96e99217e0b8e8b17d570906e72ed8a87170bc290b1e978"}, + {file = "jiter-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:558cc7e44fd8e507a236bee6a02fa17199ba752874400a0ca6cd6e2196cdb7dc"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d613e4b379a07d7c8453c5712ce7014e86c6ac93d990a0b8e7377e18505e98d"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f62cf8ba0618eda841b9bf61797f21c5ebd15a7a1e19daab76e4e4b498d515b2"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:919d139cdfa8ae8945112398511cb7fca58a77382617d279556b344867a37e61"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ddbc6ae311175a3b03bd8994881bc4635c923754932918e18da841632349db"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c440ea003ad10927a30521a9062ce10b5479592e8a70da27f21eeb457b4a9c5"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc347c87944983481e138dea467c0551080c86b9d21de6ea9306efb12ca8f606"}, + {file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13252b58c1f4d8c5b63ab103c03d909e8e1e7842d302473f482915d95fefd605"}, + {file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d1bbf3c465de4a24ab12fb7766a0003f6f9bce48b8b6a886158c4d569452dc5"}, + {file = "jiter-0.10.0-cp311-cp311-win32.whl", hash = "sha256:db16e4848b7e826edca4ccdd5b145939758dadf0dc06e7007ad0e9cfb5928ae7"}, + {file = "jiter-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c9c1d5f10e18909e993f9641f12fe1c77b3e9b533ee94ffa970acc14ded3812"}, + {file = "jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b"}, + {file = "jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95"}, + {file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea"}, + {file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b"}, + {file = "jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01"}, + {file = "jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49"}, + {file = "jiter-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0588107ec8e11b6f5ef0e0d656fb2803ac6cf94a96b2b9fc675c0e3ab5e8644"}, + {file = "jiter-0.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cafc4628b616dc32530c20ee53d71589816cf385dd9449633e910d596b1f5c8a"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520ef6d981172693786a49ff5b09eda72a42e539f14788124a07530f785c3ad6"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:554dedfd05937f8fc45d17ebdf298fe7e0c77458232bcb73d9fbbf4c6455f5b3"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bc299da7789deacf95f64052d97f75c16d4fc8c4c214a22bf8d859a4288a1c2"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5161e201172de298a8a1baad95eb85db4fb90e902353b1f6a41d64ea64644e25"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e2227db6ba93cb3e2bf67c87e594adde0609f146344e8207e8730364db27041"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15acb267ea5e2c64515574b06a8bf393fbfee6a50eb1673614aa45f4613c0cca"}, + {file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:901b92f2e2947dc6dfcb52fd624453862e16665ea909a08398dde19c0731b7f4"}, + {file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d0cb9a125d5a3ec971a094a845eadde2db0de85b33c9f13eb94a0c63d463879e"}, + {file = "jiter-0.10.0-cp313-cp313-win32.whl", hash = "sha256:48a403277ad1ee208fb930bdf91745e4d2d6e47253eedc96e2559d1e6527006d"}, + {file = "jiter-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:75f9eb72ecb640619c29bf714e78c9c46c9c4eaafd644bf78577ede459f330d4"}, + {file = "jiter-0.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:28ed2a4c05a1f32ef0e1d24c2611330219fed727dae01789f4a335617634b1ca"}, + {file = "jiter-0.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a4c418b1ec86a195f1ca69da8b23e8926c752b685af665ce30777233dfe070"}, + {file = "jiter-0.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d7bfed2fe1fe0e4dda6ef682cee888ba444b21e7a6553e03252e4feb6cf0adca"}, + {file = "jiter-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:5e9251a5e83fab8d87799d3e1a46cb4b7f2919b895c6f4483629ed2446f66522"}, + {file = "jiter-0.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:023aa0204126fe5b87ccbcd75c8a0d0261b9abdbbf46d55e7ae9f8e22424eeb8"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c189c4f1779c05f75fc17c0c1267594ed918996a231593a21a5ca5438445216"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:15720084d90d1098ca0229352607cd68256c76991f6b374af96f36920eae13c4"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f2fb68e5f1cfee30e2b2a09549a00683e0fde4c6a2ab88c94072fc33cb7426"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce541693355fc6da424c08b7edf39a2895f58d6ea17d92cc2b168d20907dee12"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31c50c40272e189d50006ad5c73883caabb73d4e9748a688b216e85a9a9ca3b9"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa3402a2ff9815960e0372a47b75c76979d74402448509ccd49a275fa983ef8a"}, + {file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:1956f934dca32d7bb647ea21d06d93ca40868b505c228556d3373cbd255ce853"}, + {file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:fcedb049bdfc555e261d6f65a6abe1d5ad68825b7202ccb9692636c70fcced86"}, + {file = "jiter-0.10.0-cp314-cp314-win32.whl", hash = "sha256:ac509f7eccca54b2a29daeb516fb95b6f0bd0d0d8084efaf8ed5dfc7b9f0b357"}, + {file = "jiter-0.10.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5ed975b83a2b8639356151cef5c0d597c68376fc4922b45d0eb384ac058cfa00"}, + {file = "jiter-0.10.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa96f2abba33dc77f79b4cf791840230375f9534e5fac927ccceb58c5e604a5"}, + {file = "jiter-0.10.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bd6292a43c0fc09ce7c154ec0fa646a536b877d1e8f2f96c19707f65355b5a4d"}, + {file = "jiter-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39de429dcaeb6808d75ffe9effefe96a4903c6a4b376b2f6d08d77c1aaee2f18"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52ce124f13a7a616fad3bb723f2bfb537d78239d1f7f219566dc52b6f2a9e48d"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:166f3606f11920f9a1746b2eea84fa2c0a5d50fd313c38bdea4edc072000b0af"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28dcecbb4ba402916034fc14eba7709f250c4d24b0c43fc94d187ee0580af181"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86c5aa6910f9bebcc7bc4f8bc461aff68504388b43bfe5e5c0bd21efa33b52f4"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ceeb52d242b315d7f1f74b441b6a167f78cea801ad7c11c36da77ff2d42e8a28"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ff76d8887c8c8ee1e772274fcf8cc1071c2c58590d13e33bd12d02dc9a560397"}, + {file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a9be4d0fa2b79f7222a88aa488bd89e2ae0a0a5b189462a12def6ece2faa45f1"}, + {file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ab7fd8738094139b6c1ab1822d6f2000ebe41515c537235fd45dabe13ec9324"}, + {file = "jiter-0.10.0-cp39-cp39-win32.whl", hash = "sha256:5f51e048540dd27f204ff4a87f5d79294ea0aa3aa552aca34934588cf27023cf"}, + {file = "jiter-0.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b28302349dc65703a9e4ead16f163b1c339efffbe1049c30a44b001a2a4fff9"}, + {file = "jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500"}, +] + +[[package]] +name = "joblib" +version = "1.5.1" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.9" +files = [ + {file = "joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a"}, + {file = "joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444"}, ] [[package]] @@ -2067,8 +2400,8 @@ description = "A Python implementation of the JSON5 data format." optional = true python-versions = ">=3.8.0" files = [ - { file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db" }, - { file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a" }, + {file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db"}, + {file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a"}, ] [package.extras] @@ -2081,8 +2414,8 @@ description = "Identify specific nodes in a JSON document (RFC 6901)" optional = true python-versions = ">=3.7" files = [ - { file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942" }, - { file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef" }, + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, ] [[package]] @@ -2092,23 +2425,23 @@ description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.9" files = [ - { file = "jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d" }, - { file = "jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196" }, + {file = "jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d"}, + {file = "jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196"}, ] [package.dependencies] attrs = ">=22.2.0" -fqdn = { version = "*", optional = true, markers = "extra == \"format-nongpl\"" } -idna = { version = "*", optional = true, markers = "extra == \"format-nongpl\"" } -isoduration = { version = "*", optional = true, markers = "extra == \"format-nongpl\"" } -jsonpointer = { version = ">1.13", optional = true, markers = "extra == \"format-nongpl\"" } +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} jsonschema-specifications = ">=2023.03.6" referencing = ">=0.28.4" -rfc3339-validator = { version = "*", optional = true, markers = "extra == \"format-nongpl\"" } -rfc3986-validator = { version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\"" } +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} rpds-py = ">=0.7.1" -uri-template = { version = "*", optional = true, markers = "extra == \"format-nongpl\"" } -webcolors = { version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\"" } +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] @@ -2121,8 +2454,8 @@ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Regis optional = false python-versions = ">=3.9" files = [ - { file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af" }, - { file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608" }, + {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, + {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, ] [package.dependencies] @@ -2135,8 +2468,8 @@ description = "Jupyter metapackage. Install all the Jupyter components in one go optional = true python-versions = "*" files = [ - { file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83" }, - { file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a" }, + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, ] [package.dependencies] @@ -2154,8 +2487,8 @@ description = "Jupyter protocol implementation and client libraries" optional = true python-versions = ">=3.8" files = [ - { file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f" }, - { file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419" }, + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, ] [package.dependencies] @@ -2176,8 +2509,8 @@ description = "Jupyter terminal console" optional = true python-versions = ">=3.7" files = [ - { file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485" }, - { file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539" }, + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, ] [package.dependencies] @@ -2200,13 +2533,13 @@ description = "Jupyter core package. A base package on which Jupyter projects re optional = true python-versions = ">=3.8" files = [ - { file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0" }, - { file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941" }, + {file = "jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0"}, + {file = "jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = { version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" } +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] @@ -2220,12 +2553,12 @@ description = "Jupyter Event System library" optional = true python-versions = ">=3.9" files = [ - { file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb" }, - { file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b" }, + {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, + {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, ] [package.dependencies] -jsonschema = { version = ">=4.18.0", extras = ["format-nongpl"] } +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} packaging = "*" python-json-logger = ">=2.0.4" pyyaml = ">=5.3" @@ -2246,8 +2579,8 @@ description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab se optional = true python-versions = ">=3.8" files = [ - { file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001" }, - { file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da" }, + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, ] [package.dependencies] @@ -2260,8 +2593,8 @@ description = "The backend—i.e. core services, APIs, and REST endpoints—to J optional = true python-versions = ">=3.9" files = [ - { file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e" }, - { file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6" }, + {file = "jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e"}, + {file = "jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6"}, ] [package.dependencies] @@ -2277,7 +2610,7 @@ nbformat = ">=5.3.0" overrides = ">=5.0" packaging = ">=22.0" prometheus-client = ">=0.9" -pywinpty = { version = ">=2.0.1", markers = "os_name == \"nt\"" } +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} pyzmq = ">=24" send2trash = ">=1.8.2" terminado = ">=0.8.3" @@ -2296,12 +2629,12 @@ description = "A Jupyter Server Extension Providing Terminals." optional = true python-versions = ">=3.8" files = [ - { file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa" }, - { file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269" }, + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, ] [package.dependencies] -pywinpty = { version = ">=2.0.3", markers = "os_name == \"nt\"" } +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} terminado = ">=0.8.3" [package.extras] @@ -2315,8 +2648,8 @@ description = "JupyterLab computational environment" optional = true python-versions = ">=3.9" files = [ - { file = "jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea" }, - { file = "jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2" }, + {file = "jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea"}, + {file = "jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2"}, ] [package.dependencies] @@ -2348,8 +2681,8 @@ description = "Pygments theme using JupyterLab CSS variables" optional = true python-versions = ">=3.8" files = [ - { file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780" }, - { file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d" }, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] [[package]] @@ -2359,8 +2692,8 @@ description = "A set of server components for JupyterLab and JupyterLab like app optional = true python-versions = ">=3.8" files = [ - { file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4" }, - { file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4" }, + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, ] [package.dependencies] @@ -2384,8 +2717,8 @@ description = "Jupyter interactive widgets for JupyterLab" optional = true python-versions = ">=3.7" files = [ - { file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c" }, - { file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b" }, + {file = "jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c"}, + {file = "jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b"}, ] [[package]] @@ -2395,14 +2728,14 @@ description = "Messaging library for Python." optional = false python-versions = ">=3.8" files = [ - { file = "kombu-5.5.4-py3-none-any.whl", hash = "sha256:a12ed0557c238897d8e518f1d1fdf84bd1516c5e305af2dacd85c2015115feb8" }, - { file = "kombu-5.5.4.tar.gz", hash = "sha256:886600168275ebeada93b888e831352fe578168342f0d1d5833d88ba0d847363" }, + {file = "kombu-5.5.4-py3-none-any.whl", hash = "sha256:a12ed0557c238897d8e518f1d1fdf84bd1516c5e305af2dacd85c2015115feb8"}, + {file = "kombu-5.5.4.tar.gz", hash = "sha256:886600168275ebeada93b888e831352fe578168342f0d1d5833d88ba0d847363"}, ] [package.dependencies] amqp = ">=5.1.1,<6.0.0" packaging = "*" -tzdata = { version = ">=2025.2", markers = "python_version >= \"3.9\"" } +tzdata = {version = ">=2025.2", markers = "python_version >= \"3.9\""} vine = "5.1.0" [package.extras] @@ -2430,138 +2763,138 @@ description = "Powerful and Pythonic XML processing library combining libxml2/li optional = false python-versions = ">=3.6" files = [ - { file = "lxml-5.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e7bc6df34d42322c5289e37e9971d6ed114e3776b45fa879f734bded9d1fea9c" }, - { file = "lxml-5.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6854f8bd8a1536f8a1d9a3655e6354faa6406621cf857dc27b681b69860645c7" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:696ea9e87442467819ac22394ca36cb3d01848dad1be6fac3fb612d3bd5a12cf" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ef80aeac414f33c24b3815ecd560cee272786c3adfa5f31316d8b349bfade28" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b9c2754cef6963f3408ab381ea55f47dabc6f78f4b8ebb0f0b25cf1ac1f7609" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7a62cc23d754bb449d63ff35334acc9f5c02e6dae830d78dab4dd12b78a524f4" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f82125bc7203c5ae8633a7d5d20bcfdff0ba33e436e4ab0abc026a53a8960b7" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:b67319b4aef1a6c56576ff544b67a2a6fbd7eaee485b241cabf53115e8908b8f" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:a8ef956fce64c8551221f395ba21d0724fed6b9b6242ca4f2f7beb4ce2f41997" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:0a01ce7d8479dce84fc03324e3b0c9c90b1ece9a9bb6a1b6c9025e7e4520e78c" }, - { file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:91505d3ddebf268bb1588eb0f63821f738d20e1e7f05d3c647a5ca900288760b" }, - { file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a3bcdde35d82ff385f4ede021df801b5c4a5bcdfb61ea87caabcebfc4945dc1b" }, - { file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:aea7c06667b987787c7d1f5e1dfcd70419b711cdb47d6b4bb4ad4b76777a0563" }, - { file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:a7fb111eef4d05909b82152721a59c1b14d0f365e2be4c742a473c5d7372f4f5" }, - { file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43d549b876ce64aa18b2328faff70f5877f8c6dede415f80a2f799d31644d776" }, - { file = "lxml-5.4.0-cp310-cp310-win32.whl", hash = "sha256:75133890e40d229d6c5837b0312abbe5bac1c342452cf0e12523477cd3aa21e7" }, - { file = "lxml-5.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:de5b4e1088523e2b6f730d0509a9a813355b7f5659d70eb4f319c76beea2e250" }, - { file = "lxml-5.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:98a3912194c079ef37e716ed228ae0dcb960992100461b704aea4e93af6b0bb9" }, - { file = "lxml-5.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ea0252b51d296a75f6118ed0d8696888e7403408ad42345d7dfd0d1e93309a7" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b92b69441d1bd39f4940f9eadfa417a25862242ca2c396b406f9272ef09cdcaa" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20e16c08254b9b6466526bc1828d9370ee6c0d60a4b64836bc3ac2917d1e16df" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7605c1c32c3d6e8c990dd28a0970a3cbbf1429d5b92279e37fda05fb0c92190e" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecf4c4b83f1ab3d5a7ace10bafcb6f11df6156857a3c418244cef41ca9fa3e44" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cef4feae82709eed352cd7e97ae062ef6ae9c7b5dbe3663f104cd2c0e8d94ba" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:df53330a3bff250f10472ce96a9af28628ff1f4efc51ccba351a8820bca2a8ba" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:aefe1a7cb852fa61150fcb21a8c8fcea7b58c4cb11fbe59c97a0a4b31cae3c8c" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ef5a7178fcc73b7d8c07229e89f8eb45b2908a9238eb90dcfc46571ccf0383b8" }, - { file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d2ed1b3cb9ff1c10e6e8b00941bb2e5bb568b307bfc6b17dffbbe8be5eecba86" }, - { file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:72ac9762a9f8ce74c9eed4a4e74306f2f18613a6b71fa065495a67ac227b3056" }, - { file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f5cb182f6396706dc6cc1896dd02b1c889d644c081b0cdec38747573db88a7d7" }, - { file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3a3178b4873df8ef9457a4875703488eb1622632a9cee6d76464b60e90adbfcd" }, - { file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e094ec83694b59d263802ed03a8384594fcce477ce484b0cbcd0008a211ca751" }, - { file = "lxml-5.4.0-cp311-cp311-win32.whl", hash = "sha256:4329422de653cdb2b72afa39b0aa04252fca9071550044904b2e7036d9d97fe4" }, - { file = "lxml-5.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd3be6481ef54b8cfd0e1e953323b7aa9d9789b94842d0e5b142ef4bb7999539" }, - { file = "lxml-5.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b5aff6f3e818e6bdbbb38e5967520f174b18f539c2b9de867b1e7fde6f8d95a4" }, - { file = "lxml-5.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942a5d73f739ad7c452bf739a62a0f83e2578afd6b8e5406308731f4ce78b16d" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:460508a4b07364d6abf53acaa0a90b6d370fafde5693ef37602566613a9b0779" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529024ab3a505fed78fe3cc5ddc079464e709f6c892733e3f5842007cec8ac6e" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ca56ebc2c474e8f3d5761debfd9283b8b18c76c4fc0967b74aeafba1f5647f9" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a81e1196f0a5b4167a8dafe3a66aa67c4addac1b22dc47947abd5d5c7a3f24b5" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00b8686694423ddae324cf614e1b9659c2edb754de617703c3d29ff568448df5" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c5681160758d3f6ac5b4fea370495c48aac0989d6a0f01bb9a72ad8ef5ab75c4" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:2dc191e60425ad70e75a68c9fd90ab284df64d9cd410ba8d2b641c0c45bc006e" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:67f779374c6b9753ae0a0195a892a1c234ce8416e4448fe1e9f34746482070a7" }, - { file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:79d5bfa9c1b455336f52343130b2067164040604e41f6dc4d8313867ed540079" }, - { file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3d3c30ba1c9b48c68489dc1829a6eede9873f52edca1dda900066542528d6b20" }, - { file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1af80c6316ae68aded77e91cd9d80648f7dd40406cef73df841aa3c36f6907c8" }, - { file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4d885698f5019abe0de3d352caf9466d5de2baded00a06ef3f1216c1a58ae78f" }, - { file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea53d51859b6c64e7c51d522c03cc2c48b9b5d6172126854cc7f01aa11f52bc" }, - { file = "lxml-5.4.0-cp312-cp312-win32.whl", hash = "sha256:d90b729fd2732df28130c064aac9bb8aff14ba20baa4aee7bd0795ff1187545f" }, - { file = "lxml-5.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1dc4ca99e89c335a7ed47d38964abcb36c5910790f9bd106f2a8fa2ee0b909d2" }, - { file = "lxml-5.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:773e27b62920199c6197130632c18fb7ead3257fce1ffb7d286912e56ddb79e0" }, - { file = "lxml-5.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ce9c671845de9699904b1e9df95acfe8dfc183f2310f163cdaa91a3535af95de" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9454b8d8200ec99a224df8854786262b1bd6461f4280064c807303c642c05e76" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cccd007d5c95279e529c146d095f1d39ac05139de26c098166c4beb9374b0f4d" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fce1294a0497edb034cb416ad3e77ecc89b313cff7adbee5334e4dc0d11f422" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24974f774f3a78ac12b95e3a20ef0931795ff04dbb16db81a90c37f589819551" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:497cab4d8254c2a90bf988f162ace2ddbfdd806fce3bda3f581b9d24c852e03c" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:e794f698ae4c5084414efea0f5cc9f4ac562ec02d66e1484ff822ef97c2cadff" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:2c62891b1ea3094bb12097822b3d44b93fc6c325f2043c4d2736a8ff09e65f60" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:142accb3e4d1edae4b392bd165a9abdee8a3c432a2cca193df995bc3886249c8" }, - { file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1a42b3a19346e5601d1b8296ff6ef3d76038058f311902edd574461e9c036982" }, - { file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4291d3c409a17febf817259cb37bc62cb7eb398bcc95c1356947e2871911ae61" }, - { file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4f5322cf38fe0e21c2d73901abf68e6329dc02a4994e483adbcf92b568a09a54" }, - { file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0be91891bdb06ebe65122aa6bf3fc94489960cf7e03033c6f83a90863b23c58b" }, - { file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:15a665ad90054a3d4f397bc40f73948d48e36e4c09f9bcffc7d90c87410e478a" }, - { file = "lxml-5.4.0-cp313-cp313-win32.whl", hash = "sha256:d5663bc1b471c79f5c833cffbc9b87d7bf13f87e055a5c86c363ccd2348d7e82" }, - { file = "lxml-5.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:bcb7a1096b4b6b24ce1ac24d4942ad98f983cd3810f9711bcd0293f43a9d8b9f" }, - { file = "lxml-5.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7be701c24e7f843e6788353c055d806e8bd8466b52907bafe5d13ec6a6dbaecd" }, - { file = "lxml-5.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb54f7c6bafaa808f27166569b1511fc42701a7713858dddc08afdde9746849e" }, - { file = "lxml-5.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97dac543661e84a284502e0cf8a67b5c711b0ad5fb661d1bd505c02f8cf716d7" }, - { file = "lxml-5.4.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:c70e93fba207106cb16bf852e421c37bbded92acd5964390aad07cb50d60f5cf" }, - { file = "lxml-5.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9c886b481aefdf818ad44846145f6eaf373a20d200b5ce1a5c8e1bc2d8745410" }, - { file = "lxml-5.4.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:fa0e294046de09acd6146be0ed6727d1f42ded4ce3ea1e9a19c11b6774eea27c" }, - { file = "lxml-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:61c7bbf432f09ee44b1ccaa24896d21075e533cd01477966a5ff5a71d88b2f56" }, - { file = "lxml-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121" }, - { file = "lxml-5.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872" }, - { file = "lxml-5.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e" }, - { file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0" }, - { file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92" }, - { file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e" }, - { file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5" }, - { file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188" }, - { file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6" }, - { file = "lxml-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063" }, - { file = "lxml-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49" }, - { file = "lxml-5.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eaf24066ad0b30917186420d51e2e3edf4b0e2ea68d8cd885b14dc8afdcf6556" }, - { file = "lxml-5.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b31a3a77501d86d8ade128abb01082724c0dfd9524f542f2f07d693c9f1175f" }, - { file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e108352e203c7afd0eb91d782582f00a0b16a948d204d4dec8565024fafeea5" }, - { file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11a96c3b3f7551c8a8109aa65e8594e551d5a84c76bf950da33d0fb6dfafab7" }, - { file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:ca755eebf0d9e62d6cb013f1261e510317a41bf4650f22963474a663fdfe02aa" }, - { file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4cd915c0fb1bed47b5e6d6edd424ac25856252f09120e3e8ba5154b6b921860e" }, - { file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:226046e386556a45ebc787871d6d2467b32c37ce76c2680f5c608e25823ffc84" }, - { file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b108134b9667bcd71236c5a02aad5ddd073e372fb5d48ea74853e009fe38acb6" }, - { file = "lxml-5.4.0-cp38-cp38-win32.whl", hash = "sha256:1320091caa89805df7dcb9e908add28166113dcd062590668514dbd510798c88" }, - { file = "lxml-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:073eb6dcdf1f587d9b88c8c93528b57eccda40209cf9be549d469b942b41d70b" }, - { file = "lxml-5.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bda3ea44c39eb74e2488297bb39d47186ed01342f0022c8ff407c250ac3f498e" }, - { file = "lxml-5.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9ceaf423b50ecfc23ca00b7f50b64baba85fb3fb91c53e2c9d00bc86150c7e40" }, - { file = "lxml-5.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:664cdc733bc87449fe781dbb1f309090966c11cc0c0cd7b84af956a02a8a4729" }, - { file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67ed8a40665b84d161bae3181aa2763beea3747f748bca5874b4af4d75998f87" }, - { file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b4a3bd174cc9cdaa1afbc4620c049038b441d6ba07629d89a83b408e54c35cd" }, - { file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:b0989737a3ba6cf2a16efb857fb0dfa20bc5c542737fddb6d893fde48be45433" }, - { file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:dc0af80267edc68adf85f2a5d9be1cdf062f973db6790c1d065e45025fa26140" }, - { file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:639978bccb04c42677db43c79bdaa23785dc7f9b83bfd87570da8207872f1ce5" }, - { file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a99d86351f9c15e4a901fc56404b485b1462039db59288b203f8c629260a142" }, - { file = "lxml-5.4.0-cp39-cp39-win32.whl", hash = "sha256:3e6d5557989cdc3ebb5302bbdc42b439733a841891762ded9514e74f60319ad6" }, - { file = "lxml-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:a8c9b7f16b63e65bbba889acb436a1034a82d34fa09752d754f88d708eca80e1" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1b717b00a71b901b4667226bba282dd462c42ccf618ade12f9ba3674e1fabc55" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27a9ded0f0b52098ff89dd4c418325b987feed2ea5cc86e8860b0f844285d740" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7ce10634113651d6f383aa712a194179dcd496bd8c41e191cec2099fa09de5" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53370c26500d22b45182f98847243efb518d268374a9570409d2e2276232fd37" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6364038c519dffdbe07e3cf42e6a7f8b90c275d4d1617a69bb59734c1a2d571" }, - { file = "lxml-5.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b12cb6527599808ada9eb2cd6e0e7d3d8f13fe7bbb01c6311255a15ded4c7ab4" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5f11a1526ebd0dee85e7b1e39e39a0cc0d9d03fb527f56d8457f6df48a10dc0c" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48b4afaf38bf79109bb060d9016fad014a9a48fb244e11b94f74ae366a64d252" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de6f6bb8a7840c7bf216fb83eec4e2f79f7325eca8858167b68708b929ab2172" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5cca36a194a4eb4e2ed6be36923d3cffd03dcdf477515dea687185506583d4c9" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b7c86884ad23d61b025989d99bfdd92a7351de956e01c61307cb87035960bcb1" }, - { file = "lxml-5.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:53d9469ab5460402c19553b56c3648746774ecd0681b1b27ea74d5d8a3ef5590" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:56dbdbab0551532bb26c19c914848d7251d73edb507c3079d6805fa8bba5b706" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14479c2ad1cb08b62bb941ba8e0e05938524ee3c3114644df905d2331c76cd57" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32697d2ea994e0db19c1df9e40275ffe84973e4232b5c274f47e7c1ec9763cdd" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:24f6df5f24fc3385f622c0c9d63fe34604893bc1a5bdbb2dbf5870f85f9a404a" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:151d6c40bc9db11e960619d2bf2ec5829f0aaffb10b41dcf6ad2ce0f3c0b2325" }, - { file = "lxml-5.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4025bf2884ac4370a3243c5aa8d66d3cb9e15d3ddd0af2d796eccc5f0244390e" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9459e6892f59ecea2e2584ee1058f5d8f629446eab52ba2305ae13a32a059530" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47fb24cc0f052f0576ea382872b3fc7e1f7e3028e53299ea751839418ade92a6" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50441c9de951a153c698b9b99992e806b71c1f36d14b154592580ff4a9d0d877" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ab339536aa798b1e17750733663d272038bf28069761d5be57cb4a9b0137b4f8" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9776af1aad5a4b4a1317242ee2bea51da54b2a7b7b48674be736d463c999f37d" }, - { file = "lxml-5.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:63e7968ff83da2eb6fdda967483a7a023aa497d85ad8f05c3ad9b1f2e8c84987" }, - { file = "lxml-5.4.0.tar.gz", hash = "sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd" }, + {file = "lxml-5.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e7bc6df34d42322c5289e37e9971d6ed114e3776b45fa879f734bded9d1fea9c"}, + {file = "lxml-5.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6854f8bd8a1536f8a1d9a3655e6354faa6406621cf857dc27b681b69860645c7"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:696ea9e87442467819ac22394ca36cb3d01848dad1be6fac3fb612d3bd5a12cf"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ef80aeac414f33c24b3815ecd560cee272786c3adfa5f31316d8b349bfade28"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b9c2754cef6963f3408ab381ea55f47dabc6f78f4b8ebb0f0b25cf1ac1f7609"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7a62cc23d754bb449d63ff35334acc9f5c02e6dae830d78dab4dd12b78a524f4"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f82125bc7203c5ae8633a7d5d20bcfdff0ba33e436e4ab0abc026a53a8960b7"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:b67319b4aef1a6c56576ff544b67a2a6fbd7eaee485b241cabf53115e8908b8f"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:a8ef956fce64c8551221f395ba21d0724fed6b9b6242ca4f2f7beb4ce2f41997"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:0a01ce7d8479dce84fc03324e3b0c9c90b1ece9a9bb6a1b6c9025e7e4520e78c"}, + {file = "lxml-5.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:91505d3ddebf268bb1588eb0f63821f738d20e1e7f05d3c647a5ca900288760b"}, + {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a3bcdde35d82ff385f4ede021df801b5c4a5bcdfb61ea87caabcebfc4945dc1b"}, + {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:aea7c06667b987787c7d1f5e1dfcd70419b711cdb47d6b4bb4ad4b76777a0563"}, + {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:a7fb111eef4d05909b82152721a59c1b14d0f365e2be4c742a473c5d7372f4f5"}, + {file = "lxml-5.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43d549b876ce64aa18b2328faff70f5877f8c6dede415f80a2f799d31644d776"}, + {file = "lxml-5.4.0-cp310-cp310-win32.whl", hash = "sha256:75133890e40d229d6c5837b0312abbe5bac1c342452cf0e12523477cd3aa21e7"}, + {file = "lxml-5.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:de5b4e1088523e2b6f730d0509a9a813355b7f5659d70eb4f319c76beea2e250"}, + {file = "lxml-5.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:98a3912194c079ef37e716ed228ae0dcb960992100461b704aea4e93af6b0bb9"}, + {file = "lxml-5.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ea0252b51d296a75f6118ed0d8696888e7403408ad42345d7dfd0d1e93309a7"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b92b69441d1bd39f4940f9eadfa417a25862242ca2c396b406f9272ef09cdcaa"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20e16c08254b9b6466526bc1828d9370ee6c0d60a4b64836bc3ac2917d1e16df"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7605c1c32c3d6e8c990dd28a0970a3cbbf1429d5b92279e37fda05fb0c92190e"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecf4c4b83f1ab3d5a7ace10bafcb6f11df6156857a3c418244cef41ca9fa3e44"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cef4feae82709eed352cd7e97ae062ef6ae9c7b5dbe3663f104cd2c0e8d94ba"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:df53330a3bff250f10472ce96a9af28628ff1f4efc51ccba351a8820bca2a8ba"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:aefe1a7cb852fa61150fcb21a8c8fcea7b58c4cb11fbe59c97a0a4b31cae3c8c"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ef5a7178fcc73b7d8c07229e89f8eb45b2908a9238eb90dcfc46571ccf0383b8"}, + {file = "lxml-5.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d2ed1b3cb9ff1c10e6e8b00941bb2e5bb568b307bfc6b17dffbbe8be5eecba86"}, + {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:72ac9762a9f8ce74c9eed4a4e74306f2f18613a6b71fa065495a67ac227b3056"}, + {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f5cb182f6396706dc6cc1896dd02b1c889d644c081b0cdec38747573db88a7d7"}, + {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3a3178b4873df8ef9457a4875703488eb1622632a9cee6d76464b60e90adbfcd"}, + {file = "lxml-5.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e094ec83694b59d263802ed03a8384594fcce477ce484b0cbcd0008a211ca751"}, + {file = "lxml-5.4.0-cp311-cp311-win32.whl", hash = "sha256:4329422de653cdb2b72afa39b0aa04252fca9071550044904b2e7036d9d97fe4"}, + {file = "lxml-5.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd3be6481ef54b8cfd0e1e953323b7aa9d9789b94842d0e5b142ef4bb7999539"}, + {file = "lxml-5.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b5aff6f3e818e6bdbbb38e5967520f174b18f539c2b9de867b1e7fde6f8d95a4"}, + {file = "lxml-5.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942a5d73f739ad7c452bf739a62a0f83e2578afd6b8e5406308731f4ce78b16d"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:460508a4b07364d6abf53acaa0a90b6d370fafde5693ef37602566613a9b0779"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529024ab3a505fed78fe3cc5ddc079464e709f6c892733e3f5842007cec8ac6e"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ca56ebc2c474e8f3d5761debfd9283b8b18c76c4fc0967b74aeafba1f5647f9"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a81e1196f0a5b4167a8dafe3a66aa67c4addac1b22dc47947abd5d5c7a3f24b5"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00b8686694423ddae324cf614e1b9659c2edb754de617703c3d29ff568448df5"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c5681160758d3f6ac5b4fea370495c48aac0989d6a0f01bb9a72ad8ef5ab75c4"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:2dc191e60425ad70e75a68c9fd90ab284df64d9cd410ba8d2b641c0c45bc006e"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:67f779374c6b9753ae0a0195a892a1c234ce8416e4448fe1e9f34746482070a7"}, + {file = "lxml-5.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:79d5bfa9c1b455336f52343130b2067164040604e41f6dc4d8313867ed540079"}, + {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3d3c30ba1c9b48c68489dc1829a6eede9873f52edca1dda900066542528d6b20"}, + {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1af80c6316ae68aded77e91cd9d80648f7dd40406cef73df841aa3c36f6907c8"}, + {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4d885698f5019abe0de3d352caf9466d5de2baded00a06ef3f1216c1a58ae78f"}, + {file = "lxml-5.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea53d51859b6c64e7c51d522c03cc2c48b9b5d6172126854cc7f01aa11f52bc"}, + {file = "lxml-5.4.0-cp312-cp312-win32.whl", hash = "sha256:d90b729fd2732df28130c064aac9bb8aff14ba20baa4aee7bd0795ff1187545f"}, + {file = "lxml-5.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1dc4ca99e89c335a7ed47d38964abcb36c5910790f9bd106f2a8fa2ee0b909d2"}, + {file = "lxml-5.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:773e27b62920199c6197130632c18fb7ead3257fce1ffb7d286912e56ddb79e0"}, + {file = "lxml-5.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ce9c671845de9699904b1e9df95acfe8dfc183f2310f163cdaa91a3535af95de"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9454b8d8200ec99a224df8854786262b1bd6461f4280064c807303c642c05e76"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cccd007d5c95279e529c146d095f1d39ac05139de26c098166c4beb9374b0f4d"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fce1294a0497edb034cb416ad3e77ecc89b313cff7adbee5334e4dc0d11f422"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24974f774f3a78ac12b95e3a20ef0931795ff04dbb16db81a90c37f589819551"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:497cab4d8254c2a90bf988f162ace2ddbfdd806fce3bda3f581b9d24c852e03c"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:e794f698ae4c5084414efea0f5cc9f4ac562ec02d66e1484ff822ef97c2cadff"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:2c62891b1ea3094bb12097822b3d44b93fc6c325f2043c4d2736a8ff09e65f60"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:142accb3e4d1edae4b392bd165a9abdee8a3c432a2cca193df995bc3886249c8"}, + {file = "lxml-5.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1a42b3a19346e5601d1b8296ff6ef3d76038058f311902edd574461e9c036982"}, + {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4291d3c409a17febf817259cb37bc62cb7eb398bcc95c1356947e2871911ae61"}, + {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4f5322cf38fe0e21c2d73901abf68e6329dc02a4994e483adbcf92b568a09a54"}, + {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0be91891bdb06ebe65122aa6bf3fc94489960cf7e03033c6f83a90863b23c58b"}, + {file = "lxml-5.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:15a665ad90054a3d4f397bc40f73948d48e36e4c09f9bcffc7d90c87410e478a"}, + {file = "lxml-5.4.0-cp313-cp313-win32.whl", hash = "sha256:d5663bc1b471c79f5c833cffbc9b87d7bf13f87e055a5c86c363ccd2348d7e82"}, + {file = "lxml-5.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:bcb7a1096b4b6b24ce1ac24d4942ad98f983cd3810f9711bcd0293f43a9d8b9f"}, + {file = "lxml-5.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7be701c24e7f843e6788353c055d806e8bd8466b52907bafe5d13ec6a6dbaecd"}, + {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb54f7c6bafaa808f27166569b1511fc42701a7713858dddc08afdde9746849e"}, + {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97dac543661e84a284502e0cf8a67b5c711b0ad5fb661d1bd505c02f8cf716d7"}, + {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:c70e93fba207106cb16bf852e421c37bbded92acd5964390aad07cb50d60f5cf"}, + {file = "lxml-5.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9c886b481aefdf818ad44846145f6eaf373a20d200b5ce1a5c8e1bc2d8745410"}, + {file = "lxml-5.4.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:fa0e294046de09acd6146be0ed6727d1f42ded4ce3ea1e9a19c11b6774eea27c"}, + {file = "lxml-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:61c7bbf432f09ee44b1ccaa24896d21075e533cd01477966a5ff5a71d88b2f56"}, + {file = "lxml-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7ce1a171ec325192c6a636b64c94418e71a1964f56d002cc28122fceff0b6121"}, + {file = "lxml-5.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:795f61bcaf8770e1b37eec24edf9771b307df3af74d1d6f27d812e15a9ff3872"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29f451a4b614a7b5b6c2e043d7b64a15bd8304d7e767055e8ab68387a8cacf4e"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f7f991a68d20c75cb13c5c9142b2a3f9eb161f1f12a9489c82172d1f133c0"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4aa412a82e460571fad592d0f93ce9935a20090029ba08eca05c614f99b0cc92"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:ac7ba71f9561cd7d7b55e1ea5511543c0282e2b6450f122672a2694621d63b7e"}, + {file = "lxml-5.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:c5d32f5284012deaccd37da1e2cd42f081feaa76981f0eaa474351b68df813c5"}, + {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:ce31158630a6ac85bddd6b830cffd46085ff90498b397bd0a259f59d27a12188"}, + {file = "lxml-5.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:31e63621e073e04697c1b2d23fcb89991790eef370ec37ce4d5d469f40924ed6"}, + {file = "lxml-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:be2ba4c3c5b7900246a8f866580700ef0d538f2ca32535e991027bdaba944063"}, + {file = "lxml-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:09846782b1ef650b321484ad429217f5154da4d6e786636c38e434fa32e94e49"}, + {file = "lxml-5.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eaf24066ad0b30917186420d51e2e3edf4b0e2ea68d8cd885b14dc8afdcf6556"}, + {file = "lxml-5.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b31a3a77501d86d8ade128abb01082724c0dfd9524f542f2f07d693c9f1175f"}, + {file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e108352e203c7afd0eb91d782582f00a0b16a948d204d4dec8565024fafeea5"}, + {file = "lxml-5.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11a96c3b3f7551c8a8109aa65e8594e551d5a84c76bf950da33d0fb6dfafab7"}, + {file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:ca755eebf0d9e62d6cb013f1261e510317a41bf4650f22963474a663fdfe02aa"}, + {file = "lxml-5.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4cd915c0fb1bed47b5e6d6edd424ac25856252f09120e3e8ba5154b6b921860e"}, + {file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:226046e386556a45ebc787871d6d2467b32c37ce76c2680f5c608e25823ffc84"}, + {file = "lxml-5.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b108134b9667bcd71236c5a02aad5ddd073e372fb5d48ea74853e009fe38acb6"}, + {file = "lxml-5.4.0-cp38-cp38-win32.whl", hash = "sha256:1320091caa89805df7dcb9e908add28166113dcd062590668514dbd510798c88"}, + {file = "lxml-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:073eb6dcdf1f587d9b88c8c93528b57eccda40209cf9be549d469b942b41d70b"}, + {file = "lxml-5.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bda3ea44c39eb74e2488297bb39d47186ed01342f0022c8ff407c250ac3f498e"}, + {file = "lxml-5.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9ceaf423b50ecfc23ca00b7f50b64baba85fb3fb91c53e2c9d00bc86150c7e40"}, + {file = "lxml-5.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:664cdc733bc87449fe781dbb1f309090966c11cc0c0cd7b84af956a02a8a4729"}, + {file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67ed8a40665b84d161bae3181aa2763beea3747f748bca5874b4af4d75998f87"}, + {file = "lxml-5.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b4a3bd174cc9cdaa1afbc4620c049038b441d6ba07629d89a83b408e54c35cd"}, + {file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:b0989737a3ba6cf2a16efb857fb0dfa20bc5c542737fddb6d893fde48be45433"}, + {file = "lxml-5.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:dc0af80267edc68adf85f2a5d9be1cdf062f973db6790c1d065e45025fa26140"}, + {file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:639978bccb04c42677db43c79bdaa23785dc7f9b83bfd87570da8207872f1ce5"}, + {file = "lxml-5.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a99d86351f9c15e4a901fc56404b485b1462039db59288b203f8c629260a142"}, + {file = "lxml-5.4.0-cp39-cp39-win32.whl", hash = "sha256:3e6d5557989cdc3ebb5302bbdc42b439733a841891762ded9514e74f60319ad6"}, + {file = "lxml-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:a8c9b7f16b63e65bbba889acb436a1034a82d34fa09752d754f88d708eca80e1"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1b717b00a71b901b4667226bba282dd462c42ccf618ade12f9ba3674e1fabc55"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27a9ded0f0b52098ff89dd4c418325b987feed2ea5cc86e8860b0f844285d740"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7ce10634113651d6f383aa712a194179dcd496bd8c41e191cec2099fa09de5"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53370c26500d22b45182f98847243efb518d268374a9570409d2e2276232fd37"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c6364038c519dffdbe07e3cf42e6a7f8b90c275d4d1617a69bb59734c1a2d571"}, + {file = "lxml-5.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b12cb6527599808ada9eb2cd6e0e7d3d8f13fe7bbb01c6311255a15ded4c7ab4"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5f11a1526ebd0dee85e7b1e39e39a0cc0d9d03fb527f56d8457f6df48a10dc0c"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48b4afaf38bf79109bb060d9016fad014a9a48fb244e11b94f74ae366a64d252"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de6f6bb8a7840c7bf216fb83eec4e2f79f7325eca8858167b68708b929ab2172"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5cca36a194a4eb4e2ed6be36923d3cffd03dcdf477515dea687185506583d4c9"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b7c86884ad23d61b025989d99bfdd92a7351de956e01c61307cb87035960bcb1"}, + {file = "lxml-5.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:53d9469ab5460402c19553b56c3648746774ecd0681b1b27ea74d5d8a3ef5590"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:56dbdbab0551532bb26c19c914848d7251d73edb507c3079d6805fa8bba5b706"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14479c2ad1cb08b62bb941ba8e0e05938524ee3c3114644df905d2331c76cd57"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32697d2ea994e0db19c1df9e40275ffe84973e4232b5c274f47e7c1ec9763cdd"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:24f6df5f24fc3385f622c0c9d63fe34604893bc1a5bdbb2dbf5870f85f9a404a"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:151d6c40bc9db11e960619d2bf2ec5829f0aaffb10b41dcf6ad2ce0f3c0b2325"}, + {file = "lxml-5.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4025bf2884ac4370a3243c5aa8d66d3cb9e15d3ddd0af2d796eccc5f0244390e"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9459e6892f59ecea2e2584ee1058f5d8f629446eab52ba2305ae13a32a059530"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47fb24cc0f052f0576ea382872b3fc7e1f7e3028e53299ea751839418ade92a6"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50441c9de951a153c698b9b99992e806b71c1f36d14b154592580ff4a9d0d877"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ab339536aa798b1e17750733663d272038bf28069761d5be57cb4a9b0137b4f8"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9776af1aad5a4b4a1317242ee2bea51da54b2a7b7b48674be736d463c999f37d"}, + {file = "lxml-5.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:63e7968ff83da2eb6fdda967483a7a023aa497d85ad8f05c3ad9b1f2e8c84987"}, + {file = "lxml-5.4.0.tar.gz", hash = "sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd"}, ] [package.extras] @@ -2578,84 +2911,124 @@ description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.9" files = [ - { file = "markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc" }, - { file = "markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f" }, + {file = "markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc"}, + {file = "markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f"}, ] [package.extras] docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." -optional = true +optional = false python-versions = ">=3.9" files = [ - { file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50" }, - { file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d" }, - { file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30" }, - { file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1" }, - { file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6" }, - { file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f" }, - { file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a" }, - { file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0" }, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "marshmallow" +version = "4.0.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.9" +files = [ + {file = "marshmallow-4.0.0-py3-none-any.whl", hash = "sha256:e7b0528337e9990fd64950f8a6b3a1baabed09ad17a0dfb844d701151f92d203"}, + {file = "marshmallow-4.0.0.tar.gz", hash = "sha256:3b6e80aac299a7935cfb97ed01d1854fb90b5079430969af92118ea1b12a8d55"}, +] + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.2.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.1)", "sphinxext-opengraph (==0.10.0)"] +tests = ["pytest", "simplejson"] + [[package]] name = "matplotlib-inline" version = "0.1.7" @@ -2663,13 +3036,35 @@ description = "Inline Matplotlib backend for Jupyter" optional = true python-versions = ">=3.8" files = [ - { file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca" }, - { file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90" }, + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, ] [package.dependencies] traitlets = "*" +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + [[package]] name = "mistune" version = "3.1.3" @@ -2677,49 +3072,49 @@ description = "A sane and fast Markdown parser with useful plugins and renderers optional = true python-versions = ">=3.8" files = [ - { file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9" }, - { file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0" }, + {file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9"}, + {file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0"}, ] [[package]] name = "mypy" -version = "1.16.0" +version = "1.16.1" description = "Optional static typing for Python" -optional = true +optional = false python-versions = ">=3.9" files = [ - { file = "mypy-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c" }, - { file = "mypy-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571" }, - { file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491" }, - { file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777" }, - { file = "mypy-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b" }, - { file = "mypy-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93" }, - { file = "mypy-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab" }, - { file = "mypy-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2" }, - { file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff" }, - { file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666" }, - { file = "mypy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c" }, - { file = "mypy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b" }, - { file = "mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13" }, - { file = "mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090" }, - { file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1" }, - { file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8" }, - { file = "mypy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730" }, - { file = "mypy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec" }, - { file = "mypy-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b" }, - { file = "mypy-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0" }, - { file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b" }, - { file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d" }, - { file = "mypy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52" }, - { file = "mypy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb" }, - { file = "mypy-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3" }, - { file = "mypy-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92" }, - { file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436" }, - { file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2" }, - { file = "mypy-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20" }, - { file = "mypy-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21" }, - { file = "mypy-1.16.0-py3-none-any.whl", hash = "sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031" }, - { file = "mypy-1.16.0.tar.gz", hash = "sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab" }, + {file = "mypy-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b4f0fed1022a63c6fec38f28b7fc77fca47fd490445c69d0a66266c59dd0b88a"}, + {file = "mypy-1.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:86042bbf9f5a05ea000d3203cf87aa9d0ccf9a01f73f71c58979eb9249f46d72"}, + {file = "mypy-1.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea7469ee5902c95542bea7ee545f7006508c65c8c54b06dc2c92676ce526f3ea"}, + {file = "mypy-1.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:352025753ef6a83cb9e7f2427319bb7875d1fdda8439d1e23de12ab164179574"}, + {file = "mypy-1.16.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ff9fa5b16e4c1364eb89a4d16bcda9987f05d39604e1e6c35378a2987c1aac2d"}, + {file = "mypy-1.16.1-cp310-cp310-win_amd64.whl", hash = "sha256:1256688e284632382f8f3b9e2123df7d279f603c561f099758e66dd6ed4e8bd6"}, + {file = "mypy-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:472e4e4c100062488ec643f6162dd0d5208e33e2f34544e1fc931372e806c0cc"}, + {file = "mypy-1.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea16e2a7d2714277e349e24d19a782a663a34ed60864006e8585db08f8ad1782"}, + {file = "mypy-1.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08e850ea22adc4d8a4014651575567b0318ede51e8e9fe7a68f25391af699507"}, + {file = "mypy-1.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22d76a63a42619bfb90122889b903519149879ddbf2ba4251834727944c8baca"}, + {file = "mypy-1.16.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c7ce0662b6b9dc8f4ed86eb7a5d505ee3298c04b40ec13b30e572c0e5ae17c4"}, + {file = "mypy-1.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:211287e98e05352a2e1d4e8759c5490925a7c784ddc84207f4714822f8cf99b6"}, + {file = "mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d"}, + {file = "mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9"}, + {file = "mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79"}, + {file = "mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15"}, + {file = "mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd"}, + {file = "mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b"}, + {file = "mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438"}, + {file = "mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536"}, + {file = "mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f"}, + {file = "mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359"}, + {file = "mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be"}, + {file = "mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee"}, + {file = "mypy-1.16.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fc688329af6a287567f45cc1cefb9db662defeb14625213a5b7da6e692e2069"}, + {file = "mypy-1.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e198ab3f55924c03ead626ff424cad1732d0d391478dfbf7bb97b34602395da"}, + {file = "mypy-1.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09aa4f91ada245f0a45dbc47e548fd94e0dd5a8433e0114917dc3b526912a30c"}, + {file = "mypy-1.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13c7cd5b1cb2909aa318a90fd1b7e31f17c50b242953e7dd58345b2a814f6383"}, + {file = "mypy-1.16.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:58e07fb958bc5d752a280da0e890c538f1515b79a65757bbdc54252ba82e0b40"}, + {file = "mypy-1.16.1-cp39-cp39-win_amd64.whl", hash = "sha256:f895078594d918f93337a505f8add9bd654d1a24962b4c6ed9390e12531eb31b"}, + {file = "mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37"}, + {file = "mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab"}, ] [package.dependencies] @@ -2738,11 +3133,11 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." -optional = true +optional = false python-versions = ">=3.8" files = [ - { file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" }, - { file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" }, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] @@ -2752,8 +3147,8 @@ description = "A client library for executing notebooks. Formerly nbconvert's Ex optional = true python-versions = ">=3.9.0" files = [ - { file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d" }, - { file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193" }, + {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, + {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, ] [package.dependencies] @@ -2774,13 +3169,13 @@ description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Ou optional = true python-versions = ">=3.8" files = [ - { file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b" }, - { file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582" }, + {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, + {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, ] [package.dependencies] beautifulsoup4 = "*" -bleach = { version = "!=5.0.0", extras = ["css"] } +bleach = {version = "!=5.0.0", extras = ["css"]} defusedxml = "*" jinja2 = ">=3.0" jupyter-core = ">=4.7" @@ -2810,8 +3205,8 @@ description = "The Jupyter Notebook format" optional = true python-versions = ">=3.8" files = [ - { file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b" }, - { file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a" }, + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, ] [package.dependencies] @@ -2831,8 +3226,44 @@ description = "Patch asyncio to allow nested event loops" optional = true python-versions = ">=3.5" files = [ - { file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c" }, - { file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe" }, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + +[[package]] +name = "nltk" +version = "3.9.1" +description = "Natural Language Toolkit" +optional = false +python-versions = ">=3.8" +files = [ + {file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"}, + {file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] @@ -2842,8 +3273,8 @@ description = "Jupyter Notebook - A web-based notebook environment for interacti optional = true python-versions = ">=3.8" files = [ - { file = "notebook-7.4.3-py3-none-any.whl", hash = "sha256:9cdeee954e04101cadb195d90e2ab62b7c9286c1d4f858bf3bb54e40df16c0c3" }, - { file = "notebook-7.4.3.tar.gz", hash = "sha256:a1567481cd3853f2610ee0ecf5dfa12bb508e878ee8f92152c134ef7f0568a76" }, + {file = "notebook-7.4.3-py3-none-any.whl", hash = "sha256:9cdeee954e04101cadb195d90e2ab62b7c9286c1d4f858bf3bb54e40df16c0c3"}, + {file = "notebook-7.4.3.tar.gz", hash = "sha256:a1567481cd3853f2610ee0ecf5dfa12bb508e878ee8f92152c134ef7f0568a76"}, ] [package.dependencies] @@ -2865,8 +3296,8 @@ description = "A shim layer for notebook traits and config" optional = true python-versions = ">=3.7" files = [ - { file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef" }, - { file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb" }, + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] [package.dependencies] @@ -2882,8 +3313,8 @@ description = "The official Python library for the openai API" optional = true python-versions = ">=3.8" files = [ - { file = "openai-1.77.0-py3-none-any.whl", hash = "sha256:07706e91eb71631234996989a8ea991d5ee56f0744ef694c961e0824d4f39218" }, - { file = "openai-1.77.0.tar.gz", hash = "sha256:897969f927f0068b8091b4b041d1f8175bcf124f7ea31bab418bf720971223bc" }, + {file = "openai-1.77.0-py3-none-any.whl", hash = "sha256:07706e91eb71631234996989a8ea991d5ee56f0744ef694c961e0824d4f39218"}, + {file = "openai-1.77.0.tar.gz", hash = "sha256:897969f927f0068b8091b4b041d1f8175bcf124f7ea31bab418bf720971223bc"}, ] [package.dependencies] @@ -2908,8 +3339,8 @@ description = "OpenTelemetry Python API" optional = false python-versions = ">=3.9" files = [ - { file = "opentelemetry_api-1.34.1-py3-none-any.whl", hash = "sha256:b7df4cb0830d5a6c29ad0c0691dbae874d8daefa934b8b1d642de48323d32a8c" }, - { file = "opentelemetry_api-1.34.1.tar.gz", hash = "sha256:64f0bd06d42824843731d05beea88d4d4b6ae59f9fe347ff7dfa2cc14233bbb3" }, + {file = "opentelemetry_api-1.34.1-py3-none-any.whl", hash = "sha256:b7df4cb0830d5a6c29ad0c0691dbae874d8daefa934b8b1d642de48323d32a8c"}, + {file = "opentelemetry_api-1.34.1.tar.gz", hash = "sha256:64f0bd06d42824843731d05beea88d4d4b6ae59f9fe347ff7dfa2cc14233bbb3"}, ] [package.dependencies] @@ -2923,8 +3354,8 @@ description = "OpenTelemetry Python Distro" optional = false python-versions = ">=3.9" files = [ - { file = "opentelemetry_distro-0.55b1-py3-none-any.whl", hash = "sha256:6b9dc9bf78b221206096f964e9cdf9bbba4d703725e1115de4b8c83cad1e45cc" }, - { file = "opentelemetry_distro-0.55b1.tar.gz", hash = "sha256:da442bf137ab48f531b87d2ec80a19eada53b54c153ad96f0689f946a8d9bcd3" }, + {file = "opentelemetry_distro-0.55b1-py3-none-any.whl", hash = "sha256:6b9dc9bf78b221206096f964e9cdf9bbba4d703725e1115de4b8c83cad1e45cc"}, + {file = "opentelemetry_distro-0.55b1.tar.gz", hash = "sha256:da442bf137ab48f531b87d2ec80a19eada53b54c153ad96f0689f946a8d9bcd3"}, ] [package.dependencies] @@ -2942,8 +3373,8 @@ description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Py optional = false python-versions = ">=3.9" files = [ - { file = "opentelemetry_instrumentation-0.55b1-py3-none-any.whl", hash = "sha256:cbb1496b42bc394e01bc63701b10e69094e8564e281de063e4328d122cc7a97e" }, - { file = "opentelemetry_instrumentation-0.55b1.tar.gz", hash = "sha256:2dc50aa207b9bfa16f70a1a0571e011e737a9917408934675b89ef4d5718c87b" }, + {file = "opentelemetry_instrumentation-0.55b1-py3-none-any.whl", hash = "sha256:cbb1496b42bc394e01bc63701b10e69094e8564e281de063e4328d122cc7a97e"}, + {file = "opentelemetry_instrumentation-0.55b1.tar.gz", hash = "sha256:2dc50aa207b9bfa16f70a1a0571e011e737a9917408934675b89ef4d5718c87b"}, ] [package.dependencies] @@ -2959,8 +3390,8 @@ description = "OpenTelemetry Python SDK" optional = false python-versions = ">=3.9" files = [ - { file = "opentelemetry_sdk-1.34.1-py3-none-any.whl", hash = "sha256:308effad4059562f1d92163c61c8141df649da24ce361827812c40abb2a1e96e" }, - { file = "opentelemetry_sdk-1.34.1.tar.gz", hash = "sha256:8091db0d763fcd6098d4781bbc80ff0971f94e260739aa6afe6fd379cdf3aa4d" }, + {file = "opentelemetry_sdk-1.34.1-py3-none-any.whl", hash = "sha256:308effad4059562f1d92163c61c8141df649da24ce361827812c40abb2a1e96e"}, + {file = "opentelemetry_sdk-1.34.1.tar.gz", hash = "sha256:8091db0d763fcd6098d4781bbc80ff0971f94e260739aa6afe6fd379cdf3aa4d"}, ] [package.dependencies] @@ -2975,8 +3406,8 @@ description = "OpenTelemetry Semantic Conventions" optional = false python-versions = ">=3.9" files = [ - { file = "opentelemetry_semantic_conventions-0.55b1-py3-none-any.whl", hash = "sha256:5da81dfdf7d52e3d37f8fe88d5e771e191de924cfff5f550ab0b8f7b2409baed" }, - { file = "opentelemetry_semantic_conventions-0.55b1.tar.gz", hash = "sha256:ef95b1f009159c28d7a7849f5cbc71c4c34c845bb514d66adfdf1b3fff3598b3" }, + {file = "opentelemetry_semantic_conventions-0.55b1-py3-none-any.whl", hash = "sha256:5da81dfdf7d52e3d37f8fe88d5e771e191de924cfff5f550ab0b8f7b2409baed"}, + {file = "opentelemetry_semantic_conventions-0.55b1.tar.gz", hash = "sha256:ef95b1f009159c28d7a7849f5cbc71c4c34c845bb514d66adfdf1b3fff3598b3"}, ] [package.dependencies] @@ -2990,8 +3421,8 @@ description = "A decorator to automatically detect mismatch when overriding a me optional = true python-versions = ">=3.6" files = [ - { file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49" }, - { file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a" }, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] @@ -3001,8 +3432,8 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - { file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" }, - { file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] @@ -3012,8 +3443,8 @@ description = "Utilities for writing pandoc filters in python" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - { file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc" }, - { file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e" }, + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, ] [[package]] @@ -3023,8 +3454,8 @@ description = "SSH2 protocol library" optional = false python-versions = ">=3.6" files = [ - { file = "paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61" }, - { file = "paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822" }, + {file = "paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61"}, + {file = "paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822"}, ] [package.dependencies] @@ -3044,8 +3475,8 @@ description = "A Python Parser" optional = true python-versions = ">=3.6" files = [ - { file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18" }, - { file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d" }, + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, ] [package.extras] @@ -3056,13 +3487,27 @@ testing = ["docopt", "pytest"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -optional = true +optional = false python-versions = ">=3.8" files = [ - { file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08" }, - { file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" }, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] +[[package]] +name = "pbr" +version = "6.1.1" +description = "Python Build Reasonableness" +optional = false +python-versions = ">=2.6" +files = [ + {file = "pbr-6.1.1-py2.py3-none-any.whl", hash = "sha256:38d4daea5d9fa63b3f626131b9d34947fd0c8be9b05a29276870580050a25a76"}, + {file = "pbr-6.1.1.tar.gz", hash = "sha256:93ea72ce6989eb2eed99d0f75721474f69ad88128afdef5ac377eb797c4bf76b"}, +] + +[package.dependencies] +setuptools = "*" + [[package]] name = "pexpect" version = "4.9.0" @@ -3070,8 +3515,8 @@ description = "Pexpect allows easy control of interactive console applications." optional = true python-versions = "*" files = [ - { file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523" }, - { file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f" }, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] @@ -3084,87 +3529,87 @@ description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.9" files = [ - { file = "pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047" }, - { file = "pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95" }, - { file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61" }, - { file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1" }, - { file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c" }, - { file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d" }, - { file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97" }, - { file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579" }, - { file = "pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d" }, - { file = "pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad" }, - { file = "pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2" }, - { file = "pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70" }, - { file = "pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf" }, - { file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7" }, - { file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8" }, - { file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600" }, - { file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788" }, - { file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e" }, - { file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e" }, - { file = "pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6" }, - { file = "pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193" }, - { file = "pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7" }, - { file = "pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f" }, - { file = "pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b" }, - { file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d" }, - { file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4" }, - { file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d" }, - { file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4" }, - { file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443" }, - { file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c" }, - { file = "pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3" }, - { file = "pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941" }, - { file = "pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb" }, - { file = "pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28" }, - { file = "pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830" }, - { file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0" }, - { file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1" }, - { file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f" }, - { file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155" }, - { file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14" }, - { file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b" }, - { file = "pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2" }, - { file = "pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691" }, - { file = "pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c" }, - { file = "pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22" }, - { file = "pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7" }, - { file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16" }, - { file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b" }, - { file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406" }, - { file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91" }, - { file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751" }, - { file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9" }, - { file = "pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd" }, - { file = "pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e" }, - { file = "pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681" }, - { file = "pillow-11.2.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:7491cf8a79b8eb867d419648fff2f83cb0b3891c8b36da92cc7f1931d46108c8" }, - { file = "pillow-11.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b02d8f9cb83c52578a0b4beadba92e37d83a4ef11570a8688bbf43f4ca50909" }, - { file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:014ca0050c85003620526b0ac1ac53f56fc93af128f7546623cc8e31875ab928" }, - { file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3692b68c87096ac6308296d96354eddd25f98740c9d2ab54e1549d6c8aea9d79" }, - { file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:f781dcb0bc9929adc77bad571b8621ecb1e4cdef86e940fe2e5b5ee24fd33b35" }, - { file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2b490402c96f907a166615e9a5afacf2519e28295f157ec3a2bb9bd57de638cb" }, - { file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd6b20b93b3ccc9c1b597999209e4bc5cf2853f9ee66e3fc9a400a78733ffc9a" }, - { file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4b835d89c08a6c2ee7781b8dd0a30209a8012b5f09c0a665b65b0eb3560b6f36" }, - { file = "pillow-11.2.1-cp39-cp39-win32.whl", hash = "sha256:b10428b3416d4f9c61f94b494681280be7686bda15898a3a9e08eb66a6d92d67" }, - { file = "pillow-11.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:6ebce70c3f486acf7591a3d73431fa504a4e18a9b97ff27f5f47b7368e4b9dd1" }, - { file = "pillow-11.2.1-cp39-cp39-win_arm64.whl", hash = "sha256:c27476257b2fdcd7872d54cfd119b3a9ce4610fb85c8e32b70b42e3680a29a1e" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193" }, - { file = "pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f" }, - { file = "pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044" }, - { file = "pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6" }, + {file = "pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047"}, + {file = "pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95"}, + {file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61"}, + {file = "pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1"}, + {file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c"}, + {file = "pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d"}, + {file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97"}, + {file = "pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579"}, + {file = "pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d"}, + {file = "pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad"}, + {file = "pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2"}, + {file = "pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70"}, + {file = "pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf"}, + {file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7"}, + {file = "pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8"}, + {file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600"}, + {file = "pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788"}, + {file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e"}, + {file = "pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e"}, + {file = "pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6"}, + {file = "pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193"}, + {file = "pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7"}, + {file = "pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f"}, + {file = "pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b"}, + {file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d"}, + {file = "pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4"}, + {file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d"}, + {file = "pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4"}, + {file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443"}, + {file = "pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c"}, + {file = "pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3"}, + {file = "pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941"}, + {file = "pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb"}, + {file = "pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28"}, + {file = "pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830"}, + {file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0"}, + {file = "pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1"}, + {file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f"}, + {file = "pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155"}, + {file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14"}, + {file = "pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b"}, + {file = "pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2"}, + {file = "pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691"}, + {file = "pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c"}, + {file = "pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22"}, + {file = "pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7"}, + {file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16"}, + {file = "pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b"}, + {file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406"}, + {file = "pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91"}, + {file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751"}, + {file = "pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9"}, + {file = "pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd"}, + {file = "pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e"}, + {file = "pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681"}, + {file = "pillow-11.2.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:7491cf8a79b8eb867d419648fff2f83cb0b3891c8b36da92cc7f1931d46108c8"}, + {file = "pillow-11.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b02d8f9cb83c52578a0b4beadba92e37d83a4ef11570a8688bbf43f4ca50909"}, + {file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:014ca0050c85003620526b0ac1ac53f56fc93af128f7546623cc8e31875ab928"}, + {file = "pillow-11.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3692b68c87096ac6308296d96354eddd25f98740c9d2ab54e1549d6c8aea9d79"}, + {file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:f781dcb0bc9929adc77bad571b8621ecb1e4cdef86e940fe2e5b5ee24fd33b35"}, + {file = "pillow-11.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2b490402c96f907a166615e9a5afacf2519e28295f157ec3a2bb9bd57de638cb"}, + {file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd6b20b93b3ccc9c1b597999209e4bc5cf2853f9ee66e3fc9a400a78733ffc9a"}, + {file = "pillow-11.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4b835d89c08a6c2ee7781b8dd0a30209a8012b5f09c0a665b65b0eb3560b6f36"}, + {file = "pillow-11.2.1-cp39-cp39-win32.whl", hash = "sha256:b10428b3416d4f9c61f94b494681280be7686bda15898a3a9e08eb66a6d92d67"}, + {file = "pillow-11.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:6ebce70c3f486acf7591a3d73431fa504a4e18a9b97ff27f5f47b7368e4b9dd1"}, + {file = "pillow-11.2.1-cp39-cp39-win_arm64.whl", hash = "sha256:c27476257b2fdcd7872d54cfd119b3a9ce4610fb85c8e32b70b42e3680a29a1e"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193"}, + {file = "pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f"}, + {file = "pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044"}, + {file = "pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6"}, ] [package.extras] @@ -3183,8 +3628,8 @@ description = "A small Python package for determining appropriate platform-speci optional = false python-versions = ">=3.9" files = [ - { file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4" }, - { file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc" }, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] @@ -3192,6 +3637,21 @@ docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-a test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] type = ["mypy (>=1.14.1)"] +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] + [[package]] name = "poetry-core" version = "2.1.3" @@ -3199,8 +3659,8 @@ description = "Poetry PEP 517 Build Backend" optional = false python-versions = "<4.0,>=3.9" files = [ - { file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771" }, - { file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4" }, + {file = "poetry_core-2.1.3-py3-none-any.whl", hash = "sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771"}, + {file = "poetry_core-2.1.3.tar.gz", hash = "sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"}, ] [[package]] @@ -3210,10 +3670,28 @@ description = "A library to manipulate gettext files (po and mo files)." optional = false python-versions = "*" files = [ - { file = "polib-1.2.0-py2.py3-none-any.whl", hash = "sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d" }, - { file = "polib-1.2.0.tar.gz", hash = "sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b" }, + {file = "polib-1.2.0-py2.py3-none-any.whl", hash = "sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d"}, + {file = "polib-1.2.0.tar.gz", hash = "sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b"}, ] +[[package]] +name = "pre-commit" +version = "4.2.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd"}, + {file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + [[package]] name = "prometheus-client" version = "0.22.1" @@ -3221,8 +3699,8 @@ description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.9" files = [ - { file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094" }, - { file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28" }, + {file = "prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094"}, + {file = "prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28"}, ] [package.extras] @@ -3235,7 +3713,7 @@ description = "Promises/A+ implementation for Python" optional = false python-versions = "*" files = [ - { file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0" }, + {file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0"}, ] [package.dependencies] @@ -3251,8 +3729,8 @@ description = "Library for building powerful interactive command lines in Python optional = false python-versions = ">=3.8" files = [ - { file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07" }, - { file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed" }, + {file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07"}, + {file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed"}, ] [package.dependencies] @@ -3260,25 +3738,32 @@ wcwidth = "*" [[package]] name = "psutil" -version = "7.0.0" -description = "Cross-platform lib for process and system monitoring in Python. NOTE: the syntax of this script MUST be kept compatible with Python 2.7." +version = "6.1.1" +description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=3.6" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - { file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25" }, - { file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34" }, - { file = "psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993" }, - { file = "psutil-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:84df4eb63e16849689f76b1ffcb36db7b8de703d1bc1fe41773db487621b6c17" }, - { file = "psutil-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1e744154a6580bc968a0195fd25e80432d3afec619daf145b9e5ba16cc1d688e" }, - { file = "psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99" }, - { file = "psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553" }, - { file = "psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456" }, + {file = "psutil-6.1.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9ccc4316f24409159897799b83004cb1e24f9819b0dcf9c0b68bdcb6cefee6a8"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ca9609c77ea3b8481ab005da74ed894035936223422dc591d6772b147421f777"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8df0178ba8a9e5bc84fed9cfa61d54601b371fbec5c8eebad27575f1e105c0d4"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1924e659d6c19c647e763e78670a05dbb7feaf44a0e9c94bf9e14dfc6ba50468"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:018aeae2af92d943fdf1da6b58665124897cfc94faa2ca92098838f83e1b1bca"}, + {file = "psutil-6.1.1-cp27-none-win32.whl", hash = "sha256:6d4281f5bbca041e2292be3380ec56a9413b790579b8e593b1784499d0005dac"}, + {file = "psutil-6.1.1-cp27-none-win_amd64.whl", hash = "sha256:c777eb75bb33c47377c9af68f30e9f11bc78e0f07fbf907be4a5d70b2fe5f030"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3"}, + {file = "psutil-6.1.1-cp36-cp36m-win32.whl", hash = "sha256:384636b1a64b47814437d1173be1427a7c83681b17a450bfc309a1953e329603"}, + {file = "psutil-6.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8be07491f6ebe1a693f17d4f11e69d0dc1811fa082736500f649f79df7735303"}, + {file = "psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53"}, + {file = "psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649"}, + {file = "psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5"}, ] [package.extras] -dev = ["abi3audit", "black (==24.10.0)", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] @@ -3288,15 +3773,15 @@ description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false python-versions = ">=3.8" files = [ - { file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716" }, - { file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a" }, - { file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2" }, - { file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4" }, - { file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067" }, - { file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e" }, - { file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b" }, - { file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442" }, - { file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11" }, + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, ] [[package]] @@ -3306,8 +3791,8 @@ description = "Run a subprocess in a pseudo terminal" optional = true python-versions = "*" files = [ - { file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35" }, - { file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" }, + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] [[package]] @@ -3317,13 +3802,24 @@ description = "Safely evaluate AST nodes without side effects" optional = true python-versions = "*" files = [ - { file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0" }, - { file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42" }, + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, ] [package.extras] tests = ["pytest"] +[[package]] +name = "pycodestyle" +version = "2.13.0" +description = "Python style guide checker" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9"}, + {file = "pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae"}, +] + [[package]] name = "pycparser" version = "2.22" @@ -3331,26 +3827,25 @@ description = "C parser in Python" optional = false python-versions = ">=3.8" files = [ - { file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" }, - { file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6" }, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" -version = "2.11.7" +version = "2.9.2" description = "Data validation using Python type hints" -optional = true -python-versions = ">=3.9" +optional = false +python-versions = ">=3.8" files = [ - { file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" }, - { file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.2" -typing-extensions = ">=4.12.2" -typing-inspection = ">=0.4.0" +pydantic-core = "2.23.4" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} [package.extras] email = ["email-validator (>=2.0.0)"] @@ -3358,124 +3853,125 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" -optional = true -python-versions = ">=3.9" +optional = false +python-versions = ">=3.8" files = [ - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8" }, - { file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2" }, - { file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a" }, - { file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22" }, - { file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7" }, - { file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef" }, - { file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30" }, - { file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab" }, - { file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" }, - { file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" }, - { file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" }, - { file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" }, - { file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" }, - { file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" }, - { file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" }, - { file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" }, - { file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d" }, - { file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3" }, - { file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9" }, - { file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c" }, - { file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb" }, - { file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039" }, - { file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27" }, - { file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +[[package]] +name = "pyflakes" +version = "3.3.2" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a"}, + {file = "pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b"}, +] + [[package]] name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." -optional = true +optional = false python-versions = ">=3.8" files = [ - { file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c" }, - { file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f" }, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -3488,7 +3984,7 @@ description = "Python interface to Graphviz" optional = true python-versions = ">=3.10" files = [ - { file = "pygraphviz-1.14.tar.gz", hash = "sha256:c10df02377f4e39b00ae17c862f4ee7e5767317f1c6b2dfd04cea6acc7fc2bea" }, + {file = "pygraphviz-1.14.tar.gz", hash = "sha256:c10df02377f4e39b00ae17c862f4ee7e5767317f1c6b2dfd04cea6acc7fc2bea"}, ] [[package]] @@ -3498,8 +3994,8 @@ description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.8" files = [ - { file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850" }, - { file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c" }, + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, ] [package.extras] @@ -3515,8 +4011,8 @@ description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - { file = "pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f" }, - { file = "pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7" }, + {file = "pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f"}, + {file = "pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7"}, ] [package.dependencies] @@ -3533,16 +4029,16 @@ description = "Python binding to the Networking and Cryptography (NaCl) library" optional = false python-versions = ">=3.6" files = [ - { file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1" }, - { file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92" }, - { file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394" }, - { file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d" }, - { file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858" }, - { file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b" }, - { file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff" }, - { file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543" }, - { file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93" }, - { file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba" }, + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, ] [package.dependencies] @@ -3552,6 +4048,45 @@ cffi = ">=1.4.1" docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] +[[package]] +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-django" +version = "4.11.1" +description = "A Django plugin for pytest." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_django-4.11.1-py3-none-any.whl", hash = "sha256:1b63773f648aa3d8541000c26929c1ea63934be1cfa674c76436966d73fe6a10"}, + {file = "pytest_django-4.11.1.tar.gz", hash = "sha256:a949141a1ee103cb0e7a20f1451d355f83f5e4a5d07bdd4dcfdd1fd0ff227991"}, +] + +[package.dependencies] +pytest = ">=7.0.0" + +[package.extras] +docs = ["sphinx", "sphinx_rtd_theme"] +testing = ["Django", "django-configurations (>=2.0)"] + [[package]] name = "python-crontab" version = "3.2.0" @@ -3559,8 +4094,8 @@ description = "Python Crontab API" optional = true python-versions = "*" files = [ - { file = "python_crontab-3.2.0-py3-none-any.whl", hash = "sha256:82cb9b6a312d41ff66fd3caf3eed7115c28c195bfb50711bc2b4b9592feb9fe5" }, - { file = "python_crontab-3.2.0.tar.gz", hash = "sha256:40067d1dd39ade3460b2ad8557c7651514cd3851deffff61c5c60e1227c5c36b" }, + {file = "python_crontab-3.2.0-py3-none-any.whl", hash = "sha256:82cb9b6a312d41ff66fd3caf3eed7115c28c195bfb50711bc2b4b9592feb9fe5"}, + {file = "python_crontab-3.2.0.tar.gz", hash = "sha256:40067d1dd39ade3460b2ad8557c7651514cd3851deffff61c5c60e1227c5c36b"}, ] [package.dependencies] @@ -3577,8 +4112,8 @@ description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - { file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3" }, - { file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" }, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -3591,8 +4126,8 @@ description = "JSON Log Formatter for the Python Logging Package" optional = true python-versions = ">=3.8" files = [ - { file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7" }, - { file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84" }, + {file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7"}, + {file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84"}, ] [package.extras] @@ -3605,8 +4140,8 @@ description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - { file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" }, - { file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }, + {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, + {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, ] [[package]] @@ -3616,22 +4151,22 @@ description = "Python for Window Extensions" optional = true python-versions = "*" files = [ - { file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1" }, - { file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d" }, - { file = "pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213" }, - { file = "pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd" }, - { file = "pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c" }, - { file = "pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582" }, - { file = "pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d" }, - { file = "pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060" }, - { file = "pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966" }, - { file = "pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab" }, - { file = "pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e" }, - { file = "pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33" }, - { file = "pywin32-310-cp38-cp38-win32.whl", hash = "sha256:0867beb8addefa2e3979d4084352e4ac6e991ca45373390775f7084cc0209b9c" }, - { file = "pywin32-310-cp38-cp38-win_amd64.whl", hash = "sha256:30f0a9b3138fb5e07eb4973b7077e1883f558e40c578c6925acc7a94c34eaa36" }, - { file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a" }, - { file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475" }, + {file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1"}, + {file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d"}, + {file = "pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213"}, + {file = "pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd"}, + {file = "pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c"}, + {file = "pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582"}, + {file = "pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d"}, + {file = "pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060"}, + {file = "pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966"}, + {file = "pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab"}, + {file = "pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e"}, + {file = "pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33"}, + {file = "pywin32-310-cp38-cp38-win32.whl", hash = "sha256:0867beb8addefa2e3979d4084352e4ac6e991ca45373390775f7084cc0209b9c"}, + {file = "pywin32-310-cp38-cp38-win_amd64.whl", hash = "sha256:30f0a9b3138fb5e07eb4973b7077e1883f558e40c578c6925acc7a94c34eaa36"}, + {file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a"}, + {file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475"}, ] [[package]] @@ -3641,13 +4176,13 @@ description = "Pseudo terminal support for Windows from Python." optional = true python-versions = ">=3.9" files = [ - { file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e" }, - { file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca" }, - { file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc" }, - { file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408" }, - { file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901" }, - { file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117" }, - { file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2" }, + {file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e"}, + {file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca"}, + {file = "pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc"}, + {file = "pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408"}, + {file = "pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901"}, + {file = "pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117"}, + {file = "pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2"}, ] [[package]] @@ -3657,59 +4192,59 @@ description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" files = [ - { file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086" }, - { file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf" }, - { file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237" }, - { file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b" }, - { file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed" }, - { file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180" }, - { file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68" }, - { file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99" }, - { file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e" }, - { file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774" }, - { file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee" }, - { file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c" }, - { file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317" }, - { file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85" }, - { file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4" }, - { file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e" }, - { file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5" }, - { file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44" }, - { file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab" }, - { file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725" }, - { file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5" }, - { file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425" }, - { file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476" }, - { file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48" }, - { file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b" }, - { file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4" }, - { file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8" }, - { file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba" }, - { file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1" }, - { file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133" }, - { file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484" }, - { file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5" }, - { file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc" }, - { file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652" }, - { file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183" }, - { file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563" }, - { file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a" }, - { file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5" }, - { file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d" }, - { file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083" }, - { file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706" }, - { file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a" }, - { file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff" }, - { file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d" }, - { file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f" }, - { file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290" }, - { file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12" }, - { file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19" }, - { file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e" }, - { file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725" }, - { file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631" }, - { file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8" }, - { file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e" }, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -3719,89 +4254,89 @@ description = "Python bindings for 0MQ" optional = true python-versions = ">=3.8" files = [ - { file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246" }, - { file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28" }, - { file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413" }, - { file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c" }, - { file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198" }, - { file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa" }, - { file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667" }, - { file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e" }, - { file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed" }, - { file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38" }, - { file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152" }, - { file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d" }, - { file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be" }, - { file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371" }, - { file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e" }, - { file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a" }, - { file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44" }, - { file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad" }, - { file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f" }, - { file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597" }, - { file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c" }, - { file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0" }, - { file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8" }, - { file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4" }, - { file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861" }, - { file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045" }, - { file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740" }, - { file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3" }, - { file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551" }, - { file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e" }, - { file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e" }, - { file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a" }, - { file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9" }, - { file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf" }, + {file = "pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a"}, + {file = "pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4"}, + {file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246"}, + {file = "pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb"}, + {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d"}, + {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28"}, + {file = "pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413"}, + {file = "pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b"}, + {file = "pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c"}, + {file = "pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198"}, + {file = "pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564"}, + {file = "pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251"}, + {file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa"}, + {file = "pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f"}, + {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495"}, + {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667"}, + {file = "pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e"}, + {file = "pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff"}, + {file = "pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed"}, + {file = "pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38"}, + {file = "pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52"}, + {file = "pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3"}, + {file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152"}, + {file = "pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22"}, + {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371"}, + {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d"}, + {file = "pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be"}, + {file = "pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4"}, + {file = "pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371"}, + {file = "pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e"}, + {file = "pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688"}, + {file = "pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38"}, + {file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a"}, + {file = "pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9"}, + {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d"}, + {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44"}, + {file = "pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef"}, + {file = "pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad"}, + {file = "pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f"}, + {file = "pyzmq-27.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:f4162dbbd9c5c84fb930a36f290b08c93e35fce020d768a16fc8891a2f72bab8"}, + {file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4e7d0a8d460fba526cc047333bdcbf172a159b8bd6be8c3eb63a416ff9ba1477"}, + {file = "pyzmq-27.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29f44e3c26b9783816ba9ce274110435d8f5b19bbd82f7a6c7612bb1452a3597"}, + {file = "pyzmq-27.0.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e435540fa1da54667f0026cf1e8407fe6d8a11f1010b7f06b0b17214ebfcf5e"}, + {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:51f5726de3532b8222e569990c8aa34664faa97038304644679a51d906e60c6e"}, + {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:42c7555123679637c99205b1aa9e8f7d90fe29d4c243c719e347d4852545216c"}, + {file = "pyzmq-27.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a979b7cf9e33d86c4949df527a3018767e5f53bc3b02adf14d4d8db1db63ccc0"}, + {file = "pyzmq-27.0.0-cp38-cp38-win32.whl", hash = "sha256:26b72c5ae20bf59061c3570db835edb81d1e0706ff141747055591c4b41193f8"}, + {file = "pyzmq-27.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:55a0155b148fe0428285a30922f7213539aa84329a5ad828bca4bbbc665c70a4"}, + {file = "pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617"}, + {file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed"}, + {file = "pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861"}, + {file = "pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0"}, + {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b"}, + {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045"}, + {file = "pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740"}, + {file = "pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3"}, + {file = "pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3"}, + {file = "pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba"}, + {file = "pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745"}, + {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab"}, + {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb"}, + {file = "pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551"}, + {file = "pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0"}, + {file = "pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae"}, + {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7"}, + {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174"}, + {file = "pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e"}, + {file = "pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46"}, + {file = "pyzmq-27.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8c86ea8fe85e2eb0ffa00b53192c401477d5252f6dd1db2e2ed21c1c30d17e5e"}, + {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:c45fee3968834cd291a13da5fac128b696c9592a9493a0f7ce0b47fa03cc574d"}, + {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cae73bb6898c4e045fbed5024cb587e4110fddb66f6163bcab5f81f9d4b9c496"}, + {file = "pyzmq-27.0.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:26d542258c7a1f35a9cff3d887687d3235006134b0ac1c62a6fe1ad3ac10440e"}, + {file = "pyzmq-27.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:04cd50ef3b28e35ced65740fb9956a5b3f77a6ff32fcd887e3210433f437dd0f"}, + {file = "pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3"}, + {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f"}, + {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0"}, + {file = "pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a"}, + {file = "pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9"}, + {file = "pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf"}, ] [package.dependencies] -cffi = { version = "*", markers = "implementation_name == \"pypy\"" } +cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "redis" @@ -3810,8 +4345,8 @@ description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.8" files = [ - { file = "redis-6.0.0-py3-none-any.whl", hash = "sha256:a2e040aee2cdd947be1fa3a32e35a956cd839cc4c1dbbe4b2cdee5b9623fd27c" }, - { file = "redis-6.0.0.tar.gz", hash = "sha256:5446780d2425b787ed89c91ddbfa1be6d32370a636c8fdb687f11b1c26c1fa88" }, + {file = "redis-6.0.0-py3-none-any.whl", hash = "sha256:a2e040aee2cdd947be1fa3a32e35a956cd839cc4c1dbbe4b2cdee5b9623fd27c"}, + {file = "redis-6.0.0.tar.gz", hash = "sha256:5446780d2425b787ed89c91ddbfa1be6d32370a636c8fdb687f11b1c26c1fa88"}, ] [package.extras] @@ -3826,14 +4361,117 @@ description = "JSON Referencing + Python" optional = false python-versions = ">=3.9" files = [ - { file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" }, - { file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa" }, + {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, + {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" -typing-extensions = { version = ">=4.4.0", markers = "python_version < \"3.13\"" } +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] [[package]] name = "requests" @@ -3842,8 +4480,8 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - { file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" }, - { file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760" }, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -3863,8 +4501,8 @@ description = "File transport adapter for Requests" optional = false python-versions = "*" files = [ - { file = "requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c" }, - { file = "requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658" }, + {file = "requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c"}, + {file = "requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658"}, ] [package.dependencies] @@ -3877,8 +4515,8 @@ description = "A utility belt for advanced users of python-requests" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - { file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6" }, - { file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06" }, + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, ] [package.dependencies] @@ -3891,8 +4529,8 @@ description = "A pure python RFC3339 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - { file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa" }, - { file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b" }, + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, ] [package.dependencies] @@ -3905,10 +4543,28 @@ description = "Pure python rfc3986 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - { file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9" }, - { file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055" }, + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, ] +[[package]] +name = "rich" +version = "14.0.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"}, + {file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + [[package]] name = "rpds-py" version = "0.25.1" @@ -3916,123 +4572,196 @@ description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" files = [ - { file = "rpds_py-0.25.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f4ad628b5174d5315761b67f212774a32f5bad5e61396d38108bd801c0a8f5d9" }, - { file = "rpds_py-0.25.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c742af695f7525e559c16f1562cf2323db0e3f0fbdcabdf6865b095256b2d40" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:605ffe7769e24b1800b4d024d24034405d9404f0bc2f55b6db3362cd34145a6f" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc6f3ddef93243538be76f8e47045b4aad7a66a212cd3a0f23e34469473d36b" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f70316f760174ca04492b5ab01be631a8ae30cadab1d1081035136ba12738cfa" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1dafef8df605fdb46edcc0bf1573dea0d6d7b01ba87f85cd04dc855b2b4479e" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0701942049095741a8aeb298a31b203e735d1c61f4423511d2b1a41dcd8a16da" }, - { file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e87798852ae0b37c88babb7f7bbbb3e3fecc562a1c340195b44c7e24d403e380" }, - { file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3bcce0edc1488906c2d4c75c94c70a0417e83920dd4c88fec1078c94843a6ce9" }, - { file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e2f6a2347d3440ae789505693a02836383426249d5293541cd712e07e7aecf54" }, - { file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4fd52d3455a0aa997734f3835cbc4c9f32571345143960e7d7ebfe7b5fbfa3b2" }, - { file = "rpds_py-0.25.1-cp310-cp310-win32.whl", hash = "sha256:3f0b1798cae2bbbc9b9db44ee068c556d4737911ad53a4e5093d09d04b3bbc24" }, - { file = "rpds_py-0.25.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ebd879ab996537fc510a2be58c59915b5dd63bccb06d1ef514fee787e05984a" }, - { file = "rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d" }, - { file = "rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd" }, - { file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65" }, - { file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f" }, - { file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d" }, - { file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042" }, - { file = "rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc" }, - { file = "rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4" }, - { file = "rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4" }, - { file = "rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c" }, - { file = "rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea" }, - { file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65" }, - { file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c" }, - { file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd" }, - { file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb" }, - { file = "rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe" }, - { file = "rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192" }, - { file = "rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728" }, - { file = "rpds_py-0.25.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:659d87430a8c8c704d52d094f5ba6fa72ef13b4d385b7e542a08fc240cb4a559" }, - { file = "rpds_py-0.25.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68f6f060f0bbdfb0245267da014d3a6da9be127fe3e8cc4a68c6f833f8a23bb1" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:083a9513a33e0b92cf6e7a6366036c6bb43ea595332c1ab5c8ae329e4bcc0a9c" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:816568614ecb22b18a010c7a12559c19f6fe993526af88e95a76d5a60b8b75fb" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c6564c0947a7f52e4792983f8e6cf9bac140438ebf81f527a21d944f2fd0a40" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c4a128527fe415d73cf1f70a9a688d06130d5810be69f3b553bf7b45e8acf79" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e1d7a4978ed554f095430b89ecc23f42014a50ac385eb0c4d163ce213c325" }, - { file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74ec9bc0e2feb81d3f16946b005748119c0f52a153f6db6a29e8cd68636f295" }, - { file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3af5b4cc10fa41e5bc64e5c198a1b2d2864337f8fcbb9a67e747e34002ce812b" }, - { file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:79dc317a5f1c51fd9c6a0c4f48209c6b8526d0524a6904fc1076476e79b00f98" }, - { file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1521031351865e0181bc585147624d66b3b00a84109b57fcb7a779c3ec3772cd" }, - { file = "rpds_py-0.25.1-cp313-cp313-win32.whl", hash = "sha256:5d473be2b13600b93a5675d78f59e63b51b1ba2d0476893415dfbb5477e65b31" }, - { file = "rpds_py-0.25.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7b74e92a3b212390bdce1d93da9f6488c3878c1d434c5e751cbc202c5e09500" }, - { file = "rpds_py-0.25.1-cp313-cp313-win_arm64.whl", hash = "sha256:dd326a81afe332ede08eb39ab75b301d5676802cdffd3a8f287a5f0b694dc3f5" }, - { file = "rpds_py-0.25.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:a58d1ed49a94d4183483a3ce0af22f20318d4a1434acee255d683ad90bf78129" }, - { file = "rpds_py-0.25.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f251bf23deb8332823aef1da169d5d89fa84c89f67bdfb566c49dea1fccfd50d" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dbd586bfa270c1103ece2109314dd423df1fa3d9719928b5d09e4840cec0d72" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d273f136e912aa101a9274c3145dcbddbe4bac560e77e6d5b3c9f6e0ed06d34" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:666fa7b1bd0a3810a7f18f6d3a25ccd8866291fbbc3c9b912b917a6715874bb9" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:921954d7fbf3fccc7de8f717799304b14b6d9a45bbeec5a8d7408ccbf531faf5" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3d86373ff19ca0441ebeb696ef64cb58b8b5cbacffcda5a0ec2f3911732a194" }, - { file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c8980cde3bb8575e7c956a530f2c217c1d6aac453474bf3ea0f9c89868b531b6" }, - { file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8eb8c84ecea987a2523e057c0d950bcb3f789696c0499290b8d7b3107a719d78" }, - { file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:e43a005671a9ed5a650f3bc39e4dbccd6d4326b24fb5ea8be5f3a43a6f576c72" }, - { file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:58f77c60956501a4a627749a6dcb78dac522f249dd96b5c9f1c6af29bfacfb66" }, - { file = "rpds_py-0.25.1-cp313-cp313t-win32.whl", hash = "sha256:2cb9e5b5e26fc02c8a4345048cd9998c2aca7c2712bd1b36da0c72ee969a3523" }, - { file = "rpds_py-0.25.1-cp313-cp313t-win_amd64.whl", hash = "sha256:401ca1c4a20cc0510d3435d89c069fe0a9ae2ee6495135ac46bdd49ec0495763" }, - { file = "rpds_py-0.25.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ce4c8e485a3c59593f1a6f683cf0ea5ab1c1dc94d11eea5619e4fb5228b40fbd" }, - { file = "rpds_py-0.25.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d8222acdb51a22929c3b2ddb236b69c59c72af4019d2cba961e2f9add9b6e634" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4593c4eae9b27d22df41cde518b4b9e4464d139e4322e2127daa9b5b981b76be" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd035756830c712b64725a76327ce80e82ed12ebab361d3a1cdc0f51ea21acb0" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:114a07e85f32b125404f28f2ed0ba431685151c037a26032b213c882f26eb908" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dec21e02e6cc932538b5203d3a8bd6aa1480c98c4914cb88eea064ecdbc6396a" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09eab132f41bf792c7a0ea1578e55df3f3e7f61888e340779b06050a9a3f16e9" }, - { file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c98f126c4fc697b84c423e387337d5b07e4a61e9feac494362a59fd7a2d9ed80" }, - { file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0e6a327af8ebf6baba1c10fadd04964c1965d375d318f4435d5f3f9651550f4a" }, - { file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bc120d1132cff853ff617754196d0ac0ae63befe7c8498bd67731ba368abe451" }, - { file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:140f61d9bed7839446bdd44852e30195c8e520f81329b4201ceead4d64eb3a9f" }, - { file = "rpds_py-0.25.1-cp39-cp39-win32.whl", hash = "sha256:9c006f3aadeda131b438c3092124bd196b66312f0caa5823ef09585a669cf449" }, - { file = "rpds_py-0.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:a61d0b2c7c9a0ae45732a77844917b427ff16ad5464b4d4f5e4adb955f582890" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b24bf3cd93d5b6ecfbedec73b15f143596c88ee249fa98cefa9a9dc9d92c6f28" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0eb90e94f43e5085623932b68840b6f379f26db7b5c2e6bcef3179bd83c9330f" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d50e4864498a9ab639d6d8854b25e80642bd362ff104312d9770b05d66e5fb13" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c9409b47ba0650544b0bb3c188243b83654dfe55dcc173a86832314e1a6a35d" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:796ad874c89127c91970652a4ee8b00d56368b7e00d3477f4415fe78164c8000" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85608eb70a659bf4c1142b2781083d4b7c0c4e2c90eff11856a9754e965b2540" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4feb9211d15d9160bc85fa72fed46432cdc143eb9cf6d5ca377335a921ac37b" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccfa689b9246c48947d31dd9d8b16d89a0ecc8e0e26ea5253068efb6c542b76e" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3c5b317ecbd8226887994852e85de562f7177add602514d4ac40f87de3ae45a8" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:454601988aab2c6e8fd49e7634c65476b2b919647626208e376afcd22019eeb8" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1c0c434a53714358532d13539272db75a5ed9df75a4a090a753ac7173ec14e11" }, - { file = "rpds_py-0.25.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f73ce1512e04fbe2bc97836e89830d6b4314c171587a99688082d090f934d20a" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf" }, - { file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:50f2c501a89c9a5f4e454b126193c5495b9fb441a75b298c60591d8a2eb92e1b" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d779b325cc8238227c47fbc53964c8cc9a941d5dbae87aa007a1f08f2f77b23" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:036ded36bedb727beeabc16dc1dad7cb154b3fa444e936a03b67a86dc6a5066e" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:245550f5a1ac98504147cba96ffec8fabc22b610742e9150138e5d60774686d7" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff7c23ba0a88cb7b104281a99476cccadf29de2a0ef5ce864959a52675b1ca83" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e37caa8cdb3b7cf24786451a0bdb853f6347b8b92005eeb64225ae1db54d1c2b" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2f48ab00181600ee266a095fe815134eb456163f7d6699f525dee471f312cf" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e5fc7484fa7dce57e25063b0ec9638ff02a908304f861d81ea49273e43838c1" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d3c10228d6cf6fe2b63d2e7985e94f6916fa46940df46b70449e9ff9297bd3d1" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:5d9e40f32745db28c1ef7aad23f6fc458dc1e29945bd6781060f0d15628b8ddf" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:35a8d1a24b5936b35c5003313bc177403d8bdef0f8b24f28b1c4a255f94ea992" }, - { file = "rpds_py-0.25.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6099263f526efff9cf3883dfef505518730f7a7a93049b1d90d42e50a22b4793" }, - { file = "rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3" }, + {file = "rpds_py-0.25.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f4ad628b5174d5315761b67f212774a32f5bad5e61396d38108bd801c0a8f5d9"}, + {file = "rpds_py-0.25.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c742af695f7525e559c16f1562cf2323db0e3f0fbdcabdf6865b095256b2d40"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:605ffe7769e24b1800b4d024d24034405d9404f0bc2f55b6db3362cd34145a6f"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ccc6f3ddef93243538be76f8e47045b4aad7a66a212cd3a0f23e34469473d36b"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f70316f760174ca04492b5ab01be631a8ae30cadab1d1081035136ba12738cfa"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1dafef8df605fdb46edcc0bf1573dea0d6d7b01ba87f85cd04dc855b2b4479e"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0701942049095741a8aeb298a31b203e735d1c61f4423511d2b1a41dcd8a16da"}, + {file = "rpds_py-0.25.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e87798852ae0b37c88babb7f7bbbb3e3fecc562a1c340195b44c7e24d403e380"}, + {file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3bcce0edc1488906c2d4c75c94c70a0417e83920dd4c88fec1078c94843a6ce9"}, + {file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e2f6a2347d3440ae789505693a02836383426249d5293541cd712e07e7aecf54"}, + {file = "rpds_py-0.25.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4fd52d3455a0aa997734f3835cbc4c9f32571345143960e7d7ebfe7b5fbfa3b2"}, + {file = "rpds_py-0.25.1-cp310-cp310-win32.whl", hash = "sha256:3f0b1798cae2bbbc9b9db44ee068c556d4737911ad53a4e5093d09d04b3bbc24"}, + {file = "rpds_py-0.25.1-cp310-cp310-win_amd64.whl", hash = "sha256:3ebd879ab996537fc510a2be58c59915b5dd63bccb06d1ef514fee787e05984a"}, + {file = "rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d"}, + {file = "rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd"}, + {file = "rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65"}, + {file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f"}, + {file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d"}, + {file = "rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042"}, + {file = "rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc"}, + {file = "rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4"}, + {file = "rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4"}, + {file = "rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c"}, + {file = "rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea"}, + {file = "rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65"}, + {file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c"}, + {file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd"}, + {file = "rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb"}, + {file = "rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe"}, + {file = "rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192"}, + {file = "rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728"}, + {file = "rpds_py-0.25.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:659d87430a8c8c704d52d094f5ba6fa72ef13b4d385b7e542a08fc240cb4a559"}, + {file = "rpds_py-0.25.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68f6f060f0bbdfb0245267da014d3a6da9be127fe3e8cc4a68c6f833f8a23bb1"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:083a9513a33e0b92cf6e7a6366036c6bb43ea595332c1ab5c8ae329e4bcc0a9c"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:816568614ecb22b18a010c7a12559c19f6fe993526af88e95a76d5a60b8b75fb"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c6564c0947a7f52e4792983f8e6cf9bac140438ebf81f527a21d944f2fd0a40"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c4a128527fe415d73cf1f70a9a688d06130d5810be69f3b553bf7b45e8acf79"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e1d7a4978ed554f095430b89ecc23f42014a50ac385eb0c4d163ce213c325"}, + {file = "rpds_py-0.25.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74ec9bc0e2feb81d3f16946b005748119c0f52a153f6db6a29e8cd68636f295"}, + {file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3af5b4cc10fa41e5bc64e5c198a1b2d2864337f8fcbb9a67e747e34002ce812b"}, + {file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:79dc317a5f1c51fd9c6a0c4f48209c6b8526d0524a6904fc1076476e79b00f98"}, + {file = "rpds_py-0.25.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1521031351865e0181bc585147624d66b3b00a84109b57fcb7a779c3ec3772cd"}, + {file = "rpds_py-0.25.1-cp313-cp313-win32.whl", hash = "sha256:5d473be2b13600b93a5675d78f59e63b51b1ba2d0476893415dfbb5477e65b31"}, + {file = "rpds_py-0.25.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7b74e92a3b212390bdce1d93da9f6488c3878c1d434c5e751cbc202c5e09500"}, + {file = "rpds_py-0.25.1-cp313-cp313-win_arm64.whl", hash = "sha256:dd326a81afe332ede08eb39ab75b301d5676802cdffd3a8f287a5f0b694dc3f5"}, + {file = "rpds_py-0.25.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:a58d1ed49a94d4183483a3ce0af22f20318d4a1434acee255d683ad90bf78129"}, + {file = "rpds_py-0.25.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f251bf23deb8332823aef1da169d5d89fa84c89f67bdfb566c49dea1fccfd50d"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dbd586bfa270c1103ece2109314dd423df1fa3d9719928b5d09e4840cec0d72"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6d273f136e912aa101a9274c3145dcbddbe4bac560e77e6d5b3c9f6e0ed06d34"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:666fa7b1bd0a3810a7f18f6d3a25ccd8866291fbbc3c9b912b917a6715874bb9"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:921954d7fbf3fccc7de8f717799304b14b6d9a45bbeec5a8d7408ccbf531faf5"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3d86373ff19ca0441ebeb696ef64cb58b8b5cbacffcda5a0ec2f3911732a194"}, + {file = "rpds_py-0.25.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c8980cde3bb8575e7c956a530f2c217c1d6aac453474bf3ea0f9c89868b531b6"}, + {file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8eb8c84ecea987a2523e057c0d950bcb3f789696c0499290b8d7b3107a719d78"}, + {file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:e43a005671a9ed5a650f3bc39e4dbccd6d4326b24fb5ea8be5f3a43a6f576c72"}, + {file = "rpds_py-0.25.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:58f77c60956501a4a627749a6dcb78dac522f249dd96b5c9f1c6af29bfacfb66"}, + {file = "rpds_py-0.25.1-cp313-cp313t-win32.whl", hash = "sha256:2cb9e5b5e26fc02c8a4345048cd9998c2aca7c2712bd1b36da0c72ee969a3523"}, + {file = "rpds_py-0.25.1-cp313-cp313t-win_amd64.whl", hash = "sha256:401ca1c4a20cc0510d3435d89c069fe0a9ae2ee6495135ac46bdd49ec0495763"}, + {file = "rpds_py-0.25.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ce4c8e485a3c59593f1a6f683cf0ea5ab1c1dc94d11eea5619e4fb5228b40fbd"}, + {file = "rpds_py-0.25.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d8222acdb51a22929c3b2ddb236b69c59c72af4019d2cba961e2f9add9b6e634"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4593c4eae9b27d22df41cde518b4b9e4464d139e4322e2127daa9b5b981b76be"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd035756830c712b64725a76327ce80e82ed12ebab361d3a1cdc0f51ea21acb0"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:114a07e85f32b125404f28f2ed0ba431685151c037a26032b213c882f26eb908"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dec21e02e6cc932538b5203d3a8bd6aa1480c98c4914cb88eea064ecdbc6396a"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09eab132f41bf792c7a0ea1578e55df3f3e7f61888e340779b06050a9a3f16e9"}, + {file = "rpds_py-0.25.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c98f126c4fc697b84c423e387337d5b07e4a61e9feac494362a59fd7a2d9ed80"}, + {file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0e6a327af8ebf6baba1c10fadd04964c1965d375d318f4435d5f3f9651550f4a"}, + {file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bc120d1132cff853ff617754196d0ac0ae63befe7c8498bd67731ba368abe451"}, + {file = "rpds_py-0.25.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:140f61d9bed7839446bdd44852e30195c8e520f81329b4201ceead4d64eb3a9f"}, + {file = "rpds_py-0.25.1-cp39-cp39-win32.whl", hash = "sha256:9c006f3aadeda131b438c3092124bd196b66312f0caa5823ef09585a669cf449"}, + {file = "rpds_py-0.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:a61d0b2c7c9a0ae45732a77844917b427ff16ad5464b4d4f5e4adb955f582890"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b24bf3cd93d5b6ecfbedec73b15f143596c88ee249fa98cefa9a9dc9d92c6f28"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0eb90e94f43e5085623932b68840b6f379f26db7b5c2e6bcef3179bd83c9330f"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d50e4864498a9ab639d6d8854b25e80642bd362ff104312d9770b05d66e5fb13"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c9409b47ba0650544b0bb3c188243b83654dfe55dcc173a86832314e1a6a35d"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:796ad874c89127c91970652a4ee8b00d56368b7e00d3477f4415fe78164c8000"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85608eb70a659bf4c1142b2781083d4b7c0c4e2c90eff11856a9754e965b2540"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4feb9211d15d9160bc85fa72fed46432cdc143eb9cf6d5ca377335a921ac37b"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccfa689b9246c48947d31dd9d8b16d89a0ecc8e0e26ea5253068efb6c542b76e"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3c5b317ecbd8226887994852e85de562f7177add602514d4ac40f87de3ae45a8"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:454601988aab2c6e8fd49e7634c65476b2b919647626208e376afcd22019eeb8"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1c0c434a53714358532d13539272db75a5ed9df75a4a090a753ac7173ec14e11"}, + {file = "rpds_py-0.25.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f73ce1512e04fbe2bc97836e89830d6b4314c171587a99688082d090f934d20a"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf"}, + {file = "rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:50f2c501a89c9a5f4e454b126193c5495b9fb441a75b298c60591d8a2eb92e1b"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7d779b325cc8238227c47fbc53964c8cc9a941d5dbae87aa007a1f08f2f77b23"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:036ded36bedb727beeabc16dc1dad7cb154b3fa444e936a03b67a86dc6a5066e"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:245550f5a1ac98504147cba96ffec8fabc22b610742e9150138e5d60774686d7"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff7c23ba0a88cb7b104281a99476cccadf29de2a0ef5ce864959a52675b1ca83"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e37caa8cdb3b7cf24786451a0bdb853f6347b8b92005eeb64225ae1db54d1c2b"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2f48ab00181600ee266a095fe815134eb456163f7d6699f525dee471f312cf"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e5fc7484fa7dce57e25063b0ec9638ff02a908304f861d81ea49273e43838c1"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d3c10228d6cf6fe2b63d2e7985e94f6916fa46940df46b70449e9ff9297bd3d1"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:5d9e40f32745db28c1ef7aad23f6fc458dc1e29945bd6781060f0d15628b8ddf"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:35a8d1a24b5936b35c5003313bc177403d8bdef0f8b24f28b1c4a255f94ea992"}, + {file = "rpds_py-0.25.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6099263f526efff9cf3883dfef505518730f7a7a93049b1d90d42e50a22b4793"}, + {file = "rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3"}, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.14" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2"}, + {file = "ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""} + +[package.extras] +docs = ["mercurial (>5.7)", "ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +optional = false +python-versions = ">=3.9" +files = [ + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"}, + {file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"}, ] [[package]] @@ -4042,26 +4771,81 @@ description = "An extremely fast Python linter and code formatter, written in Ru optional = false python-versions = ">=3.7" files = [ - { file = "ruff-0.11.8-py3-none-linux_armv6l.whl", hash = "sha256:896a37516c594805e34020c4a7546c8f8a234b679a7716a3f08197f38913e1a3" }, - { file = "ruff-0.11.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab86d22d3d721a40dd3ecbb5e86ab03b2e053bc93c700dc68d1c3346b36ce835" }, - { file = "ruff-0.11.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:258f3585057508d317610e8a412788cf726efeefa2fec4dba4001d9e6f90d46c" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727d01702f7c30baed3fc3a34901a640001a2828c793525043c29f7614994a8c" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dca977cc4fc8f66e89900fa415ffe4dbc2e969da9d7a54bfca81a128c5ac219" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c657fa987d60b104d2be8b052d66da0a2a88f9bd1d66b2254333e84ea2720c7f" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f2e74b021d0de5eceb8bd32919f6ff8a9b40ee62ed97becd44993ae5b9949474" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9b5ef39820abc0f2c62111f7045009e46b275f5b99d5e59dda113c39b7f4f38" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1dba3135ca503727aa4648152c0fa67c3b1385d3dc81c75cd8a229c4b2a1458" }, - { file = "ruff-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f024d32e62faad0f76b2d6afd141b8c171515e4fb91ce9fd6464335c81244e5" }, - { file = "ruff-0.11.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d365618d3ad747432e1ae50d61775b78c055fee5936d77fb4d92c6f559741948" }, - { file = "ruff-0.11.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d9aaa91035bdf612c8ee7266153bcf16005c7c7e2f5878406911c92a31633cb" }, - { file = "ruff-0.11.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0eba551324733efc76116d9f3a0d52946bc2751f0cd30661564117d6fd60897c" }, - { file = "ruff-0.11.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:161eb4cff5cfefdb6c9b8b3671d09f7def2f960cee33481dd898caf2bcd02304" }, - { file = "ruff-0.11.8-py3-none-win32.whl", hash = "sha256:5b18caa297a786465cc511d7f8be19226acf9c0a1127e06e736cd4e1878c3ea2" }, - { file = "ruff-0.11.8-py3-none-win_amd64.whl", hash = "sha256:6e70d11043bef637c5617297bdedec9632af15d53ac1e1ba29c448da9341b0c4" }, - { file = "ruff-0.11.8-py3-none-win_arm64.whl", hash = "sha256:304432e4c4a792e3da85b7699feb3426a0908ab98bf29df22a31b0cdd098fac2" }, - { file = "ruff-0.11.8.tar.gz", hash = "sha256:6d742d10626f9004b781f4558154bb226620a7242080e11caeffab1a40e99df8" }, + {file = "ruff-0.11.8-py3-none-linux_armv6l.whl", hash = "sha256:896a37516c594805e34020c4a7546c8f8a234b679a7716a3f08197f38913e1a3"}, + {file = "ruff-0.11.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab86d22d3d721a40dd3ecbb5e86ab03b2e053bc93c700dc68d1c3346b36ce835"}, + {file = "ruff-0.11.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:258f3585057508d317610e8a412788cf726efeefa2fec4dba4001d9e6f90d46c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727d01702f7c30baed3fc3a34901a640001a2828c793525043c29f7614994a8c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dca977cc4fc8f66e89900fa415ffe4dbc2e969da9d7a54bfca81a128c5ac219"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c657fa987d60b104d2be8b052d66da0a2a88f9bd1d66b2254333e84ea2720c7f"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f2e74b021d0de5eceb8bd32919f6ff8a9b40ee62ed97becd44993ae5b9949474"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9b5ef39820abc0f2c62111f7045009e46b275f5b99d5e59dda113c39b7f4f38"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1dba3135ca503727aa4648152c0fa67c3b1385d3dc81c75cd8a229c4b2a1458"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f024d32e62faad0f76b2d6afd141b8c171515e4fb91ce9fd6464335c81244e5"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d365618d3ad747432e1ae50d61775b78c055fee5936d77fb4d92c6f559741948"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d9aaa91035bdf612c8ee7266153bcf16005c7c7e2f5878406911c92a31633cb"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0eba551324733efc76116d9f3a0d52946bc2751f0cd30661564117d6fd60897c"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:161eb4cff5cfefdb6c9b8b3671d09f7def2f960cee33481dd898caf2bcd02304"}, + {file = "ruff-0.11.8-py3-none-win32.whl", hash = "sha256:5b18caa297a786465cc511d7f8be19226acf9c0a1127e06e736cd4e1878c3ea2"}, + {file = "ruff-0.11.8-py3-none-win_amd64.whl", hash = "sha256:6e70d11043bef637c5617297bdedec9632af15d53ac1e1ba29c448da9341b0c4"}, + {file = "ruff-0.11.8-py3-none-win_arm64.whl", hash = "sha256:304432e4c4a792e3da85b7699feb3426a0908ab98bf29df22a31b0cdd098fac2"}, + {file = "ruff-0.11.8.tar.gz", hash = "sha256:6d742d10626f9004b781f4558154bb226620a7242080e11caeffab1a40e99df8"}, ] +[[package]] +name = "safety" +version = "3.5.2" +description = "Scan dependencies for known vulnerabilities and licenses." +optional = false +python-versions = ">=3.8" +files = [ + {file = "safety-3.5.2-py3-none-any.whl", hash = "sha256:d5baff410c548393e80ba2bd2ab1de2701a690ca3577e457335917b9db4641e1"}, + {file = "safety-3.5.2.tar.gz", hash = "sha256:ecbb2e76f9574284f2c0e168e71ec92b39018ae9516b3b00f132de57ecaa09cb"}, +] + +[package.dependencies] +authlib = ">=1.2.0" +click = ">=8.0.2,<8.2.0" +dparse = ">=0.6.4" +filelock = ">=3.16.1,<3.17.0" +httpx = "*" +jinja2 = ">=3.1.0" +marshmallow = ">=3.15.0" +nltk = ">=3.9" +packaging = ">=21.0" +psutil = ">=6.1.0,<6.2.0" +pydantic = ">=2.6.0,<2.10.0" +requests = "*" +ruamel-yaml = ">=0.17.21" +safety-schemas = "0.0.14" +setuptools = ">=65.5.1" +tenacity = "*" +tomlkit = "*" +typer = ">=0.12.1" +typing-extensions = ">=4.7.1" + +[package.extras] +github = ["pygithub (>=1.43.3)"] +gitlab = ["python-gitlab (>=1.3.0)"] +spdx = ["spdx-tools (>=0.8.2)"] + +[[package]] +name = "safety-schemas" +version = "0.0.14" +description = "Schemas for Safety tools" +optional = false +python-versions = ">=3.7" +files = [ + {file = "safety_schemas-0.0.14-py3-none-any.whl", hash = "sha256:0bf6fc4aa5e474651b714cc9e427c862792946bf052b61d5c7bec4eac4c0f254"}, + {file = "safety_schemas-0.0.14.tar.gz", hash = "sha256:49953f7a59e919572be25595a8946f9cbbcd2066fe3e160c9467d9d1d6d7af6a"}, +] + +[package.dependencies] +dparse = ">=0.6.4" +packaging = ">=21.0" +pydantic = ">=2.6.0,<2.10.0" +ruamel-yaml = ">=0.17.21" +typing-extensions = ">=4.7.1" + [[package]] name = "send2trash" version = "1.8.3" @@ -4069,8 +4853,8 @@ description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - { file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9" }, - { file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf" }, + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, ] [package.extras] @@ -4085,15 +4869,15 @@ description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = ">=3.6" files = [ - { file = "sentry_sdk-2.27.0-py2.py3-none-any.whl", hash = "sha256:c58935bfff8af6a0856d37e8adebdbc7b3281c2b632ec823ef03cd108d216ff0" }, - { file = "sentry_sdk-2.27.0.tar.gz", hash = "sha256:90f4f883f9eff294aff59af3d58c2d1b64e3927b28d5ada2b9b41f5aeda47daf" }, + {file = "sentry_sdk-2.27.0-py2.py3-none-any.whl", hash = "sha256:c58935bfff8af6a0856d37e8adebdbc7b3281c2b632ec823ef03cd108d216ff0"}, + {file = "sentry_sdk-2.27.0.tar.gz", hash = "sha256:90f4f883f9eff294aff59af3d58c2d1b64e3927b28d5ada2b9b41f5aeda47daf"}, ] [package.dependencies] -celery = { version = ">=3", optional = true, markers = "extra == \"celery\"" } +celery = {version = ">=3", optional = true, markers = "extra == \"celery\""} certifi = "*" -django = { version = ">=1.8", optional = true, markers = "extra == \"django\"" } -opentelemetry-distro = { version = ">=0.35b0", optional = true, markers = "extra == \"opentelemetry\"" } +django = {version = ">=1.8", optional = true, markers = "extra == \"django\""} +opentelemetry-distro = {version = ">=0.35b0", optional = true, markers = "extra == \"opentelemetry\""} urllib3 = ">=1.26.11" [package.extras] @@ -4141,11 +4925,11 @@ unleash = ["UnleashClient (>=6.0.1)"] name = "setuptools" version = "80.9.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = true +optional = false python-versions = ">=3.9" files = [ - { file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" }, - { file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }, + {file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"}, + {file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"}, ] [package.extras] @@ -4157,6 +4941,17 @@ enabler = ["pytest-enabler (>=2.2)"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] +[[package]] +name = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + [[package]] name = "six" version = "1.17.0" @@ -4164,8 +4959,19 @@ description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - { file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" }, - { file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "smmap" +version = "5.0.2" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e"}, + {file = "smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5"}, ] [[package]] @@ -4175,8 +4981,8 @@ description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - { file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" }, - { file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" }, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] @@ -4186,18 +4992,8 @@ description = "A modern CSS selector implementation for Beautiful Soup." optional = true python-versions = ">=3.8" files = [ - { file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4" }, - { file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a" }, -] - -[[package]] -name = "south" -version = "1.0.2" -description = "South: Migrations for Django" -optional = false -python-versions = "*" -files = [ - { file = "South-1.0.2.tar.gz", hash = "sha256:d360bd31898f9df59f6faa786551065bba45b35e7ee3c39b381b4fbfef7392f4" }, + {file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4"}, + {file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a"}, ] [[package]] @@ -4207,8 +5003,8 @@ description = "A non-validating SQL parser." optional = false python-versions = ">=3.8" files = [ - { file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca" }, - { file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272" }, + {file = "sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca"}, + {file = "sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272"}, ] [package.extras] @@ -4222,8 +5018,8 @@ description = "Extract data from python stack frames and tracebacks for informat optional = true python-versions = "*" files = [ - { file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695" }, - { file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9" }, + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] [package.dependencies] @@ -4234,6 +5030,20 @@ pure-eval = "*" [package.extras] tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] +[[package]] +name = "stevedore" +version = "5.4.1" +description = "Manage dynamic plugins for Python applications" +optional = false +python-versions = ">=3.9" +files = [ + {file = "stevedore-5.4.1-py3-none-any.whl", hash = "sha256:d10a31c7b86cba16c1f6e8d15416955fc797052351a56af15e608ad20811fcfe"}, + {file = "stevedore-5.4.1.tar.gz", hash = "sha256:3135b5ae50fe12816ef291baff420acb727fcd356106e3e9cbfa9e5985cd6f4b"}, +] + +[package.dependencies] +pbr = ">=2.0.0" + [[package]] name = "swapper" version = "1.4.0" @@ -4241,10 +5051,25 @@ description = "The unofficial Django swappable models API." optional = false python-versions = "*" files = [ - { file = "swapper-1.4.0-py2.py3-none-any.whl", hash = "sha256:57b8378aad234242542fe32dc6e8cff0ed24b63493d20b3c88ee01f894b9345e" }, - { file = "swapper-1.4.0.tar.gz", hash = "sha256:9e083af114ee0593241a7b877e3e0e7d3a580454f5d59016c667a5563306f8fe" }, + {file = "swapper-1.4.0-py2.py3-none-any.whl", hash = "sha256:57b8378aad234242542fe32dc6e8cff0ed24b63493d20b3c88ee01f894b9345e"}, + {file = "swapper-1.4.0.tar.gz", hash = "sha256:9e083af114ee0593241a7b877e3e0e7d3a580454f5d59016c667a5563306f8fe"}, ] +[[package]] +name = "tenacity" +version = "9.1.2" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.9" +files = [ + {file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"}, + {file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"}, +] + +[package.extras] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] + [[package]] name = "terminado" version = "0.18.1" @@ -4252,13 +5077,13 @@ description = "Tornado websocket backend for the Xterm.js Javascript terminal em optional = true python-versions = ">=3.8" files = [ - { file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0" }, - { file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e" }, + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, ] [package.dependencies] -ptyprocess = { version = "*", markers = "os_name != \"nt\"" } -pywinpty = { version = ">=1.1.0", markers = "os_name == \"nt\"" } +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} tornado = ">=6.1.0" [package.extras] @@ -4273,8 +5098,8 @@ description = "The most basic Text::Unidecode port" optional = false python-versions = "*" files = [ - { file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93" }, - { file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8" }, + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, ] [[package]] @@ -4284,8 +5109,8 @@ description = "A tiny CSS parser" optional = true python-versions = ">=3.8" files = [ - { file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289" }, - { file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7" }, + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, ] [package.dependencies] @@ -4295,6 +5120,17 @@ webencodings = ">=0.4" doc = ["sphinx", "sphinx_rtd_theme"] test = ["pytest", "ruff"] +[[package]] +name = "tomlkit" +version = "0.13.3" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"}, + {file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"}, +] + [[package]] name = "tornado" version = "6.5.1" @@ -4302,33 +5138,33 @@ description = "Tornado is a Python web framework and asynchronous networking lib optional = true python-versions = ">=3.9" files = [ - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7" }, - { file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331" }, - { file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692" }, - { file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a" }, - { file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365" }, - { file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b" }, - { file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7" }, - { file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c" }, + {file = "tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7"}, + {file = "tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6"}, + {file = "tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888"}, + {file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331"}, + {file = "tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e"}, + {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401"}, + {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692"}, + {file = "tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a"}, + {file = "tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365"}, + {file = "tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b"}, + {file = "tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7"}, + {file = "tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c"}, ] [[package]] name = "tqdm" version = "4.67.1" description = "Fast, Extensible Progress Meter" -optional = true +optional = false python-versions = ">=3.7" files = [ - { file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2" }, - { file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2" }, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] -colorama = { version = "*", markers = "platform_system == \"Windows\"" } +colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] @@ -4344,14 +5180,31 @@ description = "Traitlets Python configuration system" optional = true python-versions = ">=3.8" files = [ - { file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f" }, - { file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7" }, + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] +[[package]] +name = "typer" +version = "0.16.0" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +optional = false +python-versions = ">=3.7" +files = [ + {file = "typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855"}, + {file = "typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b"}, +] + +[package.dependencies] +click = ">=8.0.0" +rich = ">=10.11.0" +shellingham = ">=1.3.0" +typing-extensions = ">=3.7.4.3" + [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" @@ -4359,8 +5212,8 @@ description = "Typing stubs for python-dateutil" optional = true python-versions = ">=3.9" files = [ - { file = "types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93" }, - { file = "types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5" }, + {file = "types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93"}, + {file = "types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5"}, ] [[package]] @@ -4370,10 +5223,24 @@ description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" files = [ - { file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530" }, - { file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba" }, + {file = "types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530"}, + {file = "types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba"}, ] +[[package]] +name = "types-requests" +version = "2.32.4.20250611" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.9" +files = [ + {file = "types_requests-2.32.4.20250611-py3-none-any.whl", hash = "sha256:ad2fe5d3b0cb3c2c902c8815a70e7fb2302c4b8c1f77bdcd738192cdb3878072"}, + {file = "types_requests-2.32.4.20250611.tar.gz", hash = "sha256:741c8777ed6425830bf51e54d6abe245f79b4dcb9019f1622b773463946bf826"}, +] + +[package.dependencies] +urllib3 = ">=2" + [[package]] name = "typing-extensions" version = "4.14.0" @@ -4381,24 +5248,10 @@ description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" files = [ - { file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af" }, - { file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4" }, + {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"}, + {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"}, ] -[[package]] -name = "typing-inspection" -version = "0.4.1" -description = "Runtime typing introspection tools" -optional = true -python-versions = ">=3.9" -files = [ - { file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" }, - { file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }, -] - -[package.dependencies] -typing-extensions = ">=4.12.0" - [[package]] name = "tzdata" version = "2025.2" @@ -4406,8 +5259,8 @@ description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - { file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" }, - { file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }, + {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, + {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, ] [[package]] @@ -4417,8 +5270,8 @@ description = "RFC 6570 URI Template Processor" optional = true python-versions = ">=3.7" files = [ - { file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7" }, - { file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363" }, + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, ] [package.extras] @@ -4431,8 +5284,8 @@ description = "Implementation of RFC 6570 URI Templates" optional = false python-versions = ">=3.9" files = [ - { file = "uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686" }, - { file = "uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e" }, + {file = "uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686"}, + {file = "uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e"}, ] [[package]] @@ -4442,8 +5295,8 @@ description = "HTTP library with thread-safe connection pooling, file post, and optional = false python-versions = ">=3.9" files = [ - { file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813" }, - { file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466" }, + {file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"}, + {file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"}, ] [package.extras] @@ -4459,10 +5312,30 @@ description = "Python promises." optional = false python-versions = ">=3.6" files = [ - { file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc" }, - { file = "vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0" }, + {file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc"}, + {file = "vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0"}, ] +[[package]] +name = "virtualenv" +version = "20.31.2" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +files = [ + {file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11"}, + {file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + [[package]] name = "wcwidth" version = "0.2.13" @@ -4470,8 +5343,8 @@ description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - { file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859" }, - { file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5" }, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -4481,8 +5354,8 @@ description = "A library for working with the color formats defined by HTML and optional = true python-versions = ">=3.9" files = [ - { file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9" }, - { file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6" }, + {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, + {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, ] [[package]] @@ -4492,8 +5365,8 @@ description = "Character encoding aliases for legacy web content" optional = true python-versions = "*" files = [ - { file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78" }, - { file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" }, + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] [[package]] @@ -4503,8 +5376,8 @@ description = "WebSocket client for Python with low level API options" optional = true python-versions = ">=3.8" files = [ - { file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526" }, - { file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da" }, + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, ] [package.extras] @@ -4519,8 +5392,8 @@ description = "Jupyter interactive widgets for Jupyter Notebook" optional = true python-versions = ">=3.7" files = [ - { file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575" }, - { file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af" }, + {file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575"}, + {file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af"}, ] [[package]] @@ -4530,85 +5403,85 @@ description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" files = [ - { file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984" }, - { file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22" }, - { file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7" }, - { file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c" }, - { file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72" }, - { file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061" }, - { file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2" }, - { file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c" }, - { file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62" }, - { file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563" }, - { file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f" }, - { file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58" }, - { file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda" }, - { file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438" }, - { file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a" }, - { file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000" }, - { file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6" }, - { file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b" }, - { file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662" }, - { file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72" }, - { file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317" }, - { file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3" }, - { file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925" }, - { file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392" }, - { file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40" }, - { file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d" }, - { file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b" }, - { file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98" }, - { file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82" }, - { file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae" }, - { file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9" }, - { file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9" }, - { file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991" }, - { file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125" }, - { file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998" }, - { file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5" }, - { file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8" }, - { file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6" }, - { file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc" }, - { file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2" }, - { file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b" }, - { file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504" }, - { file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a" }, - { file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845" }, - { file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192" }, - { file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b" }, - { file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0" }, - { file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306" }, - { file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb" }, - { file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681" }, - { file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6" }, - { file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6" }, - { file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f" }, - { file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555" }, - { file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c" }, - { file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9" }, - { file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119" }, - { file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6" }, - { file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9" }, - { file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a" }, - { file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2" }, - { file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a" }, - { file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04" }, - { file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f" }, - { file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7" }, - { file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3" }, - { file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a" }, - { file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061" }, - { file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82" }, - { file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9" }, - { file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f" }, - { file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b" }, - { file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f" }, - { file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8" }, - { file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9" }, - { file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb" }, - { file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb" }, - { file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8" }, - { file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3" }, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, + {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, + {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, + {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, + {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, + {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, + {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, + {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, + {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, + {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, + {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, + {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, + {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, + {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, + {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, + {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, + {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, ] [[package]] @@ -4618,8 +5491,8 @@ description = "A Python SOAP client" optional = false python-versions = ">=3.8" files = [ - { file = "zeep-4.3.1-py3-none-any.whl", hash = "sha256:a637aa7eedb6330bb27e8c94c5233ddf23553904323adf9398f8cf5025acb216" }, - { file = "zeep-4.3.1.tar.gz", hash = "sha256:f45385e9e1b09d5550e0f51ab9fa7c6842713cab7194139372fd82a99c56a06e" }, + {file = "zeep-4.3.1-py3-none-any.whl", hash = "sha256:a637aa7eedb6330bb27e8c94c5233ddf23553904323adf9398f8cf5025acb216"}, + {file = "zeep-4.3.1.tar.gz", hash = "sha256:f45385e9e1b09d5550e0f51ab9fa7c6842713cab7194139372fd82a99c56a06e"}, ] [package.dependencies] @@ -4645,8 +5518,8 @@ description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" files = [ - { file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" }, - { file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" }, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] @@ -4658,12 +5531,15 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_it type = ["pytest-mypy"] [extras] -ai = ["openai"] +docs = [] graph = ["pygraphviz"] jupyter = ["jupyter"] -worker = ["celery", "celery-prometheus-exporter", "celery-stubs", "django-celery-beat", "django-celery-results"] +linting = [] +openai = ["openai"] +testing = [] +worker = ["celery", "celery-prometheus-exporter", "django-celery-beat", "django-celery-results"] [metadata] lock-version = "2.0" python-versions = ">=3.12,<3.13" -content-hash = "8dcc1f5d73dfdac5405001847021fef0cfaea193bb147f45749afa904b3604bb" +content-hash = "799dea73337403b7ac91e20f4b159c9636112ba5843095cd4960ff8eeb6718cb" diff --git a/pyproject.toml b/pyproject.toml index 0f5554fb..8385f837 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,83 +1,116 @@ [tool.poetry] name = "eVibes" -version = "2.8.5" +version = "2.8.9" 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 +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + [tool.poetry.dependencies] -python = ">=3.12,<3.13" -poetry-core = "2.1.3" -ruff = "0.11.8" -six = "1.17.0" -cryptography = "44.0.3" -psutil = "7.0.0" -redis = "6.0.0" -httpx = "0.28.1" -celery-stubs = { version = "0.1.3", optional = true } -celery = { version = "5.5.2", optional = true } -celery-prometheus-exporter = { version = "1.7.0", optional = true } -pillow = "11.2.1" -south = "1.0.2" -pygraphviz = { version = "1.14", optional = true } -requests = "2.32.3" -gunicorn = "23.0.0" -psycopg2 = "2.9.10" -polib = "1.2.0" -zeep = "4.3.1" -aiosmtpd = "1.4.6" -openai = { version = "1.77.0", optional = true } -swapper = "1.4.0" -paramiko = "3.5.1" -filetype = "1.2.0" -colorlog = "6.9.0" -pymdown-extensions = "10.15" -sentry-sdk = { extras = ["django", "celery", "opentelemetry", "redis"], version = "2.27.0" } -jupyter = { version = "1.1.1", optional = true } -elasticsearch-dsl = "8.18.0" -django = "5.2" -django-extensions = "4.1" -graphene-django = "3.2.3" -graphene-file-upload = "1.3.0" -django-redis = "5.4.0" -django-modeltranslation = "0.19.14" -django-ratelimit = "4.1.0" -django-hosts = "6.0" -django-mptt = "0.17.0" -django-filter = "25.1" -django-dbbackup = "4.2.1" -django-storages = "1.14.6" -django-stubs = "5.2.0" -django-constance = "4.3.2" -django-daisy = "1.0.23" -django-cacheops = "7.2" -django-mailbox = "4.10.1" -django-prometheus = "^2.3.1" -django-model-utils = "5.0.0" -django-widget-tweaks = "1.5.0" -django-health-check = "3.19.1" -django-cors-headers = "4.7.0" -django-celery-beat = { version = "2.8.0", optional = true } -django-celery-results = { version = "2.6.0", optional = true } -django-json-widget = "2.0.1" -django-md-field = "0.1.0" -django-elasticsearch-dsl = "8.0" -django-elasticsearch-dsl-drf = "0.22.5" -djangorestframework = "3.16.0" -djangorestframework-simplejwt = { extras = ["crypto"], version = "5.5.0" } -djangorestframework-recursive = "0.1.2" +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-xml = "2.0.0" -djangorestframework-yaml = "2.0.0" -drf-spectacular = { extras = ["sidecar"], version = "0.28.0" } +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", "celery-stubs", "django-celery-beat", "django-celery-results", "celery-prometheus-exporter"] -AI = ["openai"] +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"] -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" \ No newline at end of file +[tool.mypy] +disable_error_code = ["import-untyped", "misc"] + +[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" \ No newline at end of file diff --git a/ruff.toml b/ruff.toml deleted file mode 100644 index d04d0118..00000000 --- a/ruff.toml +++ /dev/null @@ -1,52 +0,0 @@ -# Official website https://docs.astral.sh/ruff/ -# This config for Ruff v.0.5.1+ - -line-length = 120 -target-version = "py38" -exclude = [ - "migrations", - "media", - "static", - "storefront", -] - -[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", -] - -[lint.per-file-ignores] -"__init__.py" = ["E402", "F401"] - -[format] -quote-style = "double" -indent-style = "space" diff --git a/scripts/Docker/app-entrypoint.sh b/scripts/Docker/app-entrypoint.sh new file mode 100644 index 00000000..73fb6d95 --- /dev/null +++ b/scripts/Docker/app-entrypoint.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh +set -e + +# wait for auxiliary services +poetry run python manage.py await_services + +# choose dev vs prod +if [ "${DEBUG:-0}" = "1" ]; then + exec poetry run gunicorn evibes.wsgi:application \ + --bind 0.0.0.0:8000 \ + --workers 2 \ + --reload \ + --log-level debug \ + --access-logfile - \ + --error-logfile - +else + exec poetry run gunicorn evibes.wsgi:application \ + --bind 0.0.0.0:8000 \ + --workers 12 \ + --timeout 120 +fi \ No newline at end of file diff --git a/scripts/Docker/beat-entrypoint.sh b/scripts/Docker/beat-entrypoint.sh new file mode 100644 index 00000000..f0db32d5 --- /dev/null +++ b/scripts/Docker/beat-entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -e + +# wait for auxiliary services +poetry run python manage.py await_services + +# run beat +poetry run celery -A evibes beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler \ No newline at end of file diff --git a/scripts/Docker/worker-entrypoint.sh b/scripts/Docker/worker-entrypoint.sh new file mode 100644 index 00000000..9c81ffdc --- /dev/null +++ b/scripts/Docker/worker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh +set -e + +# wait for auxiliary services +poetry run python manage.py await_services + +# run workers and metrics exporter +poetry run celery -A evibes worker --loglevel=info -E --concurrency=4 --autoscale=4,2 --max-tasks-per-child=100 --max-memory-per-child=512000 --soft-time-limit=10800 --time-limit=21600 & /usr/local/bin/celery-prometheus-exporter \ No newline at end of file diff --git a/scripts/Unix/export-environment-file.sh b/scripts/Unix/export-environment-file.sh index 5b6c5a2b..ddf50107 100755 --- a/scripts/Unix/export-environment-file.sh +++ b/scripts/Unix/export-environment-file.sh @@ -51,6 +51,7 @@ while IFS= read -r raw; do done < "$ENV_FILE" if [ "${#keys[@]}" -gt 0 ]; then + # shellcheck disable=SC2207 IFS=$'\n' sorted=($(sort <<<"${keys[*]}")) unset IFS formatted="" diff --git a/scripts/Windows/run.ps1 b/scripts/Windows/run.ps1 index 25f60bc2..fb56acdf 100644 --- a/scripts/Windows/run.ps1 +++ b/scripts/Windows/run.ps1 @@ -65,4 +65,8 @@ Write-Host "Setting default caches..." -ForegroundColor Magenta docker compose exec app poetry run python manage.py set_default_caches Write-Host "Default caches set successfully!" -ForegroundColor Green +Write-Host "Cleaning unused Docker data..." -ForegroundColor Magenta +docker system prune -f +Write-Host "Unused Docker data cleaned successfully!" -ForegroundColor Green + Write-Host "All done! eVibes is up and running!" -ForegroundColor Cyan diff --git a/scripts/Windows/uninstall.ps1 b/scripts/Windows/uninstall.ps1 index 257108ae..a7deb60c 100644 --- a/scripts/Windows/uninstall.ps1 +++ b/scripts/Windows/uninstall.ps1 @@ -29,6 +29,11 @@ Write-Host "Shutting down..." -ForegroundColor Magenta docker compose down Write-Host "Services were shut down successfully!" -ForegroundColor Green +Write-Host "Removing volumes..." -ForegroundColor Magenta +docker volume remove -f evibes_prometheus-data +docker volume remove -f evibes_es-data +Write-Host "Volumes were removed successfully!" -ForegroundColor Green + Write-Host "Cleaning up unused Docker data..." -ForegroundColor Magenta docker system prune -a -f --volumes Write-Host "Unused Docker data cleaned successfully!" -ForegroundColor Green diff --git a/storefront/Dockerfile b/storefront/Dockerfile deleted file mode 100644 index 84586138..00000000 --- a/storefront/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -FROM node:23.11 -LABEL authors="savbad" diff --git a/storefront/eslint.config.mjs b/storefront/eslint.config.mjs deleted file mode 100644 index 142ee2c5..00000000 --- a/storefront/eslint.config.mjs +++ /dev/null @@ -1,32 +0,0 @@ -import astroPlugin from 'eslint-plugin-astro'; -import astroParser from 'astro-eslint-parser'; -import vuePlugin from 'eslint-plugin-vue'; -import vueParser from 'vue-eslint-parser'; - -export default [ - { - files: ['*.vue'], - languageOptions: { - parser: vueParser, - parserOptions: { - ecmaVersion: 2021, - sourceType: 'module', - }, - }, - plugins: { - vue: vuePlugin, - }, - extends: ['plugin:vue/vue3-recommended'], - rules: {}, - }, - - { - files: ['*.js', '*.jsx'], - languageOptions: { - ecmaVersion: 2021, - sourceType: 'module', - }, - extends: ['eslint:recommended'], - rules: {}, - }, -]; diff --git a/storefront/index.html b/storefront/index.html deleted file mode 100644 index 8714c58b..00000000 --- a/storefront/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - %EVIBES_PROJECT_NAME% - - -
- - - \ No newline at end of file diff --git a/storefront/jsconfig.json b/storefront/jsconfig.json deleted file mode 100644 index f2642f32..00000000 --- a/storefront/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "paths": { - "@/*": ["./src/*"] - } - }, - "exclude": ["node_modules", "dist"] -} \ No newline at end of file diff --git a/storefront/package-lock.json b/storefront/package-lock.json deleted file mode 100644 index ef7189e7..00000000 --- a/storefront/package-lock.json +++ /dev/null @@ -1,4145 +0,0 @@ -{ - "name": "evibes-frontend", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "evibes-frontend", - "version": "0.0.0", - "dependencies": { - "@apollo/client": "^3.13.8", - "@vue/apollo-composable": "^4.2.2", - "@vueuse/core": "^13.2.0", - "element-plus": "^2.9.11", - "graphql": "^16.11.0", - "graphql-tag": "^2.12.6", - "pinia": "^3.0.1", - "primeicons": "^7.0.0", - "swiper": "^11.2.8", - "vue": "^3.5.13", - "vue-i18n": "^11.1.4", - "vue-router": "^4.5.0", - "vue3-marquee-slider": "^1.0.5" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.2.3", - "sass": "^1.83.0", - "sass-loader": "^16.0.4", - "vite": "^6.2.4", - "vite-plugin-vue-devtools": "^7.7.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@apollo/client": { - "version": "3.13.8", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.13.8.tgz", - "integrity": "sha512-YM9lQpm0VfVco4DSyKooHS/fDTiKQcCHfxr7i3iL6a0kP/jNO5+4NFK6vtRDxaYisd5BrwOZHLJpPBnvRVpKPg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5 || ^6.0.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", - "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.27.1.tgz", - "integrity": "sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz", - "integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@element-plus/icons-vue": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", - "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", - "license": "MIT", - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", - "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", - "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", - "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.0", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", - "license": "MIT" - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@intlify/core-base": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.4.tgz", - "integrity": "sha512-VNIanL84HNBNAoJjPA2V8EykT5NtgNDquO2MsDQcSheo7EcCt4uvH14IHBEDKVoL6k38NNICLuRhtKOKqW2ylA==", - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "11.1.4", - "@intlify/shared": "11.1.4" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/message-compiler": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.4.tgz", - "integrity": "sha512-fQWJwTOBFNFGNr4I5k629hQxTGEKsDWhhTzr6Y4CN4OXJw/dLB/VbbQm5jlylqnv44RBZN5GSD+d1nWpNcAR5A==", - "license": "MIT", - "dependencies": { - "@intlify/shared": "11.1.4", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/shared": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.4.tgz", - "integrity": "sha512-zOW2L5+QnWRQgM/7WNSPxa6E0F3wR2/KEQV7P4s4AXzxzmg0MuzLNiixvkRJU5h0Xb3DnHic6zybKva28kabDw==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", - "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", - "license": "MIT" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", - "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", - "license": "MIT" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", - "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/apollo-composable": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@vue/apollo-composable/-/apollo-composable-4.2.2.tgz", - "integrity": "sha512-5j+Jl07Gemz5vmuS8u/FfWtYgr04Rh0rjQ5HBv6DZDP7d+pvQfsCIRgX5adJoZJcznJLsQ0JupO/mZmRCBWGaQ==", - "license": "MIT", - "dependencies": { - "throttle-debounce": "^5.0.0", - "ts-essentials": "^9.4.0", - "vue-demi": "^0.14.6" - }, - "peerDependencies": { - "@apollo/client": "^3.4.13", - "@vue/composition-api": "^1.0.0", - "graphql": ">=15", - "vue": "^2.6.0 || ^3.1.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vue/apollo-composable/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz", - "integrity": "sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz", - "integrity": "sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", - "@vue/babel-helper-vue-transform-on": "1.4.0", - "@vue/babel-plugin-resolve-type": "1.4.0", - "@vue/shared": "^3.5.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } - } - }, - "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz", - "integrity": "sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/parser": "^7.26.9", - "@vue/compiler-sfc": "^3.5.13" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.14.tgz", - "integrity": "sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.2", - "@vue/shared": "3.5.14", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.14.tgz", - "integrity": "sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.14", - "@vue/shared": "3.5.14" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.14.tgz", - "integrity": "sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.2", - "@vue/compiler-core": "3.5.14", - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.17", - "postcss": "^8.5.3", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.14.tgz", - "integrity": "sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.14", - "@vue/shared": "3.5.14" - } - }, - "node_modules/@vue/devtools-api": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.6.tgz", - "integrity": "sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==", - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.6" - } - }, - "node_modules/@vue/devtools-core": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.6.tgz", - "integrity": "sha512-ghVX3zjKPtSHu94Xs03giRIeIWlb9M+gvDRVpIZ/cRIxKHdW6HE/sm1PT3rUYS3aV92CazirT93ne+7IOvGUWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.6", - "@vue/devtools-shared": "^7.7.6", - "mitt": "^3.0.1", - "nanoid": "^5.1.0", - "pathe": "^2.0.3", - "vite-hot-client": "^2.0.4" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@vue/devtools-core/node_modules/nanoid": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", - "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.6.tgz", - "integrity": "sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==", - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.7.6", - "birpc": "^2.3.0", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.2" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.6.tgz", - "integrity": "sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==", - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.14.tgz", - "integrity": "sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.14" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.14.tgz", - "integrity": "sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.14", - "@vue/shared": "3.5.14" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.14.tgz", - "integrity": "sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.14", - "@vue/runtime-core": "3.5.14", - "@vue/shared": "3.5.14", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.14.tgz", - "integrity": "sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14" - }, - "peerDependencies": { - "vue": "3.5.14" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.14.tgz", - "integrity": "sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==", - "license": "MIT" - }, - "node_modules/@vueuse/core": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.2.0.tgz", - "integrity": "sha512-n5TZoIAxbWAQ3PqdVPDzLgIRQOujFfMlatdI+f7ditSmoEeNpPBvp7h2zamzikCmrhFIePAwdEQB6ENccHr7Rg==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "13.2.0", - "@vueuse/shared": "13.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@vueuse/metadata": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.2.0.tgz", - "integrity": "sha512-kPpzuQCU0+D8DZCzK0iPpIcXI+6ufWSgwnjJ6//GNpEn+SHViaCtR+XurzORChSgvpHO9YC8gGM97Y1kB+UabA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.2.0.tgz", - "integrity": "sha512-vx9ZPDF5HcU9up3Jgt3G62dMUfZEdk6tLyBAHYAG4F4n73vpaA7J5hdncDI/lS9Vm7GA/FPlbOmh9TrDZROTpg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", - "license": "MIT" - }, - "node_modules/birpc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz", - "integrity": "sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.157", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.157.tgz", - "integrity": "sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==", - "dev": true, - "license": "ISC" - }, - "node_modules/element-plus": { - "version": "2.9.11", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.11.tgz", - "integrity": "sha512-x4L/6YC8de4JtuE3vpaEugJdQIeHQaHtIYKyk67IeF6dTIiVax45aX4nWOygnh+xX+0gTvL6xO+9BZhPA3G82w==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.1", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.13", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/element-plus/node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", - "license": "MIT" - }, - "node_modules/element-plus/node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/element-plus/node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "license": "MIT", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-stack-parser-es": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", - "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/esbuild": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", - "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "9.5.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.3.tgz", - "integrity": "sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/immutable": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", - "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "license": "MIT", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT" - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", - "license": "BSD-3-Clause" - }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/open": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", - "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optimism": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "license": "MIT", - "dependencies": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pinia": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.2.tgz", - "integrity": "sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^7.7.2" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/primeicons": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", - "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", - "license": "MIT" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rehackt": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sass": { - "version": "1.89.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.0.tgz", - "integrity": "sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sass-loader": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", - "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sirv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", - "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/swiper": { - "version": "11.2.8", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.8.tgz", - "integrity": "sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==", - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/swiperjs" - }, - { - "type": "open_collective", - "url": "http://opencollective.com/swiper" - } - ], - "license": "MIT", - "engines": { - "node": ">= 4.7.0" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/throttle-debounce": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", - "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", - "license": "MIT", - "engines": { - "node": ">=12.22" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-essentials": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.2.tgz", - "integrity": "sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==", - "license": "MIT", - "peerDependencies": { - "typescript": ">=4.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-hot-client": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.0.4.tgz", - "integrity": "sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/vite-plugin-inspect": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", - "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.10", - "@rollup/pluginutils": "^5.1.3", - "debug": "^4.3.7", - "error-stack-parser-es": "^0.1.5", - "fs-extra": "^11.2.0", - "open": "^10.1.0", - "perfect-debounce": "^1.0.0", - "picocolors": "^1.1.1", - "sirv": "^3.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - } - } - }, - "node_modules/vite-plugin-vue-devtools": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.6.tgz", - "integrity": "sha512-L7nPVM5a7lgit/Z+36iwoqHOaP3wxqVi1UvaDJwGCfblS9Y6vNqf32ILlzJVH9c47aHu90BhDXeZc+rgzHRHcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-core": "^7.7.6", - "@vue/devtools-kit": "^7.7.6", - "@vue/devtools-shared": "^7.7.6", - "execa": "^9.5.2", - "sirv": "^3.0.1", - "vite-plugin-inspect": "0.8.9", - "vite-plugin-vue-inspector": "^5.3.1" - }, - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/vite-plugin-vue-inspector": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz", - "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/plugin-proposal-decorators": "^7.23.0", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.22.15", - "@vue/babel-plugin-jsx": "^1.1.5", - "@vue/compiler-dom": "^3.3.4", - "kolorist": "^1.8.0", - "magic-string": "^0.30.4" - }, - "peerDependencies": { - "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0" - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vue": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.14.tgz", - "integrity": "sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-sfc": "3.5.14", - "@vue/runtime-dom": "3.5.14", - "@vue/server-renderer": "3.5.14", - "@vue/shared": "3.5.14" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-i18n": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.4.tgz", - "integrity": "sha512-0B2Q4rTSzQigfIQnsgNMgWOekouT2lr3hiKG3k7q3fQykr968BRdIUDnIvHisq/f1FPKbBznHpvAyGg78eDAyg==", - "license": "MIT", - "dependencies": { - "@intlify/core-base": "11.1.4", - "@intlify/shared": "11.1.4", - "@vue/devtools-api": "^6.5.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-i18n/node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/vue-router": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", - "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vue-router/node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/vue3-marquee-slider": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vue3-marquee-slider/-/vue3-marquee-slider-1.0.5.tgz", - "integrity": "sha512-92nrvGrmTC9Ltqz6QRXdkuJ5Tj6gM+69xy8sEB2kq/xY8RI/FTQxDF6QiCyJdieJDNL67giKlhJVDL0D9i9SxQ==", - "license": "MIT", - "dependencies": { - "vue": "^3.2.45" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "license": "MIT" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "license": "MIT", - "dependencies": { - "zen-observable": "0.8.15" - } - } - } -} diff --git a/storefront/package.json b/storefront/package.json deleted file mode 100644 index c04c397d..00000000 --- a/storefront/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "evibes-frontend", - "version": "0.0.0", - "private": true, - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@apollo/client": "^3.13.8", - "@vue/apollo-composable": "^4.2.2", - "@vueuse/core": "^13.2.0", - "element-plus": "^2.9.11", - "graphql": "^16.11.0", - "graphql-tag": "^2.12.6", - "pinia": "^3.0.1", - "primeicons": "^7.0.0", - "swiper": "^11.2.8", - "vue": "^3.5.13", - "vue-i18n": "^11.1.4", - "vue-router": "^4.5.0", - "vue3-marquee-slider": "^1.0.5" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.2.3", - "sass": "^1.83.0", - "sass-loader": "^16.0.4", - "vite": "^6.2.4", - "vite-plugin-vue-devtools": "^7.7.2" - } -} diff --git a/storefront/public/favicon.ico b/storefront/public/favicon.ico deleted file mode 100644 index f3ba783b..00000000 Binary files a/storefront/public/favicon.ico and /dev/null differ diff --git a/storefront/public/images/evibes-big-simple.png b/storefront/public/images/evibes-big-simple.png deleted file mode 100644 index 08ba5f8c..00000000 Binary files a/storefront/public/images/evibes-big-simple.png and /dev/null differ diff --git a/storefront/public/images/evibes-big.png b/storefront/public/images/evibes-big.png deleted file mode 100644 index 260d9404..00000000 Binary files a/storefront/public/images/evibes-big.png and /dev/null differ diff --git a/storefront/public/images/homeBg.png b/storefront/public/images/homeBg.png deleted file mode 100644 index e24673b8..00000000 Binary files a/storefront/public/images/homeBg.png and /dev/null differ diff --git a/storefront/src/App.vue b/storefront/src/App.vue deleted file mode 100644 index 82a76878..00000000 --- a/storefront/src/App.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - diff --git a/storefront/src/apollo/index.js b/storefront/src/apollo/index.js deleted file mode 100644 index 06422b5b..00000000 --- a/storefront/src/apollo/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import {ApolloClient, ApolloLink, createHttpLink, InMemoryCache} from '@apollo/client/core' -import { setContext } from '@apollo/client/link/context' -import {DEFAULT_LOCALE, LOCALE_STORAGE_ACCESS_TOKEN_KEY, LOCALE_STORAGE_LOCALE_KEY} from "@/config/index.js"; -import {computed} from "vue"; - -const httpLink = createHttpLink({ - uri: 'https://api.' + import.meta.env.EVIBES_BASE_DOMAIN + '/graphql/', -}); - -const userLocale = computed(() => { - return localStorage.getItem(LOCALE_STORAGE_LOCALE_KEY) -}); - -export const createApolloClient = () => { - const accessToken = computed(() => { - return localStorage.getItem(LOCALE_STORAGE_ACCESS_TOKEN_KEY) - }) - - const authLink = setContext((_, { headers }) => { - const baseHeaders = { - ...headers, - "Accept-language": userLocale.value ? userLocale.value : DEFAULT_LOCALE, - }; - - if (accessToken.value) { - baseHeaders["X-EVIBES-AUTH"] = `Bearer ${accessToken.value}`; - } - - return { headers: baseHeaders }; - }) - - return new ApolloClient({ - link: authLink.concat(httpLink), - cache: new InMemoryCache(), - defaultOptions: { - watchQuery: { - fetchPolicy: 'cache-and-network', - } - } - }) -} \ No newline at end of file diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Black.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Black.ttf deleted file mode 100644 index 77ad0959..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Black.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Bold.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Bold.ttf deleted file mode 100644 index a7dac6b7..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Bold.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraBold.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraBold.ttf deleted file mode 100644 index 9eb7f20f..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraBold.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf deleted file mode 100644 index 205c083b..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Light.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Light.ttf deleted file mode 100644 index 7506643f..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Light.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Medium.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Medium.ttf deleted file mode 100644 index 1a270759..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Medium.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Regular.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Regular.ttf deleted file mode 100644 index fd02539c..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-Regular.ttf and /dev/null differ diff --git a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-SemiBold.ttf b/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-SemiBold.ttf deleted file mode 100644 index 2b7fcd3f..00000000 Binary files a/storefront/src/assets/fonts/SourceCodePro/SourceCodePro-SemiBold.ttf and /dev/null differ diff --git a/storefront/src/assets/images/evibes-big-simple.png b/storefront/src/assets/images/evibes-big-simple.png deleted file mode 100644 index 08ba5f8c..00000000 Binary files a/storefront/src/assets/images/evibes-big-simple.png and /dev/null differ diff --git a/storefront/src/assets/images/evibes-big.png b/storefront/src/assets/images/evibes-big.png deleted file mode 100644 index 260d9404..00000000 Binary files a/storefront/src/assets/images/evibes-big.png and /dev/null differ diff --git a/storefront/src/assets/images/homeBg.png b/storefront/src/assets/images/homeBg.png deleted file mode 100644 index e24673b8..00000000 Binary files a/storefront/src/assets/images/homeBg.png and /dev/null differ diff --git a/storefront/src/assets/styles/global/fonts.scss b/storefront/src/assets/styles/global/fonts.scss deleted file mode 100644 index 2b2eb6d6..00000000 --- a/storefront/src/assets/styles/global/fonts.scss +++ /dev/null @@ -1,42 +0,0 @@ -/* ===== SOURCE CODE PRO ===== */ - -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-Black.ttf'); - font-weight: 900; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-ExtraBold.ttf'); - font-weight: 800; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-Bold.ttf'); - font-weight: 700; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-SemiBold.ttf'); - font-weight: 600; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-Medium.ttf'); - font-weight: 500; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-Regular.ttf'); - font-weight: 400; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-Light.ttf'); - font-weight: 300; -} -@font-face { - font-family: 'Source Code Pro'; - src: url('../../fonts/SourceCodePro/SourceCodePro-ExtraLight.ttf'); - font-weight: 200; -} \ No newline at end of file diff --git a/storefront/src/assets/styles/global/mixins.scss b/storefront/src/assets/styles/global/mixins.scss deleted file mode 100644 index 78a4c9a4..00000000 --- a/storefront/src/assets/styles/global/mixins.scss +++ /dev/null @@ -1,7 +0,0 @@ -@mixin hover { - @media (hover: hover) and (pointer: fine) { - &:hover { - @content; - } - } -} \ No newline at end of file diff --git a/storefront/src/assets/styles/global/variables.scss b/storefront/src/assets/styles/global/variables.scss deleted file mode 100644 index b694a362..00000000 --- a/storefront/src/assets/styles/global/variables.scss +++ /dev/null @@ -1,9 +0,0 @@ -$font_default: 'Source Code Pro', sans-serif; - -$white: #ffffff; -$black: #000000; -$accent: #7965d1; -$accentLight: #a69cdc; -$accentDisabled: #826fa2; -$error: #f13838; -$default_border_radius: 4px; \ No newline at end of file diff --git a/storefront/src/assets/styles/main.scss b/storefront/src/assets/styles/main.scss deleted file mode 100644 index 49df318a..00000000 --- a/storefront/src/assets/styles/main.scss +++ /dev/null @@ -1,4 +0,0 @@ -@use "modules/normalize"; -@use "modules/transitions"; -@use "global/mixins"; -@use "global/variables"; \ No newline at end of file diff --git a/storefront/src/assets/styles/modules/normalize.scss b/storefront/src/assets/styles/modules/normalize.scss deleted file mode 100644 index 626a0663..00000000 --- a/storefront/src/assets/styles/modules/normalize.scss +++ /dev/null @@ -1,49 +0,0 @@ -@use "../global/variables" as *; - -* { - margin: 0; - padding: 0; - border: none; - box-sizing: border-box; -} - -html { - overflow-x: hidden; - font-family: $font_default; -} - -#app { - overflow-x: hidden; - position: relative; -} - -a { - text-decoration: none; - color: inherit; -} - -input, textarea, button { - font-family: $font_default; - outline: none; -} - -button:focus-visible { - outline: none; -} - -.container { - max-width: 1500px; - margin-inline: auto; -} - -@media (max-width: 1680px) { - .container { - max-width: 1200px; - } -} - -@media (max-width: 1300px) { - .container { - width: 90%; - } -} \ No newline at end of file diff --git a/storefront/src/assets/styles/modules/transitions.scss b/storefront/src/assets/styles/modules/transitions.scss deleted file mode 100644 index 86ef4b02..00000000 --- a/storefront/src/assets/styles/modules/transitions.scss +++ /dev/null @@ -1,28 +0,0 @@ -.opacity-enter-active, -.opacity-leave-active { - transition: 0.3s ease all; -} -.opacity-enter-from, -.opacity-leave-to { - opacity: 0; -} - -.fromTop-enter-active, -.fromTop-leave-active { - transition: all 0.3s ease; -} -.fromTop-enter-from, -.fromTop-leave-to { - transform: translateY(-3rem); - opacity: 0; -} - -.fromLeft-enter-active, -.fromLeft-leave-active { - transition: all 0.3s ease; -} -.fromLeft-enter-from, -.fromLeft-leave-to { - transform: translateX(-3rem); - opacity: 0; -} \ No newline at end of file diff --git a/storefront/src/components/base/base-auth.vue b/storefront/src/components/base/base-auth.vue deleted file mode 100644 index d304de78..00000000 --- a/storefront/src/components/base/base-auth.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header-catalogue.vue b/storefront/src/components/base/header/base-header-catalogue.vue deleted file mode 100644 index e2bd88f2..00000000 --- a/storefront/src/components/base/header/base-header-catalogue.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header-search.vue b/storefront/src/components/base/header/base-header-search.vue deleted file mode 100644 index 0420628a..00000000 --- a/storefront/src/components/base/header/base-header-search.vue +++ /dev/null @@ -1,237 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header.vue b/storefront/src/components/base/header/base-header.vue deleted file mode 100644 index e3d609a6..00000000 --- a/storefront/src/components/base/header/base-header.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/cards/product-card.vue b/storefront/src/components/cards/product-card.vue deleted file mode 100644 index 7c412232..00000000 --- a/storefront/src/components/cards/product-card.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/deposit-form.vue b/storefront/src/components/forms/deposit-form.vue deleted file mode 100644 index 2881375a..00000000 --- a/storefront/src/components/forms/deposit-form.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/login-form.vue b/storefront/src/components/forms/login-form.vue deleted file mode 100644 index ac43f455..00000000 --- a/storefront/src/components/forms/login-form.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/new-password-form.vue b/storefront/src/components/forms/new-password-form.vue deleted file mode 100644 index 668d1e4a..00000000 --- a/storefront/src/components/forms/new-password-form.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/register-form.vue b/storefront/src/components/forms/register-form.vue deleted file mode 100644 index 11143eb8..00000000 --- a/storefront/src/components/forms/register-form.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/reset-password-form.vue b/storefront/src/components/forms/reset-password-form.vue deleted file mode 100644 index e06635db..00000000 --- a/storefront/src/components/forms/reset-password-form.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/forms/update-form.vue b/storefront/src/components/forms/update-form.vue deleted file mode 100644 index 47d789ed..00000000 --- a/storefront/src/components/forms/update-form.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/home/home-brands.vue b/storefront/src/components/home/home-brands.vue deleted file mode 100644 index ad42cd63..00000000 --- a/storefront/src/components/home/home-brands.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/home/home-collection-inner.vue b/storefront/src/components/home/home-collection-inner.vue deleted file mode 100644 index 056f9bef..00000000 --- a/storefront/src/components/home/home-collection-inner.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/home/home-collection.vue b/storefront/src/components/home/home-collection.vue deleted file mode 100644 index 5d84a3ad..00000000 --- a/storefront/src/components/home/home-collection.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/home/home-hero.vue b/storefront/src/components/home/home-hero.vue deleted file mode 100644 index cfe16835..00000000 --- a/storefront/src/components/home/home-hero.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/skeletons/header/header-search-skeleton.vue b/storefront/src/components/skeletons/header/header-search-skeleton.vue deleted file mode 100644 index 5db3e08a..00000000 --- a/storefront/src/components/skeletons/header/header-search-skeleton.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/skeletons/ui/counter-skeleton.vue b/storefront/src/components/skeletons/ui/counter-skeleton.vue deleted file mode 100644 index 2ef63c1c..00000000 --- a/storefront/src/components/skeletons/ui/counter-skeleton.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/skeletons/ui/language-switcher-skeleton.vue b/storefront/src/components/skeletons/ui/language-switcher-skeleton.vue deleted file mode 100644 index 2acdff84..00000000 --- a/storefront/src/components/skeletons/ui/language-switcher-skeleton.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-button.vue b/storefront/src/components/ui/ui-button.vue deleted file mode 100644 index 3738ffa9..00000000 --- a/storefront/src/components/ui/ui-button.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-checkbox.vue b/storefront/src/components/ui/ui-checkbox.vue deleted file mode 100644 index 7a0eaa70..00000000 --- a/storefront/src/components/ui/ui-checkbox.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-counter.vue b/storefront/src/components/ui/ui-counter.vue deleted file mode 100644 index bebfad99..00000000 --- a/storefront/src/components/ui/ui-counter.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-input.vue b/storefront/src/components/ui/ui-input.vue deleted file mode 100644 index bb1873f0..00000000 --- a/storefront/src/components/ui/ui-input.vue +++ /dev/null @@ -1,148 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-language-switcher.vue b/storefront/src/components/ui/ui-language-switcher.vue deleted file mode 100644 index d54df044..00000000 --- a/storefront/src/components/ui/ui-language-switcher.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/ui/ui-link.vue b/storefront/src/components/ui/ui-link.vue deleted file mode 100644 index b5901c5f..00000000 --- a/storefront/src/components/ui/ui-link.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/composables/auth/useLogin.js b/storefront/src/composables/auth/useLogin.js deleted file mode 100644 index 1f369233..00000000 --- a/storefront/src/composables/auth/useLogin.js +++ /dev/null @@ -1,93 +0,0 @@ -import {useMutation} from "@vue/apollo-composable"; -import {LOGIN} from "@/graphql/mutations/auth.js"; -import {ref} from "vue"; -import {ElNotification} from "element-plus"; -import {useI18n} from "vue-i18n"; -import {useUserStore} from "@/stores/user.js"; -import translations from "@/core/helpers/translations.js"; -import { - DEFAULT_LOCALE, LOCALE_STORAGE_ACCESS_TOKEN_KEY, - LOCALE_STORAGE_LOCALE_KEY, - LOCALE_STORAGE_REFRESH_TOKEN_KEY, -} from "@/config/index.js"; -import {useRoute, useRouter} from "vue-router"; -import {usePendingOrder} from "@/composables/orders"; -import {useWishlist} from "@/composables/wishlist"; - -export function useLogin() { - const router = useRouter(); - const route = useRoute(); - const userStore = useUserStore() - const {t} = useI18n(); - - const { mutate: loginMutation } = useMutation(LOGIN); - - const { getPendingOrder } = usePendingOrder(); - const { getWishlist } = useWishlist(); - - const loading = ref(false); - - async function login( - email, - password, - isStayLogin - ) { - loading.value = true; - - try { - const response = await loginMutation({ - email, - password - }); - - if (isStayLogin) { - localStorage.setItem(LOCALE_STORAGE_REFRESH_TOKEN_KEY, response.data.obtainJwtToken.refreshToken) - } - - if (response.data?.obtainJwtToken) { - userStore.setUser({ - user: response.data.obtainJwtToken.user - }); - localStorage.setItem(LOCALE_STORAGE_ACCESS_TOKEN_KEY, response.data.obtainJwtToken.accessToken) - - ElNotification({ - message: t('popup.success.login'), - type: 'success' - }) - - await router.push({ - name: 'home', - params: { - locale: localStorage.getItem(LOCALE_STORAGE_LOCALE_KEY) || DEFAULT_LOCALE - } - }) - - if (response.data.obtainJwtToken.user.language !== translations.currentLocale) { - translations.switchLanguage(response.data.obtainJwtToken.user.language, router, route) - } - - await getPendingOrder(response.data.obtainJwtToken.user.email); - await getWishlist(); - } - } catch (error) { - console.error("useLogin error:", error); - - const errorMessage = error.graphQLErrors?.[0]?.message || - error.message || - t('popup.errors.defaultError'); - - ElNotification({ - title: t('popup.errors.main'), - message: errorMessage, - type: 'error' - }); - } finally { - loading.value = false; - } - } - - return { - login, - loading - }; -} \ No newline at end of file diff --git a/storefront/src/composables/auth/useLogout.js b/storefront/src/composables/auth/useLogout.js deleted file mode 100644 index 2112df34..00000000 --- a/storefront/src/composables/auth/useLogout.js +++ /dev/null @@ -1,33 +0,0 @@ -import {useUserStore} from "@/stores/user.js"; -import { - DEFAULT_LOCALE, LOCALE_STORAGE_ACCESS_TOKEN_KEY, - LOCALE_STORAGE_LOCALE_KEY, - LOCALE_STORAGE_REFRESH_TOKEN_KEY -} from "@/config/index.js"; -import {useRouter} from "vue-router"; - -export function useLogout() { - const userStore = useUserStore() - const router = useRouter() - - async function logout() { - userStore.setUser({ - user: null, - accessToken: null - }) - - localStorage.removeItem(LOCALE_STORAGE_REFRESH_TOKEN_KEY) - localStorage.removeItem(LOCALE_STORAGE_ACCESS_TOKEN_KEY) - - await router.push({ - name: 'home', - params: { - locale: localStorage.getItem(LOCALE_STORAGE_LOCALE_KEY) || DEFAULT_LOCALE - } - }) - } - - return { - logout - }; -} \ No newline at end of file diff --git a/storefront/src/composables/auth/useRefresh.js b/storefront/src/composables/auth/useRefresh.js deleted file mode 100644 index 64e377a0..00000000 --- a/storefront/src/composables/auth/useRefresh.js +++ /dev/null @@ -1,74 +0,0 @@ -import {useMutation} from "@vue/apollo-composable"; -import {REFRESH} from "@/graphql/mutations/auth.js"; -import {computed, ref} from "vue"; -import {ElNotification} from "element-plus"; -import {useI18n} from "vue-i18n"; -import {useUserStore} from "@/stores/user.js"; -import {LOCALE_STORAGE_REFRESH_TOKEN_KEY} from "@/config/index.js"; -import {useRoute, useRouter} from "vue-router"; -import translations from "@/core/helpers/translations.js"; -import {usePendingOrder} from "@/composables/orders"; -import {useWishlist} from "@/composables/wishlist"; - -export function useRefresh() { - const router = useRouter() - const route = useRoute() - const userStore = useUserStore() - const {t} = useI18n(); - - const { mutate: refreshMutation } = useMutation(REFRESH); - - const { getPendingOrder } = usePendingOrder(); - const { getWishlist } = useWishlist(); - - const loading = ref(false); - - async function refresh() { - loading.value = true; - - const refreshToken = computed(() => localStorage.getItem(LOCALE_STORAGE_REFRESH_TOKEN_KEY)) - - if (!refreshToken.value) return - - try { - const response = await refreshMutation({ - refreshToken: refreshToken.value - }); - - if (response.data?.refreshJwtToken) { - userStore.setUser({ - user: response.data.refreshJwtToken.user, - accessToken: response.data.refreshJwtToken.accessToken - }) - - if (response.data.refreshJwtToken.user.language !== translations.currentLocale) { - translations.switchLanguage(response.data.refreshJwtToken.user.language, router, route) - } - - localStorage.setItem(LOCALE_STORAGE_REFRESH_TOKEN_KEY, response.data.refreshJwtToken.refreshToken) - - await getPendingOrder(response.data.refreshJwtToken.user.email); - await getWishlist(); - } - } catch (error) { - console.error("useRefresh error:", error); - - const errorMessage = error.graphQLErrors?.[0]?.message || - error.message || - t('popup.errors.defaultError'); - - ElNotification({ - title: t('popup.errors.main'), - message: errorMessage, - type: 'error' - }); - } finally { - loading.value = false; - } - } - - return { - refresh, - loading - }; -} \ No newline at end of file diff --git a/storefront/src/composables/brands/index.js b/storefront/src/composables/brands/index.js deleted file mode 100644 index 2d6fedbf..00000000 --- a/storefront/src/composables/brands/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useBrands' -export * from './useBrandByUuid' \ No newline at end of file diff --git a/storefront/src/composables/brands/useBrandByUuid.js b/storefront/src/composables/brands/useBrandByUuid.js deleted file mode 100644 index 3db8f3c8..00000000 --- a/storefront/src/composables/brands/useBrandByUuid.js +++ /dev/null @@ -1,24 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import {computed} from "vue"; -import {GET_BRAND_BY_UUID} from "@/graphql/queries/brands.js"; - -export function useBrandByUuid() { - const { result, loading, error, load } = useLazyQuery(GET_BRAND_BY_UUID); - - const brand = computed(() => result.value?.brands.edges[0].node ?? []); - - if (error.value) { - console.error("usePostbySlug error:", error.value); - } - - const getBrand = (uuid) => { - return load(null, { uuid }); - }; - - return { - brand, - loading, - error, - getBrand - }; -} \ No newline at end of file diff --git a/storefront/src/composables/brands/useBrands.js b/storefront/src/composables/brands/useBrands.js deleted file mode 100644 index 799a2963..00000000 --- a/storefront/src/composables/brands/useBrands.js +++ /dev/null @@ -1,20 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import {computed} from "vue"; -import {GET_BRANDS} from "@/graphql/queries/brands.js"; - -export function useBrands() { - const { result, loading, error, load } = useLazyQuery(GET_BRANDS); - - const brands = computed(() => result.value?.brands.edges ?? []); - - if (error.value) { - console.error("useBrands error:", error.value); - } - - return { - brands, - loading, - error, - getBrands: load - }; -} \ No newline at end of file diff --git a/storefront/src/composables/categories/useCategorybySlug.js b/storefront/src/composables/categories/useCategorybySlug.js deleted file mode 100644 index ab6c59f2..00000000 --- a/storefront/src/composables/categories/useCategorybySlug.js +++ /dev/null @@ -1,24 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import {computed} from "vue"; -import {GET_CATEGORY_BY_SLUG} from "@/graphql/queries/categories.js"; - -export function useCategorybySlug() { - const { result, loading, error, load } = useLazyQuery(GET_CATEGORY_BY_SLUG); - - const category = computed(() => result.value?.categories.edges[0].node ?? []); - - if (error.value) { - console.error("useCategorybySlug error:", error.value); - } - - const getCategory = (slug) => { - return load(null, { slug }); - }; - - return { - category, - loading, - error, - getCategory - }; -} \ No newline at end of file diff --git a/storefront/src/composables/company/index.js b/storefront/src/composables/company/index.js deleted file mode 100644 index 1b3ed723..00000000 --- a/storefront/src/composables/company/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from './useCompanyInfo'; \ No newline at end of file diff --git a/storefront/src/composables/company/useCompanyInfo.js b/storefront/src/composables/company/useCompanyInfo.js deleted file mode 100644 index fb3ddf69..00000000 --- a/storefront/src/composables/company/useCompanyInfo.js +++ /dev/null @@ -1,34 +0,0 @@ -import { ref } from 'vue'; -import { request } from 'graphql-request'; -import {GET_COMPANY_INFO} from "@/graphql/queries/company.js"; -import { setCompanyInfo } from '@/stores/company.js'; -import {APP_API_DOMAIN} from "@/config/index.js"; - -export function useCompanyInfo() { - const company = ref(null); - const loading = ref(false); - const error = ref(null); - - const getCompanyInfo = async () => { - loading.value = true; - error.value = null; - - try { - const data = await request(APP_API_DOMAIN, GET_COMPANY_INFO); - company.value = data.parameters; - setCompanyInfo(data.parameters); - } catch (err) { - error.value = err; - console.error('useCompanyInfo error:', err); - } finally { - loading.value = false; - } - }; - - return { - company, - loading, - error, - getCompanyInfo - }; -} \ No newline at end of file diff --git a/storefront/src/composables/languages/index.js b/storefront/src/composables/languages/index.js deleted file mode 100644 index c4fc3ca9..00000000 --- a/storefront/src/composables/languages/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useLanguageSwitch.js' -export * from './useLanguages' \ No newline at end of file diff --git a/storefront/src/composables/languages/useLanguageSwitch.js b/storefront/src/composables/languages/useLanguageSwitch.js deleted file mode 100644 index dcc1a544..00000000 --- a/storefront/src/composables/languages/useLanguageSwitch.js +++ /dev/null @@ -1,62 +0,0 @@ -import {useMutation} from "@vue/apollo-composable"; -import {computed, ref} from "vue"; -import {ElNotification} from "element-plus"; -import {useI18n} from "vue-i18n"; -import {useUserStore} from "@/stores/user.js"; -import translations from "@/core/helpers/translations.js"; -import {SWITCH_LANGUAGE} from "@/graphql/mutations/languages.js"; -import {LOCALE_STORAGE_ACCESS_TOKEN_KEY} from "@/config/index.js"; - -export function useLanguageSwitch() { - const userStore = useUserStore() - const {t} = useI18n(); - - const { mutate: languageSwitchMutation } = useMutation(SWITCH_LANGUAGE); - - const accessToken = computed(() => localStorage.getItem(LOCALE_STORAGE_ACCESS_TOKEN_KEY)) - const userUuid = computed(() => userStore.user?.uuid) - - const loading = ref(false); - - async function switchLanguage( - locale - ) { - loading.value = true; - - try { - translations.switchLanguage(locale) - if (accessToken.value) { - const response = await languageSwitchMutation( - userUuid.value, - locale - ); - - if (response.data?.updateUser) { - userStore.setUser({ - user: response.data.updateUser.user, - accessToken: accessToken.value - }) - } - } - } catch (error) { - console.error("useLanguageSet error:", error); - - const errorMessage = error.graphQLErrors?.[0]?.message || - error.message || - t('popup.errors.defaultError'); - - ElNotification({ - title: t('popup.errors.main'), - message: errorMessage, - type: 'error' - }); - } finally { - loading.value = false; - } - } - - return { - switchLanguage, - loading - }; -} \ No newline at end of file diff --git a/storefront/src/composables/languages/useLanguages.js b/storefront/src/composables/languages/useLanguages.js deleted file mode 100644 index 3410e144..00000000 --- a/storefront/src/composables/languages/useLanguages.js +++ /dev/null @@ -1,35 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import {watchEffect} from "vue"; -import {GET_LANGUAGES} from "@/graphql/queries/languages.js"; -import {useLanguageStore} from "@/stores/languages.js"; -import {LOCALE_STORAGE_LOCALE_KEY, SUPPORTED_LOCALES} from "@/config/index.js"; - -export function useLanguages() { - const languageStore = useLanguageStore() - - const { result, loading, error, load } = useLazyQuery(GET_LANGUAGES); - - if (error.value) { - console.error("useLanguages error:", error.value); - } - - watchEffect(() => { - if (result.value?.languages) { - languageStore.setLanguages( - result.value.languages.filter((locale) => - SUPPORTED_LOCALES.some(supportedLocale => - supportedLocale.code === locale.code - ) - ) - ); - - languageStore.setCurrentLocale(languageStore.languages.find((locale) => locale.code === localStorage.getItem(LOCALE_STORAGE_LOCALE_KEY))) - } - }); - - return { - loading, - error, - getLanguages: load - }; -} \ No newline at end of file diff --git a/storefront/src/composables/products/index.js b/storefront/src/composables/products/index.js deleted file mode 100644 index ee8f9679..00000000 --- a/storefront/src/composables/products/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './useProducts' -export * from './useProductBySlug' -export * from './useProductTags' \ No newline at end of file diff --git a/storefront/src/composables/products/useProductTags.js b/storefront/src/composables/products/useProductTags.js deleted file mode 100644 index b7208865..00000000 --- a/storefront/src/composables/products/useProductTags.js +++ /dev/null @@ -1,20 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import {computed} from "vue"; -import {GET_PRODUCT_BY_SLUG, GET_PRODUCT_TAGS} from "@/graphql/queries/products.js"; - -export function useProductTags() { - const { result, loading, error, load } = useLazyQuery(GET_PRODUCT_TAGS); - - const tags = computed(() => result.value?.productTags.edges ?? []); - - if (error.value) { - console.error("useProductTags error:", error.value); - } - - return { - tags, - loading, - error, - getProductTags: load - }; -} \ No newline at end of file diff --git a/storefront/src/composables/products/useProducts.js b/storefront/src/composables/products/useProducts.js deleted file mode 100644 index 1b780cd7..00000000 --- a/storefront/src/composables/products/useProducts.js +++ /dev/null @@ -1,47 +0,0 @@ -import { useLazyQuery } from "@vue/apollo-composable"; -import { computed, ref } from "vue"; -import { GET_PRODUCTS } from "@/graphql/queries/products.js"; - -export function useProducts() { - const variables = ref({ - first: 12 - }); - - const { result, loading, error, load } = useLazyQuery( - GET_PRODUCTS, - () => variables.value - ); - - const products = computed(() => result.value?.products.edges ?? []); - const pageInfo = computed(() => result.value?.products.pageInfo ?? {}); - - if (error.value) { - console.error("useProducts error:", error.value); - } - - const getProducts = async (params = {}) => { - const newVariables = { ...variables.value }; - - Object.entries(params).forEach(([key, value]) => { - if (value !== undefined && value !== null && value !== '') { - newVariables[key] = value; - } - }); - - variables.value = newVariables; - - if (result.value) { - await refetch(); - } else { - await load(); - } - }; - - return { - products, - pageInfo, - loading, - error, - getProducts - }; -} \ No newline at end of file diff --git a/storefront/src/composables/search/index.js b/storefront/src/composables/search/index.js deleted file mode 100644 index f820eff6..00000000 --- a/storefront/src/composables/search/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './useSearch' -export * from './useSearchUi' \ No newline at end of file diff --git a/storefront/src/composables/search/useSearch.js b/storefront/src/composables/search/useSearch.js deleted file mode 100644 index 31b59499..00000000 --- a/storefront/src/composables/search/useSearch.js +++ /dev/null @@ -1,52 +0,0 @@ -import {useMutation} from "@vue/apollo-composable"; -import {ref} from "vue"; -import {ElNotification} from "element-plus"; -import {useI18n} from "vue-i18n"; -import {SEARCH} from "@/graphql/mutations/search.js"; - -export function useSearch() { - const {t} = useI18n(); - - const { mutate: searchMutation } = useMutation(SEARCH); - - const loading = ref(false); - const searchResults = ref(null); - - async function search( - query - ) { - loading.value = true; - searchResults.value = null; - - try { - const response = await searchMutation({ - query - }); - - if (response.data?.search) { - searchResults.value = response.data.search.results; - return response.data.search; - } - } catch (error) { - console.error("useSearch error:", error); - - const errorMessage = error.graphQLErrors?.[0]?.message || - error.message || - t('popup.errors.defaultError'); - - ElNotification({ - title: t('popup.errors.main'), - message: errorMessage, - type: 'error' - }); - } finally { - loading.value = false; - } - } - - return { - search, - loading, - searchResults - }; -} \ No newline at end of file diff --git a/storefront/src/composables/search/useSearchUi.js b/storefront/src/composables/search/useSearchUi.js deleted file mode 100644 index 7ac86f79..00000000 --- a/storefront/src/composables/search/useSearchUi.js +++ /dev/null @@ -1,67 +0,0 @@ -import { computed, ref, watch } from 'vue'; -import { useSearch } from './useSearch.js'; -import { useDebounceFn } from '@vueuse/core'; - -export function useSearchUI() { - const query = ref(''); - const isSearchActive = ref(false); - const { search, loading, searchResults } = useSearch(); - - const filteredSearchResults = computed(() => { - if (!searchResults.value) return {}; - - return Object.entries(searchResults.value) - .reduce((acc, [category, blocks]) => { - if (blocks.length > 0) { - acc[category] = blocks; - } - return acc; - }, {}); - }); - - const hasResults = computed(() => { - if (!searchResults.value) return false; - - return Object.keys(searchResults.value).some(key => { - return Array.isArray(searchResults.value[key]) && - searchResults.value[key].length > 0; - }); - }); - - function getBlockTitle(category) { - return category.charAt(0).toUpperCase() + category.slice(1); - } - - function clearSearch() { - query.value = ''; - searchResults.value = null; - } - - function toggleSearch(value) { - isSearchActive.value = value !== undefined ? value : !isSearchActive.value; - } - - const debouncedSearch = useDebounceFn(async () => { - if (query.value) { - await search(query.value); - } else { - searchResults.value = null; - } - }, 750); - - watch(() => query.value, async () => { - await debouncedSearch(); - }, { immediate: false }); - - return { - query, - isSearchActive, - loading, - searchResults, - filteredSearchResults, - hasResults, - getBlockTitle, - clearSearch, - toggleSearch - }; -} \ No newline at end of file diff --git a/storefront/src/composables/user/useUserUpdating.js b/storefront/src/composables/user/useUserUpdating.js deleted file mode 100644 index d4b012cc..00000000 --- a/storefront/src/composables/user/useUserUpdating.js +++ /dev/null @@ -1,121 +0,0 @@ -import {useMutation} from "@vue/apollo-composable"; -import {computed, ref} from "vue"; -import {ElNotification} from "element-plus"; -import {useI18n} from "vue-i18n"; -import {useUserStore} from "@/stores/user.js"; -import translations from "@/core/helpers/translations.js"; -import {useRoute, useRouter} from "vue-router"; -import {useLogout} from "@/composables/auth"; -import {UPDATE_USER} from "@/graphql/mutations/user.js"; -import {LOCALE_STORAGE_ACCESS_TOKEN_KEY} from "@/config/index.js"; - -export function useUserUpdating() { - const router = useRouter(); - const route = useRoute(); - const userStore = useUserStore() - const {t} = useI18n(); - - const { mutate: userUpdatingMutation } = useMutation(UPDATE_USER); - - const { logout } = useLogout(); - - const accessToken = computed(() => localStorage.getItem(LOCALE_STORAGE_ACCESS_TOKEN_KEY)) - const userUuid = computed(() => userStore.user?.uuid) - const userEmail = computed(() => userStore.user?.email) - - const loading = ref(false); - - async function updateUser( - firstName, - lastName, - email, - phoneNumber, - password, - confirmPassword - ) { - loading.value = true; - - try { - const fields = { - uuid: userUuid.value, - firstName, - lastName, - email, - phoneNumber, - password, - confirmPassword - }; - - const params = Object.fromEntries( - Object.entries(fields).filter(([_, value]) => - value !== undefined && value !== null && value !== '' - ) - ); - - // if (('password' in params && !('passwordConfirm' in params)) || - // (!('password' in params) && 'passwordConfirm' in params)) { - // ElNotification({ - // title: t('popup.errors.main'), - // message: t('popup.errors.noDataToUpdate'), - // type: 'error' - // }); - // } - - if (Object.keys(params).length === 0) { - ElNotification({ - title: t('popup.errors.main'), - message: t('popup.errors.noDataToUpdate'), - type: 'error' - }); - } - - const response = await userUpdatingMutation( - params - ); - - if (response.data?.updateUser) { - if (userEmail.value !== email) { - await logout() - - ElNotification({ - message: t("popup.success.confirmEmail"), - type: "success" - }); - } else { - userStore.setUser({ - user: response.data.updateUser.user, - accessToken: accessToken.value - }) - - ElNotification({ - message: t("popup.successUpdate"), - type: "success" - }); - - if (response.data.updateUser.user.language !== translations.currentLocale) { - translations.switchLanguage(response.data.updateUser.user.language, router, route) - } - } - } - } catch (error) { - console.error("useUserUpdating error:", error); - - const errorMessage = error.graphQLErrors?.[0]?.message || - error.message || - t('popup.errors.defaultError'); - - ElNotification({ - title: t('popup.errors.main'), - message: errorMessage, - type: 'error' - }); - } finally { - loading.value = false; - } - } - - return { - updateUser, - loading - }; -} \ No newline at end of file diff --git a/storefront/src/config/index.js b/storefront/src/config/index.js deleted file mode 100644 index 53202063..00000000 --- a/storefront/src/config/index.js +++ /dev/null @@ -1,88 +0,0 @@ -// APP - -export const APP_NAME = import.meta.env.EVIBES_PROJECT_NAME - -export const APP_NAME_KEY = APP_NAME.toLowerCase() - - - -// LOCALES - -export const SUPPORTED_LOCALES = [ - { - code: 'en-gb', - default: true - }, - { - code: 'ar-ar', - default: false - }, - { - code: 'cs-cz', - default: false - }, - { - code: 'da-dk', - default: false - }, - { - code: 'de-de', - default: false - }, - { - code: 'en-us', - default: false - }, - { - code: 'es-es', - default: false - }, - { - code: 'fr-fr', - default: false - }, - { - code: 'it-it', - default: false - }, - { - code: 'ja-jp', - default: false - }, - { - code: 'nl-nl', - default: false - }, - { - code: 'pl-pl', - default: false - }, - { - code: 'pt-br', - default: false - }, - { - code: 'ro-ro', - default: false - }, - { - code: 'ru-ru', - default: false - }, - { - code: 'zh-hans', - default: false - } -] - -export const DEFAULT_LOCALE = SUPPORTED_LOCALES.find(locale => locale.default)?.code || 'en-gb' - - - -// LOCAL STORAGE - -export const LOCALE_STORAGE_LOCALE_KEY = `${APP_NAME_KEY}-user-locale`; - -export const LOCALE_STORAGE_REFRESH_TOKEN_KEY = `${APP_NAME_KEY}-refresh`; - -export const LOCALE_STORAGE_ACCESS_TOKEN_KEY = `${APP_NAME_KEY}-access`; \ No newline at end of file diff --git a/storefront/src/graphql/fragments/brands.fragment.js b/storefront/src/graphql/fragments/brands.fragment.js deleted file mode 100644 index dabebbb9..00000000 --- a/storefront/src/graphql/fragments/brands.fragment.js +++ /dev/null @@ -1,8 +0,0 @@ -import gql from 'graphql-tag' - -export const BRAND_FRAGMENT = gql` - fragment Brand on BrandType { - uuid - name - } -` \ No newline at end of file diff --git a/storefront/src/graphql/fragments/categories.fragment.js b/storefront/src/graphql/fragments/categories.fragment.js deleted file mode 100644 index 3ed77f9d..00000000 --- a/storefront/src/graphql/fragments/categories.fragment.js +++ /dev/null @@ -1,11 +0,0 @@ -import gql from 'graphql-tag' - -export const CATEGORY_FRAGMENT = gql` - fragment Category on CategoryType { - name - uuid - image - description - slug - } -` \ No newline at end of file diff --git a/storefront/src/graphql/fragments/orders.fragment.js b/storefront/src/graphql/fragments/orders.fragment.js deleted file mode 100644 index 98e13e78..00000000 --- a/storefront/src/graphql/fragments/orders.fragment.js +++ /dev/null @@ -1,28 +0,0 @@ -import gql from 'graphql-tag' -import {PRODUCT_FRAGMENT} from "@/graphql/fragments/products.fragment.js"; - -export const ORDER_FRAGMENT = gql` - fragment Order on OrderType { - totalPrice - uuid - status - buyTime - totalPrice - humanReadableId - orderProducts { - edges { - node { - uuid - notifications - attributes - quantity - status - product { - ...Product - } - } - } - } - } - ${PRODUCT_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/fragments/products.fragment.js b/storefront/src/graphql/fragments/products.fragment.js deleted file mode 100644 index 2fa0c4b9..00000000 --- a/storefront/src/graphql/fragments/products.fragment.js +++ /dev/null @@ -1,53 +0,0 @@ -import gql from 'graphql-tag' - -export const PRODUCT_FRAGMENT = gql` - fragment Product on ProductType { - uuid - name - price - quantity - slug - category { - name - } - images { - edges { - node { - image - } - } - } - attributeGroups { - edges { - node { - name - uuid - attributes { - name - uuid - values { - value - uuid - } - } - } - } - } - feedbacks { - edges { - node { - uuid - rating - } - } - } - tags { - edges { - node { - tagName - name - } - } - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/fragments/user.fragment.js b/storefront/src/graphql/fragments/user.fragment.js deleted file mode 100644 index 1b45bc88..00000000 --- a/storefront/src/graphql/fragments/user.fragment.js +++ /dev/null @@ -1,17 +0,0 @@ -import gql from 'graphql-tag' - -export const USER_FRAGMENT = gql` - fragment User on UserType { - avatar - uuid - attributes - language - email - firstName - lastName - phoneNumber - balance { - amount - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/fragments/wishlist.fragment.js b/storefront/src/graphql/fragments/wishlist.fragment.js deleted file mode 100644 index b79d86ca..00000000 --- a/storefront/src/graphql/fragments/wishlist.fragment.js +++ /dev/null @@ -1,16 +0,0 @@ -import gql from 'graphql-tag' -import {PRODUCT_FRAGMENT} from "@/graphql/fragments/products.fragment.js"; - -export const WISHLIST_FRAGMENT = gql` - fragment Wishlist on WishlistType { - uuid - products { - edges { - node { - ...Product - } - } - } - } - ${PRODUCT_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/auth.js b/storefront/src/graphql/mutations/auth.js deleted file mode 100644 index 250d6071..00000000 --- a/storefront/src/graphql/mutations/auth.js +++ /dev/null @@ -1,90 +0,0 @@ -import gql from 'graphql-tag' -import {USER_FRAGMENT} from "@/graphql/fragments/user.fragment.js"; - -export const REGISTER = gql` - mutation register( - $firstName: String!, - $lastName: String!, - $email: String!, - $phoneNumber: String!, - $password: String!, - $confirmPassword: String! - ) { - createUser( - firstName: $firstName, - lastName: $lastName, - email: $email, - phoneNumber: $phoneNumber, - password: $password, - confirmPassword: $confirmPassword - ) { - success - } - } -` - -export const LOGIN = gql` - mutation login( - $email: String!, - $password: String! - ) { - obtainJwtToken( - email: $email, - password: $password - ) { - accessToken - refreshToken - user { - ...User - } - } - } - ${USER_FRAGMENT} -` - -export const REFRESH = gql` - mutation refresh( - $refreshToken: String! - ) { - refreshJwtToken( - refreshToken: $refreshToken - ) { - accessToken - refreshToken - user { - ...User - } - } - } - ${USER_FRAGMENT} -` - -export const RESET_PASSWORD = gql` - mutation resetPassword( - $email: String!, - ) { - resetPassword( - email: $email, - ) { - success - } - } -` - -export const NEW_PASSWORD = gql` - mutation confirmResetPassword( - $password: String!, - $confirmPassword: String!, - $token: String!, - $uid: String!, - ) { - confirmResetPassword( - password: $password, - confirmPassword: $confirmPassword, - token: $token, - uid: $uid - ) { - success - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/cart.js b/storefront/src/graphql/mutations/cart.js deleted file mode 100644 index b1534d2e..00000000 --- a/storefront/src/graphql/mutations/cart.js +++ /dev/null @@ -1,68 +0,0 @@ -import gql from 'graphql-tag' -import {ORDER_FRAGMENT} from "@/graphql/fragments/orders.fragment.js"; - -export const ADD_TO_CART = gql` - mutation addToCart( - $orderUuid: String!, - $productUuid: String! - ) { - addOrderProduct( - orderUuid: $orderUuid, - productUuid: $productUuid - ) { - order { - ...Order - } - } - } - ${ORDER_FRAGMENT} -` - -export const REMOVE_FROM_CART = gql` - mutation removeFromCart( - $orderUuid: String!, - $productUuid: String! - ) { - removeOrderProduct( - orderUuid: $orderUuid, - productUuid: $productUuid - ) { - order { - ...Order - } - } - } - ${ORDER_FRAGMENT} -` - -export const REMOVE_KIND_FROM_CART = gql` - mutation removeKindFromCart( - $orderUuid: String!, - $productUuid: String! - ) { - removeOrderProductsOfAKind( - orderUuid: $orderUuid, - productUuid: $productUuid - ) { - order { - ...Order - } - } - } - ${ORDER_FRAGMENT} -` - -export const REMOVE_ALL_FROM_CART = gql` - mutation removeAllFromCart( - $orderUuid: String! - ) { - removeAllOrderProducts( - orderUuid: $orderUuid - ) { - order { - ...Order - } - } - } - ${ORDER_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/contact.js b/storefront/src/graphql/mutations/contact.js deleted file mode 100644 index c825ab2f..00000000 --- a/storefront/src/graphql/mutations/contact.js +++ /dev/null @@ -1,22 +0,0 @@ -import gql from 'graphql-tag' - -export const CONTACT_US = gql` - mutation contactUs( - $name: String!, - $email: String!, - $phoneNumber: String, - $subject: String!, - $message: String!, - ) { - contactUs( - name: $name, - email: $email, - phoneNumber: $phoneNumber, - subject: $subject, - message: $message - ) { - error - received - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/deposit.js b/storefront/src/graphql/mutations/deposit.js deleted file mode 100644 index 34538012..00000000 --- a/storefront/src/graphql/mutations/deposit.js +++ /dev/null @@ -1,14 +0,0 @@ -import gql from 'graphql-tag' - -export const DEPOSIT = gql` - mutation deposit( - $amount: Number! - ) { - contactUs( - amount: $amount, - ) { - error - received - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/languages.js b/storefront/src/graphql/mutations/languages.js deleted file mode 100644 index a35164ef..00000000 --- a/storefront/src/graphql/mutations/languages.js +++ /dev/null @@ -1,17 +0,0 @@ -import gql from "graphql-tag"; - -export const SWITCH_LANGUAGE = gql` - mutation setlanguage( - $uuid: UUID!, - $language: String, - ) { - updateUser( - uuid: $uuid, - language: $language - ) { - user { - ...User - } - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/search.js b/storefront/src/graphql/mutations/search.js deleted file mode 100644 index 532dad3c..00000000 --- a/storefront/src/graphql/mutations/search.js +++ /dev/null @@ -1,34 +0,0 @@ -import gql from "graphql-tag"; - -export const SEARCH = gql` - mutation search( - $query: String! - ) { - search( - query: $query - ) { - results { - brands { - uuid - slug - name - } - categories { - name - slug - uuid - } - posts { - uuid - slug - name - } - products { - name - slug - uuid - } - } - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/user.js b/storefront/src/graphql/mutations/user.js deleted file mode 100644 index 89f075e6..00000000 --- a/storefront/src/graphql/mutations/user.js +++ /dev/null @@ -1,41 +0,0 @@ -import gql from 'graphql-tag' - -export const ACTIVATE_USER = gql` - mutation activateUser( - $token: String!, - $uid: String! - ) { - activateUser( - token: $token, - uid: $uid - ) { - success - } - } -` - -export const UPDATE_USER = gql` - mutation updateUser( - $uuid: UUID!, - $firstName: String, - $lastName: String, - $email: String, - $phoneNumber: String, - $password: String, - $confirmPassword: String, - ) { - updateUser( - uuid: $uuid, - firstName: $firstName, - lastName: $lastName, - email: $email, - phoneNumber: $phoneNumber, - password: $password, - confirmPassword: $confirmPassword, - ) { - user { - ...User - } - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/mutations/wishlist.js b/storefront/src/graphql/mutations/wishlist.js deleted file mode 100644 index 076974bf..00000000 --- a/storefront/src/graphql/mutations/wishlist.js +++ /dev/null @@ -1,51 +0,0 @@ -import gql from 'graphql-tag' -import {WISHLIST_FRAGMENT} from "@/graphql/fragments/wishlist.fragment.js"; - -export const ADD_TO_WISHLIST = gql` - mutation addToWishlist( - $wishlistUuid: String!, - $productUuid: String! - ) { - addWishlistProduct( - wishlistUuid: $wishlistUuid, - productUuid: $productUuid - ) { - wishlist { - ...Wishlist - } - } - } - ${WISHLIST_FRAGMENT} -` - -export const REMOVE_FROM_WISHLIST = gql` - mutation removeFromWishlist( - $wishlistUuid: String!, - $productUuid: String! - ) { - removeWishlistProduct( - wishlistUuid: $wishlistUuid, - productUuid: $productUuid - ) { - wishlist { - ...Wishlist - } - } - } - ${WISHLIST_FRAGMENT} -` - -export const REMOVE_ALL_FROM_WISHLIST = gql` - mutation removeAllFromWishlist( - $wishlistUuid: String! - ) { - removeAllWishlistProducts( - wishlistUuid: $wishlistUuid - ) { - wishlist { - ...Wishlist - } - } - } - ${WISHLIST_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/blog.js b/storefront/src/graphql/queries/blog.js deleted file mode 100644 index 975a0e7b..00000000 --- a/storefront/src/graphql/queries/blog.js +++ /dev/null @@ -1,29 +0,0 @@ -import gql from 'graphql-tag' - -export const GET_POSTS = gql` - query getPosts { - posts { - edges { - node { - content - } - } - } - } -` - -export const GET_POST_BY_SLUG = gql` - query getPostBySlug( - $slug: String! - ) { - posts( - slug: $slug - ) { - edges { - node { - content - } - } - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/brands.js b/storefront/src/graphql/queries/brands.js deleted file mode 100644 index d906135e..00000000 --- a/storefront/src/graphql/queries/brands.js +++ /dev/null @@ -1,37 +0,0 @@ -import gql from 'graphql-tag' -import {BRAND_FRAGMENT} from "@/graphql/fragments/brands.fragment.js"; -import {CATEGORY_FRAGMENT} from "@/graphql/fragments/categories.fragment.js"; - -export const GET_BRANDS = gql` - query getBrands { - brands { - edges { - node { - ...Brand - } - } - } - } - ${BRAND_FRAGMENT} -` - -export const GET_BRAND_BY_UUID = gql` - query getBrandbyUuid( - $uuid: String! - ) { - brands( - uuid: $uuid - ) { - edges { - node { - ...Brand - categories { - ...Category - } - } - } - } - } - ${BRAND_FRAGMENT} - ${CATEGORY_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/categories.js b/storefront/src/graphql/queries/categories.js deleted file mode 100644 index cfc4bddf..00000000 --- a/storefront/src/graphql/queries/categories.js +++ /dev/null @@ -1,49 +0,0 @@ -import gql from 'graphql-tag' -import {CATEGORY_FRAGMENT} from "@/graphql/fragments/categories.fragment.js"; - -export const GET_CATEGORIES = gql` - query getCategories { - categories { - edges { - node { - ...Category - children { - ...Category - children { - ...Category - children { - ...Category - } - } - } - } - } - } - } - ${CATEGORY_FRAGMENT} -` - -export const GET_CATEGORY_BY_SLUG = gql` - query getCategoryBySlug( - $slug: String! - ) { - categories( - slug: $slug - ) { - edges { - node { - ...Category - filterableAttributes { - possibleValues - attributeName - } - minMaxPrices { - maxPrice - minPrice - } - } - } - } - } - ${CATEGORY_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/company.js b/storefront/src/graphql/queries/company.js deleted file mode 100644 index a6d26351..00000000 --- a/storefront/src/graphql/queries/company.js +++ /dev/null @@ -1,16 +0,0 @@ -import gql from 'graphql-tag' - -export const GET_COMPANY_INFO = gql` - query getCompanyInfo { - parameters { - companyAddress - companyName - companyPhoneNumber - emailFrom - emailHostUser - projectName - paymentGatewayMinimum - paymentGatewayMaximum - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/languages.js b/storefront/src/graphql/queries/languages.js deleted file mode 100644 index 6b14dee5..00000000 --- a/storefront/src/graphql/queries/languages.js +++ /dev/null @@ -1,11 +0,0 @@ -import gql from 'graphql-tag' - -export const GET_LANGUAGES = gql` - query getLanguages { - languages { - code - flag - name - } - } -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/orders.js b/storefront/src/graphql/queries/orders.js deleted file mode 100644 index 4011188c..00000000 --- a/storefront/src/graphql/queries/orders.js +++ /dev/null @@ -1,22 +0,0 @@ -import gql from 'graphql-tag' -import {ORDER_FRAGMENT} from "@/graphql/fragments/orders.fragment.js"; - -export const GET_ORDERS = gql` - query getOrders( - $status: String!, - $userEmail: String! - ) { - orders( - status: $status, - orderBy: "-buyTime", - userEmail: $userEmail - ) { - edges { - node { - ...Order - } - } - } - } - ${ORDER_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/products.js b/storefront/src/graphql/queries/products.js deleted file mode 100644 index 2b67960a..00000000 --- a/storefront/src/graphql/queries/products.js +++ /dev/null @@ -1,75 +0,0 @@ -import gql from 'graphql-tag' -import {PRODUCT_FRAGMENT} from "@/graphql/fragments/products.fragment.js"; - -export const GET_PRODUCTS = gql` - query getProducts( - $after: String, - $first: Int, - $categorySlugs: String, - $orderBy: String, - $minPrice: Decimal, - $maxPrice: Decimal, - $name: String - ) { - products( - after: $after, - first: $first, - categorySlugs: $categorySlugs, - orderBy: $orderBy, - minPrice: $minPrice, - maxPrice: $maxPrice, - name: $name - ) { - edges { - cursor - node { - ...Product - } - } - pageInfo { - hasNextPage - endCursor - } - } - } - ${PRODUCT_FRAGMENT} -` - -export const GET_PRODUCT_BY_SLUG = gql` - query getProductBySlug( - $slug: String! - ) { - products( - slug: $slug - ) { - edges { - node { - ...Product - } - } - } - } - ${PRODUCT_FRAGMENT} -` - -export const GET_PRODUCT_TAGS = gql` - query getProductTags { - productTags { - edges { - node { - uuid - name - tagName - productSet { - edges { - node { - ...Product - } - } - } - } - } - } - } - ${PRODUCT_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/graphql/queries/wishlist.js b/storefront/src/graphql/queries/wishlist.js deleted file mode 100644 index 99dc799b..00000000 --- a/storefront/src/graphql/queries/wishlist.js +++ /dev/null @@ -1,15 +0,0 @@ -import gql from 'graphql-tag' -import {WISHLIST_FRAGMENT} from "@/graphql/fragments/wishlist.fragment.js"; - -export const GET_WISHLIST = gql` - query getWishlist { - wishlists { - edges { - node { - ...Wishlist - } - } - } - } - ${WISHLIST_FRAGMENT} -` \ No newline at end of file diff --git a/storefront/src/layouts/default-layout.astro b/storefront/src/layouts/default-layout.astro deleted file mode 100644 index 362450af..00000000 --- a/storefront/src/layouts/default-layout.astro +++ /dev/null @@ -1,70 +0,0 @@ ---- -import BaseHeader from '@/components/base/header/base-header.vue' -import '@/assets/styles/global/fonts.scss' -import '@/assets/styles/main.scss' -import 'primeicons/primeicons.css' -import 'element-plus/dist/index.css' -import 'element-plus/theme-chalk/dark/css-vars.css' -import { useCompanyInfo } from '@/composables/company'; -import {COOKIES_LOCALE_KEY, SUPPORTED_LOCALES} from "@/config/index.js"; -import {useCookies} from "@vueuse/integrations/useCookies"; - -const cookie = useCookies(['/', null, null]) - -const { getCompanyInfo } = useCompanyInfo(); - -await getCompanyInfo() - -const { locale } = Astro.params; - -const availableLocales = SUPPORTED_LOCALES.map(locale => locale.code); -const currentLocale = availableLocales.includes(locale) ? locale : 'en-gb'; - -const translations = await import(`@/locales/${currentLocale}.json`); - -function t(path) { - const parts = path.split('.'); - let curr = translations; - for (const p of parts) { - if (curr && typeof curr === 'object' && p in curr) { - curr = curr[p]; - } else { - return path; - } - } - return curr; -} ---- - - - - - - - - Astro Basics - - - -
- -
- - - - diff --git a/storefront/src/locales/ar-ar.json b/storefront/src/locales/ar-ar.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/ar-ar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/cs-cz.json b/storefront/src/locales/cs-cz.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/cs-cz.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/da-dk.json b/storefront/src/locales/da-dk.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/da-dk.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/de-de.json b/storefront/src/locales/de-de.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/de-de.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/en-gb.json b/storefront/src/locales/en-gb.json deleted file mode 100644 index 48516e44..00000000 --- a/storefront/src/locales/en-gb.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "buttons": { - "login": "Login", - "register": "Register", - "addToCart": "Add To Cart", - "send": "Send", - "goEmail": "Take me to my inbox", - "logout": "Log Out", - "buy": "Buy Now", - "save": "Save", - "sendLink": "Send link", - "topUp": "Top up" - }, - "errors": { - "required": "This field is required!", - "mail": "Email must be valid!", - "compare": "Passwords don't match!", - "needLower": "Please include lowercase letter.", - "needUpper": "Please include uppercase letter.", - "needNumber": "Please include number.", - "needMin": "Min. 8 characters", - "needSpecial": "Please include a special character: #.?!$%^&*'()_+=:;\"'/>.<,|\\-", - "pageNotFound": "Page not found" - }, - "fields": { - "search": "Search", - "name": "Name", - "firstName": "First name", - "lastName": "Last name", - "phoneNumber": "Phone number", - "email": "Email", - "subject": "Subject", - "message": "Your message", - "password": "Password", - "newPassword": "New password", - "confirmPassword": "Confirm password", - "confirmNewPassword": "Confirm new password" - }, - "checkboxes": { - "remember": "Remember me" - }, - "popup": { - "errors": { - "main": "Error!", - "defaultError": "Something went wrong..", - "noDataToUpdate": "There is no data to update." - }, - "success": { - "login": "Sign in successes", - "register": "Account successfully created. Please confirm your Email before Sign In!", - "confirmEmail": "Verification E-mail link successfully sent!", - "reset": "If specified email exists in our system, we will send a password recovery email!", - "newPassword": "You have successfully changed your password!", - "contactUs": "Your message was sent successfully!" - }, - "addToCart": "{product} has been added to the cart!", - "addToCartLimit": "Total quantity limit is {quantity}!", - "failAdd": "Please log in to make a purchase", - "activationSuccess": "E-mail successfully verified. Please Sign In!", - "successUpdate": "Profile successfully updated!", - - "payment": "Your purchase is being processed! Please stand by", - "successCheckout": "Order purchase successful!", - "addToWishlist": "{product} has been added to the wishlist!" - }, - "header": { - "actions": { - "wishlist": "Wishlist", - "cart": "Cart", - "user": "Login" - }, - "search": { - "empty": "Nothing found" - }, - "catalogue": { - "title": "Catalogue" - } - }, - "home": { - "collection": { - "title": "Our collection", - "newTag": "New", - "cheapTag": "Low-budget" - } - }, - "forms": { - "login": { - "title": "Login", - "forgot": "Forgot password?", - "register": "Don't have an account?" - }, - "register": { - "title": "Register", - "login": "Do you have an account?" - }, - "reset": { - "title": "Reset password" - }, - "newPassword": { - "title": "New password" - } - }, - "cards": { - "product": { - "stock": "In stock: " - } - } -} \ No newline at end of file diff --git a/storefront/src/locales/en-us.json b/storefront/src/locales/en-us.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/en-us.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/es-es.json b/storefront/src/locales/es-es.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/es-es.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/fr-fr.json b/storefront/src/locales/fr-fr.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/fr-fr.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/it-it.json b/storefront/src/locales/it-it.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/it-it.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/ja-jp.json b/storefront/src/locales/ja-jp.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/ja-jp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/nl-nl.json b/storefront/src/locales/nl-nl.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/nl-nl.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/pl-pl.json b/storefront/src/locales/pl-pl.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/pl-pl.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/pt-br.json b/storefront/src/locales/pt-br.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/pt-br.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/ro-ro.json b/storefront/src/locales/ro-ro.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/ro-ro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/ru-ru.json b/storefront/src/locales/ru-ru.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/ru-ru.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/locales/zh-hans.json b/storefront/src/locales/zh-hans.json deleted file mode 100644 index 0e0dcd23..00000000 --- a/storefront/src/locales/zh-hans.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/storefront/src/main.js b/storefront/src/main.js deleted file mode 100644 index aef0770a..00000000 --- a/storefront/src/main.js +++ /dev/null @@ -1,33 +0,0 @@ -import '@/assets/styles/global/fonts.scss' -import '@/assets/styles/main.scss' -import 'primeicons/primeicons.css' -import {createApp, h, provide} from 'vue' -import { DefaultApolloClient } from '@vue/apollo-composable' -import { createApolloClient } from './apollo' -import { createPinia } from 'pinia' -import App from './App.vue' -import router from './router' -import {setupI18n} from "@/core/plugins/i18n.config.js"; -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import 'element-plus/theme-chalk/dark/css-vars.css' - -const pinia = createPinia() -const i18n = await setupI18n() - -const app = createApp({ - setup() { - const apolloClient = createApolloClient() - - provide(DefaultApolloClient, apolloClient) - }, - render: () => h(App) -}) - -app - .use(pinia) - .use(i18n) - .use(router) - .use(ElementPlus) - -app.mount('#app') \ No newline at end of file diff --git a/storefront/src/pages/cart-page.vue b/storefront/src/pages/cart-page.vue deleted file mode 100644 index 4b5a9b02..00000000 --- a/storefront/src/pages/cart-page.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/pages/home-page.vue b/storefront/src/pages/home-page.vue deleted file mode 100644 index 48165943..00000000 --- a/storefront/src/pages/home-page.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/pages/product-page.vue b/storefront/src/pages/product-page.vue deleted file mode 100644 index 02dd8e44..00000000 --- a/storefront/src/pages/product-page.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/pages/search-page.vue b/storefront/src/pages/search-page.vue deleted file mode 100644 index c9ef6824..00000000 --- a/storefront/src/pages/search-page.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/pages/store-page.vue b/storefront/src/pages/store-page.vue deleted file mode 100644 index ae5d21b7..00000000 --- a/storefront/src/pages/store-page.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/pages/wishlist-page.vue b/storefront/src/pages/wishlist-page.vue deleted file mode 100644 index 8fc85980..00000000 --- a/storefront/src/pages/wishlist-page.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/router/index.js b/storefront/src/router/index.js deleted file mode 100644 index a31d1e8f..00000000 --- a/storefront/src/router/index.js +++ /dev/null @@ -1,143 +0,0 @@ -import {createRouter, createWebHistory, RouterView} from 'vue-router' -import HomePage from "@/pages/home-page.vue"; -import translation from "@/core/helpers/translations.js"; -import {APP_NAME} from "@/config/index.js"; -import NewPasswordForm from "@/components/forms/new-password-form.vue"; -import BlogPage from "@/pages/blog-page.vue"; -import PostPage from "@/pages/post-page.vue"; -import ProfilePage from "@/pages/profile-page.vue"; -import {useUserStore} from "@/stores/user.js"; -import RegisterForm from "@/components/forms/register-form.vue"; -import LoginForm from "@/components/forms/login-form.vue"; -import ResetPasswordForm from "@/components/forms/reset-password-form.vue"; -import StorePage from "@/pages/store-page.vue"; -import ProductPage from "@/pages/product-page.vue"; -import SearchPage from "@/pages/search-page.vue"; -import CartPage from "@/pages/cart-page.vue"; -import WishlistPage from "@/pages/wishlist-page.vue"; - -const routes = [ - { - path: '/:locale?', - component: RouterView, - beforeEnter: translation.routeMiddleware, - children: [ - { - path: '', - name: 'home', - component: HomePage, - meta: { - title: "Home" - } - }, - { - path: 'activate-user', - name: 'activate-user', - component: HomePage, - meta: { - title: 'Home' - } - }, - { - path: 'blog', - name: 'blog', - component: BlogPage, - meta: { - title: 'Blog' - } - }, - { - path: 'blog/post/:postSlug', - name: 'blog-post', - component: PostPage, - meta: { - title: 'Post' - } - }, - { - path: 'store', - name: 'store', - component: StorePage, - meta: { - title: 'Store' - } - }, - { - path: 'product/:productSlug', - name: 'product', - component: ProductPage, - meta: { - title: 'Product' - } - }, - { - path: 'search', - name: 'search', - component: SearchPage, - meta: { - title: 'Search' - } - }, - { - path: 'cart', - name: 'cart', - component: CartPage, - meta: { - title: 'Cart' - } - }, - { - path: 'wishlist', - name: 'wishlist', - component: WishlistPage, - meta: { - title: 'Wishlist' - } - }, - { - path: 'profile', - name: 'profile', - component: ProfilePage, - meta: { - title: 'Profile', - requiresAuth: true - } - } - ] - } -] - -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes, - scrollBehavior() { - document.querySelector('#top').scrollIntoView({ behavior: 'smooth' }) - return { - top: 0, - left: 0, - behavior: 'smooth' - } - } -}) - -router.beforeEach((to, from, next) => { - const userStore = useUserStore(); - const isAuthenticated = userStore.accessToken - - document.title = to.meta.title ? `${APP_NAME} | ` + to.meta?.title : APP_NAME - - if (to.meta.requiresAuth && !isAuthenticated) { - return next({ - name: 'home', - query: { redirect: to.fullPath } - }); - } - - if (to.meta.requiresGuest && isAuthenticated) { - return next({ name: 'home' }); - } - - next(); -}) - -export default router \ No newline at end of file diff --git a/storefront/src/stores/app.js b/storefront/src/stores/app.js deleted file mode 100644 index 909c35b1..00000000 --- a/storefront/src/stores/app.js +++ /dev/null @@ -1,25 +0,0 @@ -import { defineStore } from "pinia"; -import { ref, computed } from "vue"; - -export const useAppStore = defineStore('app', () => { - const activeState = ref(null); - - const setActiveState = (state) => { - activeState.value = state; - }; - - const isSignUp = computed(() => activeState.value === "signUp"); - const isSignIn = computed(() => activeState.value === "signIn"); - const isForgot = computed(() => activeState.value === "reset-password"); - const isReset = computed(() => activeState.value === "new-password"); - - return { - activeState, - setActiveState, - - isSignUp, - isSignIn, - isForgot, - isReset - }; -}); \ No newline at end of file diff --git a/storefront/src/stores/cart.js b/storefront/src/stores/cart.js deleted file mode 100644 index 43bc9722..00000000 --- a/storefront/src/stores/cart.js +++ /dev/null @@ -1,14 +0,0 @@ -import {defineStore} from "pinia"; -import {ref} from "vue"; - -export const useCartStore = defineStore('cart', () => { - const currentOrder = ref({}); - const setCurrentOrders = (order) => { - currentOrder.value = order - }; - - return { - currentOrder, - setCurrentOrders - } -}) \ No newline at end of file diff --git a/storefront/src/stores/company.js b/storefront/src/stores/company.js deleted file mode 100644 index 481b6f79..00000000 --- a/storefront/src/stores/company.js +++ /dev/null @@ -1,7 +0,0 @@ -import { atom } from 'nanostores'; - -export const companyInfo = atom(null); - -export function setCompanyInfo(data) { - companyInfo.set(data); -} \ No newline at end of file diff --git a/storefront/src/stores/languages.js b/storefront/src/stores/languages.js deleted file mode 100644 index 282adeed..00000000 --- a/storefront/src/stores/languages.js +++ /dev/null @@ -1,21 +0,0 @@ -import { defineStore } from 'pinia' -import { ref } from 'vue' - -export const useLanguageStore = defineStore('language', () => { - const languages = ref([]); - const setLanguages = (payload) => { - languages.value = payload - }; - - const currentLocale = ref(null); - const setCurrentLocale = (payload) => { - currentLocale.value = payload - }; - - return { - languages, - setLanguages, - currentLocale, - setCurrentLocale - } -}) diff --git a/storefront/src/stores/user.js b/storefront/src/stores/user.js deleted file mode 100644 index aac6ef56..00000000 --- a/storefront/src/stores/user.js +++ /dev/null @@ -1,12 +0,0 @@ -import {defineStore} from "pinia"; -import {ref} from "vue"; - -export const useUserStore = defineStore('user', () => { - const user = ref(null); - - const setUser = (payload) => { - user.value = payload.user - } - - return { user, setUser } -}) \ No newline at end of file diff --git a/storefront/src/stores/wishlist.js b/storefront/src/stores/wishlist.js deleted file mode 100644 index e7507ec3..00000000 --- a/storefront/src/stores/wishlist.js +++ /dev/null @@ -1,14 +0,0 @@ -import { defineStore } from 'pinia' -import { ref } from 'vue' - -export const useWishlistStore = defineStore('wishlist', () => { - const wishlist = ref({}); - const setWishlist = (order) => { - wishlist.value = order - }; - - return { - wishlist, - setWishlist - } -}) diff --git a/storefront/vite.config.js b/storefront/vite.config.js deleted file mode 100644 index 469563a6..00000000 --- a/storefront/vite.config.js +++ /dev/null @@ -1,37 +0,0 @@ -import { fileURLToPath, URL } from 'node:url' -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import vueDevTools from 'vite-plugin-vue-devtools' - -export default defineConfig({ - plugins: [ - vue(), - vueDevTools(), - ], - envDir: '../', - envPrefix: 'EVIBES_', - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), - '@core': fileURLToPath(new URL('./src/core', import.meta.url)), - '@graphql': fileURLToPath(new URL('./src/graphql', import.meta.url)), - '@styles': fileURLToPath(new URL('./src/assets/styles', import.meta.url)), - '@icons': fileURLToPath(new URL('./src/assets/icons', import.meta.url)), - '@images': fileURLToPath(new URL('./src/assets/images', import.meta.url)), - }, - }, - css: { - preprocessorOptions: { - scss: { - additionalData: ` - @use "@/assets/styles/global/variables.scss" as *; - @use "@/assets/styles/global/mixins.scss" as *; - ` - } - } - }, - build: { - sourcemap: true, - target: 'ES2022', - } -}) \ No newline at end of file diff --git a/vibes_auth/graphene/mutations.py b/vibes_auth/graphene/mutations.py index 450a7124..9c7fe76a 100644 --- a/vibes_auth/graphene/mutations.py +++ b/vibes_auth/graphene/mutations.py @@ -285,7 +285,7 @@ class ResetPassword(BaseMutation): try: user = User.objects.get(email=email) except User.DoesNotExist: - return + return ResetPassword(success=False) send_reset_password_email_task.delay(user_pk=user.uuid) diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo index 34f56fa5..ce885860 100644 Binary files a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo and b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index 95516d83..a308d56e 100644 --- a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -281,23 +281,23 @@ msgstr "الرمز المميز المدرج في القائمة السوداء" msgid "blacklisted tokens" msgstr "الرموز المميزة المدرجة في القائمة السوداء" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "لم يتم العثور على حساب نشط" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "تم إدراج الرمز المميز في القائمة السوداء" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "رمز غير صالح" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "لا توجد مطالبة معرف المستخدم في الرمز المميز" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "المستخدم غير موجود" @@ -305,52 +305,61 @@ msgstr "المستخدم غير موجود" msgid "reset your password" msgstr "إعادة تعيين كلمة المرور" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "الشعار" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "تأكيد إعادة تعيين كلمة المرور" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "مرحباً %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "لقد تلقينا طلباً لإعادة تعيين كلمة المرور الخاصة بك. يرجى إعادة تعيين كلمة " "المرور الخاصة بك عن طريق النقر على الزر أدناه:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "إعادة تعيين كلمة المرور" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"إذا كان الزر أعلاه لا يعمل، يرجى نسخ عنوان URL التالي ولصقه في متصفح الويب " -"الخاص بك:" +"تفعيل\n" +" الحساب" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "إذا لم ترسل هذا الطلب، يُرجى تجاهل هذا البريد الإلكتروني." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"إذا كان الزر أعلاه لا يعمل، يرجى نسخ ولصق عنوان URL التالي\n" +" في متصفح الويب الخاص بك:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"إذا لم تقم بإرسال هذا الطلب، يرجى تجاهل هذا\n" +" البريد الإلكتروني" + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "مع أطيب تحياتي،
فريق عمل %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "جميع الحقوق محفوظة" @@ -362,13 +371,13 @@ msgstr "قم بتفعيل حسابك" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "شكراً لك على تسجيلك في %(project_name)s. يرجى تفعيل حسابك بالنقر على الزر " "أدناه:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -376,15 +385,7 @@ msgstr "" "تفعيل\n" " الحساب" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"إذا كان الزر أعلاه لا يعمل، يرجى نسخ ولصق عنوان URL التالي\n" -" في متصفح الويب الخاص بك:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "مع أطيب التحيات، فريق عمل %(project_name)s" @@ -394,15 +395,6 @@ msgstr "مع أطيب التحيات، فريق عمل %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | تفعيل الحساب" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "لم يتم العثور على المستخدم بمعرف UUID المحدد: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "حدث خطأ ما أثناء إرسال بريد إلكتروني: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo index d4f9da46..85955205 100644 Binary files a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo and b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po index 567314f9..bdfbff9a 100644 --- a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -280,23 +280,23 @@ msgstr "Token na černé listině" msgid "blacklisted tokens" msgstr "Tokeny na černé listině" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Nebyl nalezen žádný aktivní účet" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token na černé listině" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Neplatný token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "V tokenu není deklarace uuid uživatele" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Uživatel neexistuje" @@ -304,52 +304,61 @@ msgstr "Uživatel neexistuje" msgid "reset your password" msgstr "Obnovení hesla" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Potvrzení obnovení hesla" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Ahoj %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Obdrželi jsme žádost o obnovení vašeho hesla. Kliknutím na níže uvedené " "tlačítko obnovte své heslo:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Obnovení hesla" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte do webového " -"prohlížeče následující adresu URL:" +"Aktivace\n" +" účet" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Pokud jste tuto žádost neposlali, ignorujte tento e-mail." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující adresu URL\n" +" do webového prohlížeče:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"pokud jste tuto žádost neposlali, ignorujte ji.\n" +" e-mail." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "S pozdravem,
Tým %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Všechna práva vyhrazena" @@ -361,13 +370,13 @@ msgstr "Aktivace účtu" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Děkujeme, že jste se přihlásili k projektu %(project_name)s. Aktivujte " "prosím svůj účet kliknutím na tlačítko níže:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -375,15 +384,7 @@ msgstr "" "Aktivace\n" " účet" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující adresu URL\n" -" do webového prohlížeče:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "S pozdravem,
tým %(project_name)s" @@ -393,15 +394,6 @@ msgstr "S pozdravem,
tým %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Aktivovat účet" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Uživatel nebyl nalezen s daným UUID: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Při odesílání e-mailu se něco pokazilo: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo index c7b51cb7..53aeb3e3 100644 Binary files a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo and b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index 931ec4de..17fa7a81 100644 --- a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -167,8 +167,8 @@ msgstr "Token er ugyldig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "De produkter, som denne bruger har set for nylig (maks. 48), i omvendt " "kronologisk rækkefølge." @@ -282,23 +282,23 @@ msgstr "Sortlistet token" msgid "blacklisted tokens" msgstr "Sortlistede tokens" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Ingen aktiv konto fundet" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token blacklistet" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Ugyldigt token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Ingen bruger-uuid-krav til stede i token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Brugeren findes ikke" @@ -306,53 +306,64 @@ msgstr "Brugeren findes ikke" msgid "reset your password" msgstr "Nulstil din adgangskode" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Bekræftelse af nulstilling af adgangskode" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hej %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 + msgid "" "we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"password\n" +" by clicking the button below:" msgstr "" "Vi har modtaget en anmodning om at nulstille din adgangskode. Nulstil " "venligst din adgangskode ved at klikke på knappen nedenfor:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Nulstil adgangskode" +#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_reset_password_email.html:86 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Hvis ovenstående knap ikke virker, bedes du kopiere og sætte følgende URL " -"ind i din webbrowser:" +"Aktiver\n" +" Konto" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende " +"URL\n" +" i din webbrowser:" + +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." msgstr "" "Hvis du ikke har sendt denne anmodning, bedes du ignorere denne e-mail." -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Med venlig hilsen,
%(project_name)s team" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Alle rettigheder forbeholdes" @@ -363,14 +374,15 @@ msgstr "Aktivér din konto" #: vibes_auth/templates/user_verification_email.html:92 #, python-format + msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Tak, fordi du har tilmeldt dig %(project_name)s. Aktivér venligst din konto " "ved at klikke på knappen nedenfor:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -378,15 +390,7 @@ msgstr "" "Aktiver\n" " Konto" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende URL\n" -" i din webbrowser:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Med venlig hilsen,
%(project_name)s team" @@ -396,15 +400,6 @@ msgstr "Med venlig hilsen,
%(project_name)s team" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Aktiver konto" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Bruger ikke fundet med den givne UUID: {user_pk}." - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Noget gik galt under afsendelsen af en e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" @@ -429,3 +424,21 @@ msgstr "Adgangskoden er blevet nulstillet med succes!" #: vibes_auth/viewsets.py:121 msgid "account already activated!" msgstr "Du har allerede aktiveret kontoen..." + +#~ msgid "reset password" +#~ msgstr "Nulstil adgangskode" + +#~ msgid "" +#~ "if the button above does not work, please copy and paste the following " +#~ "URL into your web browser:" +#~ msgstr "" +#~ "Hvis ovenstående knap ikke virker, bedes du kopiere og sætte følgende URL " +#~ "ind i din webbrowser:" + +#, python-brace-format +#~ msgid "user not found with the given pk: {user_pk}" +#~ msgstr "Bruger ikke fundet med den givne UUID: {user_pk}." + +#~ msgid "something went wrong while sending an email: {e!s}" +#~ msgstr "Noget gik galt under afsendelsen af en e-mail: {e!s}" + diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo index 23373901..5873aab8 100644 Binary files a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo and b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 19ed4736..3a3dfa9c 100644 --- a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -126,8 +126,8 @@ msgstr "" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen" -" hat." +"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen " +"hat." #: vibes_auth/graphene/mutations.py:61 msgid "password too weak" @@ -171,8 +171,8 @@ msgstr "Token ist ungültig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Die Produkte, die dieser Benutzer zuletzt angesehen hat (maximal 48), in " "umgekehrter chronologischer Reihenfolge." @@ -287,23 +287,23 @@ msgstr "Token auf der schwarzen Liste" msgid "blacklisted tokens" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Kein aktives Konto gefunden" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Ungültiges Token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Kein Benutzer uuid-Anspruch im Token vorhanden" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -311,54 +311,65 @@ msgstr "Benutzer existiert nicht" msgid "reset your password" msgstr "Ihr Passwort zurücksetzen" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Bestätigung der Passwortrücksetzung" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hallo %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 + msgid "" "we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"password\n" +" by clicking the button below:" msgstr "" "Wir haben eine Anfrage erhalten, Ihr Passwort zurückzusetzen. Bitte setzen " "Sie Ihr Passwort zurück, indem Sie auf die Schaltfläche unten klicken:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Passwort zurücksetzen" +#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_reset_password_email.html:86 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" +msgstr "" +"Aktivieren Sie\n" +" Konto" + +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" "Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die " -"folgende URL und fügen Sie sie in Ihren Webbrowser ein:" +"folgende URL und fügen Sie sie in Ihren Browser ein\n" +" in Ihren Webbrowser ein:" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." msgstr "" -"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese " -"E-Mail." +"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-" +"Mail." -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Mit freundlichen Grüßen,
Das Team von %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Alle Rechte vorbehalten" @@ -369,14 +380,15 @@ msgstr "Aktivieren Sie Ihr Konto" #: vibes_auth/templates/user_verification_email.html:92 #, python-format + msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Vielen Dank, dass Sie sich für %(project_name)s angemeldet haben. Bitte " "aktivieren Sie Ihr Konto, indem Sie auf die Schaltfläche unten klicken:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -384,15 +396,7 @@ msgstr "" "Aktivieren Sie\n" " Konto" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die folgende URL und fügen Sie sie in Ihren Browser ein\n" -" in Ihren Webbrowser ein:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Mit freundlichen Grüßen,
das %(project_name)s Team" @@ -402,15 +406,6 @@ msgstr "Mit freundlichen Grüßen,
das %(project_name)s Team" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Konto aktivieren" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Benutzer mit der angegebenen UUID nicht gefunden: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Beim Senden einer E-Mail ist etwas schief gelaufen: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" @@ -435,3 +430,21 @@ msgstr "Das Passwort wurde erfolgreich zurückgesetzt!" #: vibes_auth/viewsets.py:121 msgid "account already activated!" msgstr "Sie haben das Konto bereits aktiviert..." + +#~ msgid "reset password" +#~ msgstr "Passwort zurücksetzen" + +#~ msgid "" +#~ "if the button above does not work, please copy and paste the following " +#~ "URL into your web browser:" +#~ msgstr "" +#~ "Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die " +#~ "folgende URL und fügen Sie sie in Ihren Webbrowser ein:" + +#, python-brace-format +#~ msgid "user not found with the given pk: {user_pk}" +#~ msgstr "Benutzer mit der angegebenen UUID nicht gefunden: {user_pk}" + +#~ msgid "something went wrong while sending an email: {e!s}" +#~ msgstr "Beim Senden einer E-Mail ist etwas schief gelaufen: {e!s}" + diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo index 08db0286..3bd5e573 100644 Binary files a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo and b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index 95b3e668..853a94ba 100644 --- a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -284,23 +284,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "User does not exist" @@ -308,52 +308,61 @@ msgstr "User does not exist" msgid "reset your password" msgstr "Reset your password" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Password reset confirmation" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hello %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "We have received a request to reset your password. Please reset your " "password by clicking the button below:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Reset password" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" account" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "If you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"if you did not send this request, please ignore this\n" +" email." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Best regards,
The %(project_name)s team" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "All rights reserved" @@ -365,13 +374,13 @@ msgstr "Activate your account" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Thank you for signing up for %(project_name)s. Please activate your account " "by clicking the button below:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -379,15 +388,7 @@ msgstr "" "Activate\n" " account" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"If the button above does not work, please copy and paste the following URL\n" -" into your web browser:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Best regards,
the %(project_name)s team" @@ -397,15 +398,6 @@ msgstr "Best regards,
the %(project_name)s team" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Activate Account" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "User not found with the given UUID: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Something went wrong while sending an email: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" @@ -431,5 +423,22 @@ msgstr "Password has been reset successfully!" msgid "account already activated!" msgstr "You have already activated the account..." +#~ msgid "reset password" +#~ msgstr "Reset password" + +#~ msgid "" +#~ "if the button above does not work, please copy and paste the following URL " +#~ "into your web browser:" +#~ msgstr "" +#~ "If the button above does not work, please copy and paste the following URL " +#~ "into your web browser:" + +#, python-brace-format +#~ msgid "user not found with the given pk: {user_pk}" +#~ msgstr "User not found with the given UUID: {user_pk}" + +#~ msgid "something went wrong while sending an email: {e!s}" +#~ msgstr "Something went wrong while sending an email: {e!s}" + #~ msgid "recently viwed" #~ msgstr "Recently viewed" diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo index 3e9019b2..d083bc4b 100644 Binary files a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo and b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/vibes_auth/locale/en_US/LC_MESSAGES/django.po index ac9f438d..fab950a7 100644 --- a/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -280,23 +280,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "User does not exist" @@ -304,52 +304,61 @@ msgstr "User does not exist" msgid "reset your password" msgstr "Reset your password" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Password reset confirmation" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hello %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "We have received a request to reset your password. Please reset your " "password by clicking the button below:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Reset password" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"If the button above does not work, please copy and paste the following URL " -"into your web browser:" +"Activate\n" +" account" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "If you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"If the button above does not work, please copy and paste the following URL\n" +" into your web browser:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"if you did not send this request, please ignore this\n" +" email." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Best regards,
The %(project_name)s team" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "All rights reserved" @@ -361,13 +370,13 @@ msgstr "Activate your account" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Thank you for signing up for %(project_name)s. Please activate your account " "by clicking the button below:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -375,15 +384,7 @@ msgstr "" "Activate\n" " account" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"If the button above does not work, please copy and paste the following URL\n" -" into your web browser:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Best regards,
the %(project_name)s team" @@ -393,15 +394,6 @@ msgstr "Best regards,
the %(project_name)s team" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Activate Account" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "User not found with the given UUID: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Something went wrong while sending an email: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo index 65c86d20..f322f54f 100644 Binary files a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo and b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 2f523f85..4bf2fa49 100644 --- a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -283,23 +283,23 @@ msgstr "Ficha en la lista negra" msgid "blacklisted tokens" msgstr "Fichas en la lista negra" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "No se ha encontrado ninguna cuenta activa" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Ficha en la lista negra" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Token no válido" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "El usuario no existe" @@ -307,52 +307,61 @@ msgstr "El usuario no existe" msgid "reset your password" msgstr "Restablecer contraseña" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logotipo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Confirmación de restablecimiento de contraseña" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hola %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Hemos recibido una solicitud para restablecer su contraseña. Por favor, " "restablezca su contraseña haciendo clic en el botón de abajo:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Restablecer contraseña" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Si el botón anterior no funciona, copie y pegue la siguiente URL en su " -"navegador web:" +"Activar\n" +" cuenta" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Si no ha enviado esta solicitud, ignore este correo electrónico." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Si el botón anterior no funciona, copie y pegue la siguiente URL\n" +" en su navegador:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"si usted no envió esta solicitud, ignore este\n" +" correo electrónico." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Saludos cordiales,
El equipo de %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Todos los derechos reservados" @@ -364,13 +373,13 @@ msgstr "Activar su cuenta" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Gracias por registrarse en %(project_name)s. Por favor, active su cuenta " "haciendo clic en el botón de abajo:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -378,15 +387,7 @@ msgstr "" "Activar\n" " cuenta" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Si el botón anterior no funciona, copie y pegue la siguiente URL\n" -" en su navegador:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Saludos cordiales,
el equipo de %(project_name)s" @@ -396,15 +397,6 @@ msgstr "Saludos cordiales,
el equipo de %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Activar cuenta" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Usuario no encontrado con el UUID dado: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Algo salió mal al enviar un correo electrónico: {e!s}." - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo index 99a62397..3cadc87d 100644 Binary files a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo and b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index e0a0a4d3..f636547a 100644 --- a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -289,24 +289,24 @@ msgstr "Jeton sur liste noire" msgid "blacklisted tokens" msgstr "Jetons sur liste noire" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Aucun compte actif trouvé" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token sur liste noire" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Jeton non valide" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "" "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "L'utilisateur n'existe pas" @@ -314,54 +314,62 @@ msgstr "L'utilisateur n'existe pas" msgid "reset your password" msgstr "Réinitialiser votre mot de passe" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Confirmation de la réinitialisation du mot de passe" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Bonjour %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Nous avons reçu une demande de réinitialisation de votre mot de passe. " "Veuillez réinitialiser votre mot de passe en cliquant sur le bouton ci-" "dessous :" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Réinitialiser le mot de passe" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL " -"suivante dans votre navigateur web :" +"Activer\n" +" compte" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" -"Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel." +"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL suivante\n" +" suivante dans votre navigateur web :" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"si vous n'avez pas envoyé cette demande, veuillez ignorer cet e-mail.\n" +" courriel." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Meilleures salutations,
L'équipe de %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Tous droits réservés" @@ -373,13 +381,13 @@ msgstr "Activer votre compte" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte" " en cliquant sur le bouton ci-dessous :" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -387,15 +395,7 @@ msgstr "" "Activer\n" " compte" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL suivante\n" -" suivante dans votre navigateur web :" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Meilleures salutations,
l'équipe de %(project_name)s" @@ -405,15 +405,6 @@ msgstr "Meilleures salutations,
l'équipe de %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Activer le compte" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Utilisateur introuvable avec l'UUID donné : {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Un problème s'est produit lors de l'envoi d'un courriel : {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo and b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index a56feea6..64cefde9 100644 --- a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -281,23 +281,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "" @@ -305,48 +305,54 @@ msgstr "" msgid "reset your password" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" "we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"password\n" +" by clicking the button below:" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "" @@ -358,23 +364,17 @@ msgstr "" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" msgstr "" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "" @@ -384,15 +384,6 @@ msgstr "" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo index c1c36b2f..0e6595ee 100644 Binary files a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo and b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index c460fd41..c7907bbc 100644 --- a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -285,23 +285,23 @@ msgstr "Token in lista nera" msgid "blacklisted tokens" msgstr "Gettoni nella lista nera" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Nessun conto attivo trovato" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token nella lista nera" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Token non valido" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Nessuna richiesta di uuid utente presente nel token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "L'utente non esiste" @@ -309,52 +309,61 @@ msgstr "L'utente non esiste" msgid "reset your password" msgstr "Reimpostare la password" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Conferma della reimpostazione della password" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Ciao %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Abbiamo ricevuto una richiesta di reimpostazione della password. La " "preghiamo di reimpostare la password facendo clic sul pulsante sottostante:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Reimpostare la password" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Se il pulsante qui sopra non funziona, copiate e incollate il seguente URL " -"nel vostro browser web:" +"Attivare\n" +" conto" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Se non avete inviato questa richiesta, ignorate questa e-mail." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Se il pulsante qui sopra non funziona, copiate e incollate il seguente URL\n" +" nel browser web:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"se non avete inviato questa richiesta, vi preghiamo di ignorare questa\n" +" e-mail." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Cordiali saluti,
Il team di %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Tutti i diritti riservati" @@ -366,13 +375,13 @@ msgstr "Attivare l'account" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Grazie per esservi iscritti a %(project_name)s. Attivate il vostro account " "facendo clic sul pulsante sottostante:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -380,15 +389,7 @@ msgstr "" "Attivare\n" " conto" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Se il pulsante qui sopra non funziona, copiate e incollate il seguente URL\n" -" nel browser web:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Cordiali saluti,
il team di %(project_name)s" @@ -398,15 +399,6 @@ msgstr "Cordiali saluti,
il team di %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Attivare l'account" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Utente non trovato con l'UUID indicato: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Qualcosa è andato storto durante l'invio di un'e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo index 34fa3b47..36220521 100644 Binary files a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo and b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 9692f009..427d0ef3 100644 --- a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -278,23 +278,23 @@ msgstr "ブラックリストトークン" msgid "blacklisted tokens" msgstr "ブラックリストに載ったトークン" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "アクティブなアカウントが見つかりません" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "トークンのブラックリスト入り" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "無効なトークン" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "トークンにユーザー uuid クレームが存在しない" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "ユーザーが存在しない" @@ -302,48 +302,59 @@ msgstr "ユーザーが存在しない" msgid "reset your password" msgstr "パスワードのリセット" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "ロゴ" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "パスワード再設定確認" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "こんにちは、%(user_first_name)sです、" -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワードをリセットしてください:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "パスワードのリセット" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" -msgstr "上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付けてください:" +"reset\n" +" password" +msgstr "" +"アクティベート\n" +" アカウント" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "このリクエストを送信していない場合は、このメールを無視してください。" +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けてください。\n" +" をウェブブラウザに貼り付けてください:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"このリクエストを送信していない場合は、このメールを無視してください。\n" +" 電子メールをお送りください。" + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "よろしくお願いします、
%(project_name)sのチーム" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "無断複写・転載を禁じます。" @@ -355,11 +366,11 @@ msgstr "アカウントの有効化" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -367,15 +378,7 @@ msgstr "" "アクティベート\n" " アカウント" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けてください。\n" -" をウェブブラウザに貼り付けてください:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "よろしくお願いします、
%(project_name)sのチーム。" @@ -385,15 +388,6 @@ msgstr "よろしくお願いします、
%(project_name)sのチーム。" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME}|アカウントの有効化| アカウントの有効化" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "指定されたUUIDを持つユーザーが見つかりません:{user_pk}。" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "メール送信中に何か問題が発生しました:{e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo index ade5c222..73eb411d 100644 Binary files a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo and b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index a56feea6..64cefde9 100644 --- a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" -"Project-Id-Version: EVIBES 2.8.5\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Project-Id-Version: EVIBES 2.8.9\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -281,23 +281,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "" @@ -305,48 +305,54 @@ msgstr "" msgid "reset your password" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" "we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"password\n" +" by clicking the button below:" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "" @@ -358,23 +364,17 @@ msgstr "" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" msgstr "" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "" @@ -384,15 +384,6 @@ msgstr "" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo index 4d6415cb..449d81f4 100644 Binary files a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo and b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index accf8f50..aa6028fa 100644 --- a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -284,23 +284,23 @@ msgstr "Token op zwarte lijst" msgid "blacklisted tokens" msgstr "Tokens op de zwarte lijst" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Geen actieve account gevonden" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token op zwarte lijst" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Geen gebruiker uuid claim aanwezig in token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Gebruiker bestaat niet" @@ -308,52 +308,61 @@ msgstr "Gebruiker bestaat niet" msgid "reset your password" msgstr "Wachtwoord opnieuw instellen" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Bevestiging wachtwoord reset" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Hallo %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik" " op de knop hieronder om je wachtwoord opnieuw in te stellen:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Wachtwoord opnieuw instellen" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Als de bovenstaande knop niet werkt, kopieer en plak dan de volgende URL in " -"je webbrowser:" +"Activeer\n" +" account" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Als je dit verzoek niet hebt verzonden, negeer deze e-mail dan." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Als de bovenstaande knop niet werkt, kopieer en plak dan de volgende URL\n" +" in uw webbrowser:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"als u dit verzoek niet hebt verzonden, negeer dan alstublieft deze\n" +" e-mail." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Vriendelijke groeten,
Het %(project_name)s-team" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Alle rechten voorbehouden" @@ -365,13 +374,13 @@ msgstr "Activeer je account" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op" " de onderstaande knop te klikken:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -379,15 +388,7 @@ msgstr "" "Activeer\n" " account" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Als de bovenstaande knop niet werkt, kopieer en plak dan de volgende URL\n" -" in uw webbrowser:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Vriendelijke groeten,
het %(project_name)s-team" @@ -397,15 +398,6 @@ msgstr "Vriendelijke groeten,
het %(project_name)s-team" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME}. | Account activeren" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Gebruiker niet gevonden met de opgegeven UUID: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Er ging iets mis tijdens het verzenden van een e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo index 398c753f..dd7ecfac 100644 Binary files a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo and b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index c2a3ebf5..16e4eb83 100644 --- a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -285,23 +285,23 @@ msgstr "Token na czarnej liście" msgid "blacklisted tokens" msgstr "Tokeny znajdujące się na czarnej liście" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Nie znaleziono aktywnego konta" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token na czarnej liście" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Nieprawidłowy token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Brak oświadczenia uuid użytkownika w tokenie" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Użytkownik nie istnieje" @@ -309,52 +309,61 @@ msgstr "Użytkownik nie istnieje" msgid "reset your password" msgstr "Resetowanie hasła" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Potwierdzenie resetowania hasła" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Witaj %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Otrzymaliśmy prośbę o zresetowanie hasła. Zresetuj hasło, klikając poniższy " "przycisk:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Resetowanie hasła" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Jeśli powyższy przycisk nie działa, skopiuj i wklej poniższy adres URL do " -"przeglądarki internetowej:" +"Aktywować\n" +" konto" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Jeśli nie wysłałeś tej prośby, zignoruj tę wiadomość." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Jeśli powyższy przycisk nie działa, skopiuj i wklej następujący adres URL\n" +" do przeglądarki internetowej:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"jeśli nie wysłałeś tej prośby, zignoruj tę wiadomość.\n" +" email." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Z wyrazami szacunku,
Zespół %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Wszelkie prawa zastrzeżone" @@ -366,13 +375,13 @@ msgstr "Aktywacja konta" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Dziękujemy za zarejestrowanie się w %(project_name)s. Aktywuj swoje konto, " "klikając poniższy przycisk:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -380,15 +389,7 @@ msgstr "" "Aktywować\n" " konto" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Jeśli powyższy przycisk nie działa, skopiuj i wklej następujący adres URL\n" -" do przeglądarki internetowej:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Z wyrazami szacunku,
zespół %(project_name)s" @@ -398,15 +399,6 @@ msgstr "Z wyrazami szacunku,
zespół %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Aktywuj konto" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Nie znaleziono użytkownika o podanym identyfikatorze UUID: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Coś poszło nie tak podczas wysyłania wiadomości e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo index 3cdd7e66..8e121b4e 100644 Binary files a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo and b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index e62a7a00..c10ab533 100644 --- a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -281,23 +281,23 @@ msgstr "Token na lista negra" msgid "blacklisted tokens" msgstr "Tokens na lista negra" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Nenhuma conta ativa encontrada" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token na lista negra" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Token inválido" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "Nenhuma reivindicação de uuid de usuário presente no token" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "O usuário não existe" @@ -305,52 +305,61 @@ msgstr "O usuário não existe" msgid "reset your password" msgstr "Redefinir sua senha" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logotipo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Confirmação de redefinição de senha" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Olá %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Recebemos uma solicitação para redefinir sua senha. Para redefinir sua " "senha, clique no botão abaixo:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Redefinir senha" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador" -" da Web:" +"Ativar\n" +" conta" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Se você não enviou essa solicitação, ignore este e-mail." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Se o botão acima não funcionar, copie e cole o seguinte URL\n" +" em seu navegador da Web:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"Se você não enviou essa solicitação, ignore este\n" +" e-mail." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Atenciosamente,
A equipe de %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Todos os direitos reservados" @@ -362,13 +371,13 @@ msgstr "Ativar sua conta" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Obrigado por se inscrever no %(project_name)s. Ative sua conta clicando no " "botão abaixo:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -376,15 +385,7 @@ msgstr "" "Ativar\n" " conta" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Se o botão acima não funcionar, copie e cole o seguinte URL\n" -" em seu navegador da Web:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Atenciosamente,
a equipe de %(project_name)s" @@ -394,15 +395,6 @@ msgstr "Atenciosamente,
a equipe de %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Ativar conta" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Usuário não encontrado com o UUID fornecido: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Algo deu errado ao enviar um e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo index 3423841c..434747fb 100644 Binary files a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo and b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index 986dc20c..2f97c59a 100644 --- a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -284,23 +284,23 @@ msgstr "Token pe lista neagră" msgid "blacklisted tokens" msgstr "Jetoane pe lista neagră" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Nu s-a găsit niciun cont activ" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Token pe lista neagră" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Jeton invalid" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "În jeton nu este prezentă nicio cerere uuid a utilizatorului" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Utilizatorul nu există" @@ -308,52 +308,61 @@ msgstr "Utilizatorul nu există" msgid "reset your password" msgstr "Resetați parola" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Logo" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Confirmarea resetării parolei" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Bună ziua %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "" "Am primit o cerere de resetare a parolei dumneavoastră. Vă rugăm să vă " "resetați parola făcând clic pe butonul de mai jos:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Resetați parola" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți " -"următoarea adresă URL în browserul dvs. web:" +"Activați\n" +" cont" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "Dacă nu ați trimis această cerere, vă rugăm să ignorați acest e-mail." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți următoarea adresă URL\n" +" în browserul dvs. web:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"dacă nu ați trimis această cerere, vă rugăm să ignorați acest\n" +" e-mail." + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "Cele mai bune salutări,
Echipa %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Toate drepturile rezervate" @@ -365,13 +374,13 @@ msgstr "Activează-ți contul" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Vă mulțumim pentru înscrierea la %(project_name)s. Vă rugăm să vă activați " "contul făcând clic pe butonul de mai jos:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -379,15 +388,7 @@ msgstr "" "Activați\n" " cont" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți următoarea adresă URL\n" -" în browserul dvs. web:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "Cele mai bune salutări,
echipa %(project_name)s" @@ -397,15 +398,6 @@ msgstr "Cele mai bune salutări,
echipa %(project_name)s" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Activare cont" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Utilizatorul cu UUID-ul dat nu a fost găsit: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Ceva nu a mers bine în timpul trimiterii unui e-mail: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo index 4d2acc5f..1661d369 100644 Binary files a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo and b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index 38c03cb6..3c64959c 100644 --- a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -119,8 +119,7 @@ msgstr "Ссылка на активацию недействительна ил #: vibes_auth/docs/drf/viewsets.py:71 msgid "merge client-stored recently viewed products" -msgstr "" -"Объедините недавно просмотренные продукты, хранящиеся в памяти клиента" +msgstr "Объедините недавно просмотренные продукты, хранящиеся в памяти клиента" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." @@ -170,11 +169,11 @@ msgstr "Токен недействителен!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -"Продукты, которые этот пользователь просматривал в последнее время (не более" -" 48), в обратном хронологическом порядке." +"Продукты, которые этот пользователь просматривал в последнее время (не более " +"48), в обратном хронологическом порядке." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -285,23 +284,23 @@ msgstr "Токен в черном списке" msgid "blacklisted tokens" msgstr "Токены, внесенные в черный список" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "Активная учетная запись не найдена" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "Токен занесен в черный список" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "Неверный токен" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "В токене отсутствует утверждение uuid пользователя" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "Пользователь не существует" @@ -309,53 +308,64 @@ msgstr "Пользователь не существует" msgid "reset your password" msgstr "Сбросить пароль" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "Логотип" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "Подтверждение сброса пароля" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "Здравствуйте, %(user_first_name)s," -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 + msgid "" "we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"password\n" +" by clicking the button below:" msgstr "" "Мы получили запрос на сброс вашего пароля. Пожалуйста, сбросьте пароль, " "нажав на кнопку ниже:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "Сброс пароля" +#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_reset_password_email.html:86 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" +"reset\n" +" password" msgstr "" -"Если кнопка выше не работает, скопируйте и вставьте следующий URL-адрес в " -"свой веб-браузер:" +"Активировать\n" +" аккаунт" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий " +"URL-адрес\n" +" в свой веб-браузер:" + +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." msgstr "" "Если вы не отправляли этот запрос, пожалуйста, проигнорируйте это письмо." -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "С наилучшими пожеланиями,
Команда %(project_name)s" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "Все права защищены" @@ -366,14 +376,15 @@ msgstr "Активируйте свой аккаунт" #: vibes_auth/templates/user_verification_email.html:92 #, python-format + msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" msgstr "" "Спасибо, что зарегистрировались на сайте %(project_name)s. Пожалуйста, " "активируйте свой аккаунт, нажав на кнопку ниже:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -381,15 +392,7 @@ msgstr "" "Активировать\n" " аккаунт" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий URL-адрес\n" -" в свой веб-браузер:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "С наилучшими пожеланиями,
команда %(project_name)s" @@ -399,15 +402,6 @@ msgstr "С наилучшими пожеланиями,
команда %(pro msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | Активировать учетную запись" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "Пользователь с заданным UUID не найден: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "Что-то пошло не так при отправке письма: {e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" @@ -432,3 +426,21 @@ msgstr "Пароль был успешно сброшен!" #: vibes_auth/viewsets.py:121 msgid "account already activated!" msgstr "Вы уже активировали учетную запись..." + +#~ msgid "reset password" +#~ msgstr "Сброс пароля" + +#~ msgid "" +#~ "if the button above does not work, please copy and paste the following " +#~ "URL into your web browser:" +#~ msgstr "" +#~ "Если кнопка выше не работает, скопируйте и вставьте следующий URL-адрес в " +#~ "свой веб-браузер:" + +#, python-brace-format +#~ msgid "user not found with the given pk: {user_pk}" +#~ msgstr "Пользователь с заданным UUID не найден: {user_pk}" + +#~ msgid "something went wrong while sending an email: {e!s}" +#~ msgstr "Что-то пошло не так при отправке письма: {e!s}" + diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo index e4f2266e..d7c54350 100644 Binary files a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo and b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index 5e78147f..01703492 100644 --- a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-10 03:32+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-06-18 12:55+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -278,23 +278,23 @@ msgstr "黑名单令牌" msgid "blacklisted tokens" msgstr "黑名单令牌" -#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129 +#: vibes_auth/serializers.py:108 vibes_auth/serializers.py:130 msgid "no active account" msgstr "未找到活动账户" -#: vibes_auth/serializers.py:200 +#: vibes_auth/serializers.py:201 msgid "token_blacklisted" msgstr "令牌被列入黑名单" -#: vibes_auth/serializers.py:205 +#: vibes_auth/serializers.py:206 msgid "invalid token" msgstr "无效令牌" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "no user uuid claim present in token" msgstr "令牌中没有用户 uuid 声明" -#: vibes_auth/serializers.py:213 +#: vibes_auth/serializers.py:214 msgid "user does not exist" msgstr "用户不存在" @@ -302,48 +302,59 @@ msgstr "用户不存在" msgid "reset your password" msgstr "重置密码" -#: vibes_auth/templates/user_reset_password_email.html:75 +#: vibes_auth/templates/user_reset_password_email.html:85 #: vibes_auth/templates/user_verification_email.html:85 msgid "logo" msgstr "标志" -#: vibes_auth/templates/user_reset_password_email.html:80 +#: vibes_auth/templates/user_reset_password_email.html:90 msgid "password reset confirmation" msgstr "密码重置确认" -#: vibes_auth/templates/user_reset_password_email.html:81 +#: vibes_auth/templates/user_reset_password_email.html:91 #: vibes_auth/templates/user_verification_email.html:91 #, python-format msgid "hello %(user_first_name)s," msgstr "您好 %(user_first_name)s、" -#: vibes_auth/templates/user_reset_password_email.html:82 +#: vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password by clicking the button below:" +"we have received a request to reset your password. please reset your password\n" +" by clicking the button below:" msgstr "我们收到了重置密码的请求。请点击下面的按钮重置密码:" -#: vibes_auth/templates/user_reset_password_email.html:84 -msgid "reset password" -msgstr "重置密码" - -#: vibes_auth/templates/user_reset_password_email.html:86 +#: vibes_auth/templates/user_reset_password_email.html:95 msgid "" -"if the button above does not work, please copy and paste the following URL " -"into your web browser:" -msgstr "如果上面的按钮不起作用,请将以下 URL 复制并粘贴到您的浏览器中:" +"reset\n" +" password" +msgstr "" +"激活\n" +" 账户" -#: vibes_auth/templates/user_reset_password_email.html:88 -msgid "if you did not send this request, please ignore this email." -msgstr "如果您没有发送此请求,请忽略此邮件。" +#: vibes_auth/templates/user_reset_password_email.html:98 +#: vibes_auth/templates/user_verification_email.html:99 +msgid "" +"if the button above does not work, please copy and paste the following URL\n" +" into your web browser:" +msgstr "" +"如果上面的按钮不起作用,请将以下 URL 复制并粘贴到浏览器中\n" +" 复制并粘贴到您的浏览器中:" -#: vibes_auth/templates/user_reset_password_email.html:89 +#: vibes_auth/templates/user_reset_password_email.html:101 +msgid "" +"if you did not send this request, please ignore this\n" +" email." +msgstr "" +"如果您没有发送此请求,请忽略此邮件\n" +" 电子邮件。" + +#: vibes_auth/templates/user_reset_password_email.html:103 #, python-format msgid "best regards,
The %(project_name)s team" msgstr "致以最诚挚的问候,
%(project_name)s团队" -#: vibes_auth/templates/user_reset_password_email.html:95 -#: vibes_auth/templates/user_verification_email.html:107 +#: vibes_auth/templates/user_reset_password_email.html:109 +#: vibes_auth/templates/user_verification_email.html:108 msgid "all rights reserved" msgstr "保留所有权利" @@ -355,11 +366,11 @@ msgstr "激活账户" #: vibes_auth/templates/user_verification_email.html:92 #, python-format msgid "" -"thank you for signing up for %(project_name)s. please activate your account " -"by clicking the button below:" -msgstr "感谢您注册 %(project_name)s。请点击下面的按钮激活您的账户:" +"thank you for signing up for %(project_name)s. please activate your account\n" +" by clicking the button below:" +msgstr "感谢您注册%(project_name)s_。请点击下面的按钮激活您的帐户:" -#: vibes_auth/templates/user_verification_email.html:95 +#: vibes_auth/templates/user_verification_email.html:96 msgid "" "activate\n" " account" @@ -367,15 +378,7 @@ msgstr "" "激活\n" " 账户" -#: vibes_auth/templates/user_verification_email.html:98 -msgid "" -"if the button above does not work, please copy and paste the following URL\n" -" into your web browser:" -msgstr "" -"如果上面的按钮不起作用,请将以下 URL 复制并粘贴到浏览器中\n" -" 复制并粘贴到您的浏览器中:" - -#: vibes_auth/templates/user_verification_email.html:101 +#: vibes_auth/templates/user_verification_email.html:102 #, python-format msgid "best regards,
the %(project_name)s team" msgstr "致以最诚挚的问候,
%(project_name)s团队" @@ -385,15 +388,6 @@ msgstr "致以最诚挚的问候,
%(project_name)s团队" msgid "{config.PROJECT_NAME} | Activate Account" msgstr "{config.PROJECT_NAME} | 激活账户| 激活账户" -#: vibes_auth/utils/emailing.py:49 vibes_auth/utils/emailing.py:92 -#, python-brace-format -msgid "user not found with the given pk: {user_pk}" -msgstr "未找到指定 UUID 的用户: {user_pk}" - -#: vibes_auth/utils/emailing.py:52 vibes_auth/utils/emailing.py:95 -msgid "something went wrong while sending an email: {e!s}" -msgstr "发送电子邮件时出错了:{e!s}" - #: vibes_auth/utils/emailing.py:69 #, python-brace-format msgid "{config.PROJECT_NAME} | Reset Password" diff --git a/vibes_auth/managers.py b/vibes_auth/managers.py index 2ba749f6..8f894221 100644 --- a/vibes_auth/managers.py +++ b/vibes_auth/managers.py @@ -67,6 +67,7 @@ class UserManager(BaseUserManager): def with_perm(self, perm, is_active=True, include_superusers=True, backend=None, obj=None): if backend is None: + # noinspection PyCallingNonCallable backends = auth._get_backends(return_tuples=True) if len(backends) == 1: backend, _ = backends[0] diff --git a/vibes_auth/models.py b/vibes_auth/models.py index 464a37b9..3f859d70 100644 --- a/vibes_auth/models.py +++ b/vibes_auth/models.py @@ -29,8 +29,8 @@ class User(AbstractUser, NiceModel): def get_uuid_as_path(self, *args): return str(self.uuid) + "/" + args[0] - email = EmailField(_("email"), unique=True, help_text=_("user email address")) - phone_number = CharField( + email: EmailField = EmailField(_("email"), unique=True, help_text=_("user email address")) + phone_number: CharField = CharField( _("phone_number"), max_length=20, unique=True, @@ -42,9 +42,9 @@ class User(AbstractUser, NiceModel): ], ) username = None - first_name = CharField(_("first_name"), max_length=150, blank=True, null=True) # noqa: DJ001 - last_name = CharField(_("last_name"), max_length=150, blank=True, null=True) # noqa: DJ001 - avatar = ImageField( + first_name: CharField = CharField(_("first_name"), max_length=150, blank=True, null=True) + last_name: CharField = CharField(_("last_name"), max_length=150, blank=True, null=True) + avatar: ImageField = ImageField( null=True, verbose_name=_("avatar"), upload_to=get_uuid_as_path, @@ -52,27 +52,27 @@ class User(AbstractUser, NiceModel): help_text=_("user profile image"), ) - is_verified = BooleanField( + is_verified: BooleanField = BooleanField( default=False, verbose_name=_("is verified"), help_text=_("user verification status"), ) - is_active = BooleanField( + is_active: BooleanField = BooleanField( _("is_active"), default=False, help_text=_("unselect this instead of deleting accounts"), ) - is_subscribed = BooleanField( + is_subscribed: BooleanField = BooleanField( verbose_name=_("is_subscribed"), help_text=_("user's newsletter subscription status"), default=False ) - activation_token = UUIDField(default=uuid4, verbose_name=_("activation token")) - language = CharField(choices=LANGUAGES, default=LANGUAGE_CODE, null=False, blank=False, max_length=7) - attributes = JSONField(verbose_name=_("attributes"), default=dict, blank=True, null=True) + activation_token: UUIDField = UUIDField(default=uuid4, verbose_name=_("activation token")) + language: CharField = CharField(choices=LANGUAGES, default=LANGUAGE_CODE, null=False, blank=False, max_length=7) + attributes: JSONField = JSONField(verbose_name=_("attributes"), default=dict, blank=True, null=True) USERNAME_FIELD = "email" REQUIRED_FIELDS = [] - objects = UserManager() + objects = UserManager() # type: ignore def add_to_recently_viewed(self, product_uuid): recently_viewed = self.recently_viewed diff --git a/vibes_auth/serializers.py b/vibes_auth/serializers.py index 2628c1a6..243ff26d 100644 --- a/vibes_auth/serializers.py +++ b/vibes_auth/serializers.py @@ -1,6 +1,6 @@ import logging from contextlib import suppress -from typing import Any, Dict, List, Optional, Type +from typing import Any, Collection, Dict, Optional, Type from constance import config from django.contrib.auth import authenticate @@ -90,11 +90,12 @@ class UserSerializer(ModelSerializer): return attrs @extend_schema_field(ProductSimpleSerializer(many=True)) - def get_recently_viewed(self, obj) -> List[Dict[str, Any]]: + def get_recently_viewed(self, obj) -> Collection[Any]: """ Returns a list of serialized ProductSimpleSerializer representations for the UUIDs in obj.recently_viewed. """ + # noinspection PyTypeChecker return ProductSimpleSerializer( Product.objects.filter(uuid__in=obj.recently_viewed, is_active=True), many=True ).data diff --git a/vibes_auth/templates/user_reset_password_email.html b/vibes_auth/templates/user_reset_password_email.html index c6fdb49b..3609f0ef 100644 --- a/vibes_auth/templates/user_reset_password_email.html +++ b/vibes_auth/templates/user_reset_password_email.html @@ -11,33 +11,40 @@ -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } + body { margin: 0 !important; padding: 0 !important; width: 100% !important; } + img { max-width: 100%; height: auto; } + .email-container { max-width: 600px; margin: 0 auto; } + .content-cell { border: 3px solid #000000; padding: 20px; font-family: Arial, sans-serif; } + .header { background-color: #000000; padding: 20px; text-align: center; } + .header img { width: 120px; height: auto; } + .footer { background-color: #000000; padding: 10px; @@ -45,6 +52,7 @@ font-size: 12px; color: #888; } + .button { background-color: #000000; color: white; @@ -54,9 +62,11 @@ margin-top: 20px; transition: 0.2s; } + .button:hover { background-color: #3a3a3a; } + @media only screen and (max-width: 600px) { .email-container { width: 100% !important; @@ -66,38 +76,42 @@ - - - - -
- - - - - - - - - - - -
+ + + + +
+ + + + + + + + + + + +
diff --git a/vibes_auth/templates/user_verification_email.html b/vibes_auth/templates/user_verification_email.html index 2f21c632..620f437d 100644 --- a/vibes_auth/templates/user_verification_email.html +++ b/vibes_auth/templates/user_verification_email.html @@ -76,10 +76,10 @@ - +
- +