improve documentation and fix build stages

fix: broken imports in vue components
fix: broken import of optional documentation module
This commit is contained in:
L-Nafaryus 2024-09-28 01:48:38 +05:00
parent 8b1ffb202e
commit 93189789f2
Signed by: L-Nafaryus
GPG Key ID: 553C97999B363D38
17 changed files with 774 additions and 453 deletions

158
README.md
View File

@ -1,52 +1,152 @@
# materia # Materia
Materia is a file server. <style>
.md-content .md-typeset h1 { display: none; }
</style>
## Database migrations <p align="center">
```bash <a href="https://materia.elnafo.ru"><img src="https://vcs.elnafo.ru/L-Nafaryus/materia/src/branch/master/docs/img/logo-full.png" alt="Materia"></a>
# Initialize </p>
alembic init -t async src/db/migrations <p align="center">
<img src="https://img.shields.io/badge/nix%20flake-gray.svg?logo=nixos" alt="nix-flake"/>
<a href="https://bonfire.cachix.org"><img src="https://img.shields.io/badge/cachix-bonfire-pink.svg" alt="bonfire-cachix" /></a>
</p>
<p align="center">
<strong><em>Materia is a simple and fast cloud storage</em></strong>
</p>
# Autogenerate new migration **Documentation**: [https://storage.elnafo.ru/docs](https://storage.elnafo.ru/docs)
alembic revision --autogenerate -m "Initial migration"
# Apply the migration **Source**: [https://vcs.elnafo.ru/L-Nafaryus/materia](https://vcs.elnafo.ru/L-Nafaryus/materia)
alembic upgrade head
# Rollback the migration Materia is a modern and high-performance cloud storage (thanks to FastAPI and Vue) built with REST in mind.
alembic downgrade head
```
## Setup tests /// warning
This project is still in development.
You can test it but at your own risk.
You can also create an [issue](https://github.com/L-Nafaryus/materia/issues).
///
## Example
### Standalone backend server
/// warning
The project is currently unstable for packaging due to the complex setup.
So the best way is to use the sources.
It also uses a specific development environment via Nix.
Tools like Podman can easily be replaced with Docker, so be careful.
///
First of all you need to prepare working instances of Postgres (database) and Redis (broker). There are many ways, you can choose any.
- Postgres:
```sh ```sh
nix build .#postgresql-devel nix build .#postgresql-devel
podman load < result podman load < result
podman run -p 54320:5432 --name database -dt postgresql:latest podman run -p 54320:5432 --name database -dt postgresql:latest
```
- Redis:
```sh
nix build .#redis-devel nix build .#redis-devel
podman load < result podman load < result
podman run -p 63790:63790 --name cache -dt redis:latest podman run -p 63790:6379 --name cache -dt redis:latest
```
- Development environment:
```sh
nix develop nix develop
pdm install --dev pdm install --dev
eval $(pdm venv activate) eval $(pdm venv activate)
```
- Running tests (pytest):
```sh
pytest pytest
``` ```
## Side notes - Running server:
``` ```sh
/var MATERIA_DATABASE__PORT=54320 MATERIA_CACHE__PORT=63790 materia start
/lib
/materia <-- data directory
/repository <-- repository directory
/rick <-- user name
/default <--| default repository name
... | possible features: external cloud drives?
/first <-- first level directories counts as root because no parent
/nested
/hello.txt
``` ```
# License - Generating configuration and starting with it:
**materia** is licensed under the [MIT License](LICENSE). ```sh
materia config export --path ./config.toml
materia start --config config.toml
```
### Standalone frontend server
The frontend does not include a client by default. It must be generated from the OpenAPI specification which in turn must be generated from the current state of the FastAPI application. After that you can safely run the Vite server or build the entire Vue project.
```sh
nix develop
pdm install --dev
eval $(pdm venv activate)
materia export openapi --path workspaces/frontend/openapi.json
cd workspaces/frontend
npm install
npm run openapi
```
- Running frontend server:
```sh
npm run dev
```
In development mode, the server is configured to the address and port of the backend server.
## Design
At the current stage, the PDM package manager is used, since it is the only one that copes well with the concept of a monorepository. At the output, two Python packages should be built - materia (backend server) and materia-frontend (which wraps a built version of the NPM package materia-frontend-vue). Documentation (optional) and the frontend are served through the backend server.
The target platform of the project is NixOS. This also indirectly affects the approach to choosing tools for developing the current project and the support priority. And only secondly, packaging components for registries such as pypi and others. Support for the rest is a matter of time.
## Build
All build steps are wrapped in PDM pre-build scripts, so in a typical case you only need PDM and NodeJS.
- materia:
```sh
nix develop
pdm build --skip ":all"
```
- materia with documentation:
```sh
nix develop
pdm install --prod --no-default --group docs
pdm build
```
- materia-frontend:
```sh
nix develop
pdm install --prod
cd workspaces/frontend
pdm build
```
## License
**materia** is licensed under the terms of the [MIT License](LICENSE).

View File

@ -8,5 +8,144 @@
<a href="https://materia.elnafo.ru"><img src="img/logo-full.png" alt="Materia"></a> <a href="https://materia.elnafo.ru"><img src="img/logo-full.png" alt="Materia"></a>
</p> </p>
<p align="center"> <p align="center">
<em>Materia is easy and fast cloud storage</em> <img src="https://img.shields.io/badge/nix%20flake-gray.svg?logo=nixos" alt="nix-flake"/>
<a href="https://bonfire.cachix.org"><img src="https://img.shields.io/badge/cachix-bonfire-pink.svg" alt="bonfire-cachix" /></a>
</p> </p>
<p align="center">
<strong><em>Materia is a simple and fast cloud storage</em></strong>
</p>
**Documentation**: [https://storage.elnafo.ru/docs](https://storage.elnafo.ru/docs)
**Source**: [https://vcs.elnafo.ru/L-Nafaryus/materia](https://vcs.elnafo.ru/L-Nafaryus/materia)
Materia is a modern and high-performance cloud storage (thanks to FastAPI and Vue) built with REST in mind.
/// warning
This project is still in development.
You can test it but at your own risk.
You can also create an [issue](https://github.com/L-Nafaryus/materia/issues).
///
## Example
### Standalone backend server
/// warning
The project is currently unstable for packaging due to the complex setup.
So the best way is to use the sources.
It also uses a specific development environment via Nix.
Tools like Podman can easily be replaced with Docker, so be careful.
///
First of all you need to prepare working instances of Postgres (database) and Redis (broker). There are many ways, you can choose any.
- Postgres:
```sh
nix build .#postgresql-devel
podman load < result
podman run -p 54320:5432 --name database -dt postgresql:latest
```
- Redis:
```sh
nix build .#redis-devel
podman load < result
podman run -p 63790:6379 --name cache -dt redis:latest
```
- Development environment:
```sh
nix develop
pdm install --dev
eval $(pdm venv activate)
```
- Running tests (pytest):
```sh
pytest
```
- Running server:
```sh
MATERIA_DATABASE__PORT=54320 MATERIA_CACHE__PORT=63790 materia start
```
- Generating configuration and starting with it:
```sh
materia config export --path ./config.toml
materia start --config config.toml
```
### Standalone frontend server
The frontend does not include a client by default. It must be generated from the OpenAPI specification which in turn must be generated from the current state of the FastAPI application. After that you can safely run the Vite server or build the entire Vue project.
```sh
nix develop
pdm install --dev
eval $(pdm venv activate)
materia export openapi --path workspaces/frontend/openapi.json
cd workspaces/frontend
npm install
npm run openapi
```
- Running frontend server:
```sh
npm run dev
```
In development mode, the server is configured to the address and port of the backend server.
## Design
At the current stage, the PDM package manager is used, since it is the only one that copes well with the concept of a monorepository. At the output, two Python packages should be built - materia (backend server) and materia-frontend (which wraps a built version of the NPM package materia-frontend-vue). Documentation (optional) and the frontend are served through the backend server.
The target platform of the project is NixOS. This also indirectly affects the approach to choosing tools for developing the current project and the support priority. And only secondly, packaging components for registries such as pypi and others. Support for the rest is a matter of time.
## Build
All build steps are wrapped in PDM pre-build scripts, so in a typical case you only need PDM and NodeJS.
- materia:
```sh
nix develop
pdm build --skip ":all"
```
- materia with documentation:
```sh
nix develop
pdm install --prod --no-default --group docs
pdm build
```
- materia-frontend:
```sh
nix develop
pdm install --prod
cd workspaces/frontend
pdm build
```
## License
**materia** is licensed under the terms of the [MIT License](LICENSE).

View File

@ -43,15 +43,54 @@
// {inherit meta;}; // {inherit meta;};
in { in {
packages.x86_64-linux = { packages.x86_64-linux = {
materia-frontend-nodejs = dreamBuildPackage { materia-server = dreamBuildPackage {
module = {
config,
lib,
dream2nix,
...
}: {
imports = [dream2nix.modules.dream2nix.WIP-python-pdm];
pdm.lockfile = ./pdm.lock;
pdm.pyproject = ./pyproject.toml;
deps = _: {
python = pkgs.python312;
};
mkDerivation = {
src = ./.;
buildInputs = [
pkgs.python312.pkgs.pdm-backend
];
nativeBuildInputs = [
pkgs.python312.pkgs.wrapPython
];
configurePhase = ''
${lib.getExe pkgs.mkdocs} build -d src/materia/docs/
'';
# TODO: include docs
};
};
meta = with nixpkgs.lib; {
description = "Materia";
license = licenses.mit;
maintainers = with bonLib.maintainers; [L-Nafaryus];
broken = false;
mainProgram = "materia";
};
};
materia-frontend-vue = dreamBuildPackage {
module = { module = {
lib, lib,
config, config,
dream2nix, dream2nix,
... ...
}: { }: {
name = "materia-frontend"; name = "materia-frontend-vue";
version = "0.0.5"; version = "0.1.1";
imports = [ imports = [
dream2nix.modules.dream2nix.WIP-nodejs-builder-v3 dream2nix.modules.dream2nix.WIP-nodejs-builder-v3
@ -59,6 +98,10 @@
mkDerivation = { mkDerivation = {
src = ./workspaces/frontend; src = ./workspaces/frontend;
configurePhase = ''
${self.packages.x86_64-linux.materia-server}/bin/materia export openapi --path ./
npm run openapi
'';
}; };
deps = {nixpkgs, ...}: { deps = {nixpkgs, ...}: {
@ -83,13 +126,13 @@
materia-frontend = dreamBuildPackage { materia-frontend = dreamBuildPackage {
extraArgs = { extraArgs = {
inherit (self.packages.x86_64-linux) materia-frontend-nodejs; inherit (self.packages.x86_64-linux) materia-frontend-vue;
}; };
module = { module = {
config, config,
lib, lib,
dream2nix, dream2nix,
materia-frontend-nodejs, materia-frontend-vue,
... ...
}: { }: {
imports = [dream2nix.modules.dream2nix.WIP-python-pdm]; imports = [dream2nix.modules.dream2nix.WIP-python-pdm];
@ -107,7 +150,7 @@
pkgs.python312.pkgs.pdm-backend pkgs.python312.pkgs.pdm-backend
]; ];
configurePhase = '' configurePhase = ''
cp -rv ${materia-frontend-nodejs}/dist ./src/materia_frontend/ cp -rv ${materia-frontend-vue}/dist ./src/materia_frontend/
''; '';
}; };
}; };

View File

@ -87,3 +87,47 @@ nav:
- reference/security.md - reference/security.md
- reference/tasks.md - reference/tasks.md
- API: api.md - API: api.md
markdown_extensions:
# Python Markdown
abbr:
attr_list:
footnotes:
md_in_html:
tables:
toc:
permalink: true
# Python Markdown Extensions
pymdownx.betterem:
smart_enable: all
pymdownx.caret:
pymdownx.highlight:
line_spans: __span
pymdownx.inlinehilite:
pymdownx.keys:
pymdownx.mark:
pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
pymdownx.tilde:
# pymdownx blocks
pymdownx.blocks.admonition:
types:
- note
- attention
- caution
- danger
- error
- tip
- hint
- warning
# Custom types
- info
- check
pymdownx.blocks.details:
pymdownx.blocks.tab:
alternate_style: True

248
pdm.lock generated
View File

@ -2,17 +2,17 @@
# It is not intended for manual editing. # It is not intended for manual editing.
[metadata] [metadata]
groups = ["default", "dev"] groups = ["default", "dev", "docs", "frontend", "all"]
strategy = ["cross_platform", "inherit_metadata"] strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1" lock_version = "4.4.1"
content_hash = "sha256:764de758c9c4b274659cef493a76abb117253e6ccf30dce9f4e61a74afce2228" content_hash = "sha256:104d22a8697b526a94102232df0443fe395b4eb1dd8529acd933375fbcff7595"
[[package]] [[package]]
name = "aiofiles" name = "aiofiles"
version = "24.1.0" version = "24.1.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "File support for asyncio." summary = "File support for asyncio."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5"}, {file = "aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5"},
{file = "aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c"}, {file = "aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c"},
@ -23,7 +23,7 @@ name = "aioshutil"
version = "1.5" version = "1.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Asynchronous shutil module." summary = "Asynchronous shutil module."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "aioshutil-1.5-py3-none-any.whl", hash = "sha256:bc2a6cdcf1a8615b62f856154fd81131031d03f2834912ebb06d8a2391253652"}, {file = "aioshutil-1.5-py3-none-any.whl", hash = "sha256:bc2a6cdcf1a8615b62f856154fd81131031d03f2834912ebb06d8a2391253652"},
{file = "aioshutil-1.5.tar.gz", hash = "sha256:2756d6cd3bb03405dc7348ac11a0b60eb949ebd63cdd15f56e922410231c1201"}, {file = "aioshutil-1.5.tar.gz", hash = "sha256:2756d6cd3bb03405dc7348ac11a0b60eb949ebd63cdd15f56e922410231c1201"},
@ -34,7 +34,7 @@ name = "aiosmtplib"
version = "3.0.2" version = "3.0.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "asyncio SMTP client" summary = "asyncio SMTP client"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "aiosmtplib-3.0.2-py3-none-any.whl", hash = "sha256:8783059603a34834c7c90ca51103c3aa129d5922003b5ce98dbaa6d4440f10fc"}, {file = "aiosmtplib-3.0.2-py3-none-any.whl", hash = "sha256:8783059603a34834c7c90ca51103c3aa129d5922003b5ce98dbaa6d4440f10fc"},
{file = "aiosmtplib-3.0.2.tar.gz", hash = "sha256:08fd840f9dbc23258025dca229e8a8f04d2ccf3ecb1319585615bfc7933f7f47"}, {file = "aiosmtplib-3.0.2.tar.gz", hash = "sha256:08fd840f9dbc23258025dca229e8a8f04d2ccf3ecb1319585615bfc7933f7f47"},
@ -45,7 +45,7 @@ name = "alembic"
version = "1.13.2" version = "1.13.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A database migration tool for SQLAlchemy." summary = "A database migration tool for SQLAlchemy."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"Mako", "Mako",
"SQLAlchemy>=1.3.0", "SQLAlchemy>=1.3.0",
@ -61,7 +61,7 @@ name = "alembic-postgresql-enum"
version = "1.3.0" version = "1.3.0"
requires_python = "<4.0,>=3.7" requires_python = "<4.0,>=3.7"
summary = "Alembic autogenerate support for creation, alteration and deletion of enums" summary = "Alembic autogenerate support for creation, alteration and deletion of enums"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"SQLAlchemy>=1.4", "SQLAlchemy>=1.4",
"alembic>=1.7", "alembic>=1.7",
@ -76,7 +76,7 @@ name = "amqp"
version = "5.2.0" version = "5.2.0"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Low-level AMQP client for Python (fork of amqplib)." summary = "Low-level AMQP client for Python (fork of amqplib)."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"vine<6.0.0,>=5.0.0", "vine<6.0.0,>=5.0.0",
] ]
@ -90,7 +90,7 @@ name = "annotated-types"
version = "0.6.0" version = "0.6.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Reusable constraint types to use with typing.Annotated" summary = "Reusable constraint types to use with typing.Annotated"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"},
{file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
@ -101,7 +101,7 @@ name = "anyio"
version = "4.4.0" version = "4.4.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "High level compatibility layer for multiple asynchronous event loop implementations" summary = "High level compatibility layer for multiple asynchronous event loop implementations"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"idna>=2.8", "idna>=2.8",
"sniffio>=1.1", "sniffio>=1.1",
@ -130,7 +130,7 @@ name = "asyncpg"
version = "0.29.0" version = "0.29.0"
requires_python = ">=3.8.0" requires_python = ">=3.8.0"
summary = "An asyncio PostgreSQL driver" summary = "An asyncio PostgreSQL driver"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "asyncpg-0.29.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6011b0dc29886ab424dc042bf9eeb507670a3b40aece3439944006aafe023178"}, {file = "asyncpg-0.29.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6011b0dc29886ab424dc042bf9eeb507670a3b40aece3439944006aafe023178"},
{file = "asyncpg-0.29.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b544ffc66b039d5ec5a7454667f855f7fec08e0dfaf5a5490dfafbb7abbd2cfb"}, {file = "asyncpg-0.29.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b544ffc66b039d5ec5a7454667f855f7fec08e0dfaf5a5490dfafbb7abbd2cfb"},
@ -148,7 +148,7 @@ name = "authlib"
version = "1.3.1" version = "1.3.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." summary = "The ultimate Python library in building OAuth and OpenID Connect servers and clients."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"cryptography", "cryptography",
] ]
@ -162,7 +162,7 @@ name = "babel"
version = "2.16.0" version = "2.16.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Internationalization utilities" summary = "Internationalization utilities"
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"},
{file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"},
@ -173,7 +173,7 @@ name = "bcrypt"
version = "4.1.2" version = "4.1.2"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Modern password hashing for your software and your servers" summary = "Modern password hashing for your software and your servers"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "bcrypt-4.1.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e"}, {file = "bcrypt-4.1.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e"},
{file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1"}, {file = "bcrypt-4.1.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1"},
@ -209,7 +209,7 @@ name = "billiard"
version = "4.2.0" version = "4.2.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Python multiprocessing fork with improvements and bugfixes" summary = "Python multiprocessing fork with improvements and bugfixes"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "billiard-4.2.0-py3-none-any.whl", hash = "sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d"}, {file = "billiard-4.2.0-py3-none-any.whl", hash = "sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d"},
{file = "billiard-4.2.0.tar.gz", hash = "sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c"}, {file = "billiard-4.2.0.tar.gz", hash = "sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c"},
@ -242,7 +242,7 @@ name = "cachetools"
version = "5.4.0" version = "5.4.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Extensible memoizing collections and decorators" summary = "Extensible memoizing collections and decorators"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"}, {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"},
{file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"}, {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"},
@ -253,7 +253,7 @@ name = "celery"
version = "5.4.0" version = "5.4.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Distributed Task Queue." summary = "Distributed Task Queue."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"billiard<5.0,>=4.2.0", "billiard<5.0,>=4.2.0",
"click-didyoumean>=0.3.0", "click-didyoumean>=0.3.0",
@ -275,7 +275,7 @@ name = "certifi"
version = "2024.7.4" version = "2024.7.4"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Python package for providing Mozilla's CA Bundle." summary = "Python package for providing Mozilla's CA Bundle."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"},
{file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"},
@ -286,7 +286,7 @@ name = "cffi"
version = "1.16.0" version = "1.16.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Foreign Function Interface for Python calling C code." summary = "Foreign Function Interface for Python calling C code."
groups = ["default"] groups = ["all", "default"]
marker = "platform_python_implementation != \"PyPy\"" marker = "platform_python_implementation != \"PyPy\""
dependencies = [ dependencies = [
"pycparser", "pycparser",
@ -310,7 +310,7 @@ name = "chardet"
version = "5.2.0" version = "5.2.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Universal encoding detector for Python 3" summary = "Universal encoding detector for Python 3"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"},
{file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"},
@ -321,7 +321,7 @@ name = "charset-normalizer"
version = "3.3.2" version = "3.3.2"
requires_python = ">=3.7.0" requires_python = ">=3.7.0"
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
@ -347,7 +347,7 @@ name = "click"
version = "8.1.7" version = "8.1.7"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Composable command line interface toolkit" summary = "Composable command line interface toolkit"
groups = ["default", "dev"] groups = ["all", "default", "dev", "docs"]
dependencies = [ dependencies = [
"colorama; platform_system == \"Windows\"", "colorama; platform_system == \"Windows\"",
] ]
@ -361,7 +361,7 @@ name = "click-didyoumean"
version = "0.3.1" version = "0.3.1"
requires_python = ">=3.6.2" requires_python = ">=3.6.2"
summary = "Enables git-like *did-you-mean* feature in click" summary = "Enables git-like *did-you-mean* feature in click"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"click>=7", "click>=7",
] ]
@ -374,7 +374,7 @@ files = [
name = "click-plugins" name = "click-plugins"
version = "1.1.1" version = "1.1.1"
summary = "An extension module for click to enable registering CLI commands via setuptools entry-points." summary = "An extension module for click to enable registering CLI commands via setuptools entry-points."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"click>=4.0", "click>=4.0",
] ]
@ -388,7 +388,7 @@ name = "click-repl"
version = "0.3.0" version = "0.3.0"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "REPL plugin for Click" summary = "REPL plugin for Click"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"click>=7.0", "click>=7.0",
"prompt-toolkit>=3.0.36", "prompt-toolkit>=3.0.36",
@ -403,7 +403,7 @@ name = "colorama"
version = "0.4.6" version = "0.4.6"
requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
summary = "Cross-platform colored terminal text." summary = "Cross-platform colored terminal text."
groups = ["default", "dev"] groups = ["all", "default", "dev", "docs", "frontend"]
files = [ files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {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.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
@ -460,7 +460,7 @@ name = "cryptography"
version = "43.0.0" version = "43.0.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"cffi>=1.12; platform_python_implementation != \"PyPy\"", "cffi>=1.12; platform_python_implementation != \"PyPy\"",
] ]
@ -499,7 +499,7 @@ name = "cssselect"
version = "1.2.0" version = "1.2.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "cssselect parses CSS3 Selectors and translates them to XPath 1.0" summary = "cssselect parses CSS3 Selectors and translates them to XPath 1.0"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "cssselect-1.2.0-py2.py3-none-any.whl", hash = "sha256:da1885f0c10b60c03ed5eccbb6b68d6eff248d91976fcde348f395d54c9fd35e"}, {file = "cssselect-1.2.0-py2.py3-none-any.whl", hash = "sha256:da1885f0c10b60c03ed5eccbb6b68d6eff248d91976fcde348f395d54c9fd35e"},
{file = "cssselect-1.2.0.tar.gz", hash = "sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc"}, {file = "cssselect-1.2.0.tar.gz", hash = "sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc"},
@ -510,7 +510,7 @@ name = "cssutils"
version = "2.11.1" version = "2.11.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A CSS Cascading Style Sheets library for Python" summary = "A CSS Cascading Style Sheets library for Python"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"more-itertools", "more-itertools",
] ]
@ -524,7 +524,7 @@ name = "dnspython"
version = "2.6.1" version = "2.6.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "DNS toolkit" summary = "DNS toolkit"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"},
{file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"},
@ -535,7 +535,7 @@ name = "email-validator"
version = "2.2.0" version = "2.2.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A robust email address syntax and deliverability validation library." summary = "A robust email address syntax and deliverability validation library."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"dnspython>=2.0.0", "dnspython>=2.0.0",
"idna>=2.0.0", "idna>=2.0.0",
@ -549,7 +549,7 @@ files = [
name = "emails" name = "emails"
version = "0.6" version = "0.6"
summary = "Modern python library for emails." summary = "Modern python library for emails."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"chardet", "chardet",
"cssutils", "cssutils",
@ -568,7 +568,7 @@ name = "eventlet"
version = "0.36.1" version = "0.36.1"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Highly concurrent networking library" summary = "Highly concurrent networking library"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"dnspython>=1.15.0", "dnspython>=1.15.0",
"greenlet>=1.0", "greenlet>=1.0",
@ -583,7 +583,7 @@ name = "fastapi"
version = "0.112.0" version = "0.112.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4", "pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4",
"starlette<0.38.0,>=0.37.2", "starlette<0.38.0,>=0.37.2",
@ -598,7 +598,7 @@ files = [
name = "ghp-import" name = "ghp-import"
version = "2.1.0" version = "2.1.0"
summary = "Copy your docs directly to the gh-pages branch." summary = "Copy your docs directly to the gh-pages branch."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"python-dateutil>=2.8.1", "python-dateutil>=2.8.1",
] ]
@ -612,7 +612,7 @@ name = "greenlet"
version = "3.0.3" version = "3.0.3"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Lightweight in-process concurrent programming" summary = "Lightweight in-process concurrent programming"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
{file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
@ -631,7 +631,7 @@ name = "griffe"
version = "1.2.0" version = "1.2.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." summary = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"colorama>=0.4", "colorama>=0.4",
] ]
@ -642,17 +642,17 @@ files = [
[[package]] [[package]]
name = "griffe-typingdoc" name = "griffe-typingdoc"
version = "0.2.6" version = "0.2.7"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Griffe extension for PEP 727 Documentation Metadata in Typing." summary = "Griffe extension for PEP 727 Documentation Metadata in Typing."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"griffe>=0.49", "griffe>=0.49",
"typing-extensions>=4.7", "typing-extensions>=4.7",
] ]
files = [ files = [
{file = "griffe_typingdoc-0.2.6-py3-none-any.whl", hash = "sha256:2726e6cf1e986f42fe9cab4a95cef103a745327f035a32055816849ca47893e4"}, {file = "griffe_typingdoc-0.2.7-py3-none-any.whl", hash = "sha256:74a825df32fc87fcae2f221df5c5524dca23155cd3c04ec9fa46493669d3cf54"},
{file = "griffe_typingdoc-0.2.6.tar.gz", hash = "sha256:852a17c1e2d29bbbf14a287e7cc5982669343cf60a4ea1618e486eb57aba3248"}, {file = "griffe_typingdoc-0.2.7.tar.gz", hash = "sha256:800841e99f8844ea3c1fae80b19bede7d8eed4195a2586f5db753f7a73f4931d"},
] ]
[[package]] [[package]]
@ -660,7 +660,7 @@ name = "gunicorn"
version = "22.0.0" version = "22.0.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "WSGI HTTP Server for UNIX" summary = "WSGI HTTP Server for UNIX"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"packaging", "packaging",
] ]
@ -674,7 +674,7 @@ name = "h11"
version = "0.14.0" version = "0.14.0"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
{file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
@ -685,7 +685,7 @@ name = "hiredis"
version = "3.0.0" version = "3.0.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Python wrapper for hiredis" summary = "Python wrapper for hiredis"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a"}, {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a"},
{file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1"}, {file = "hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1"},
@ -728,7 +728,7 @@ name = "httpcore"
version = "1.0.5" version = "1.0.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A minimal low-level HTTP client." summary = "A minimal low-level HTTP client."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"certifi", "certifi",
"h11<0.15,>=0.13", "h11<0.15,>=0.13",
@ -743,7 +743,7 @@ name = "httptools"
version = "0.6.1" version = "0.6.1"
requires_python = ">=3.8.0" requires_python = ">=3.8.0"
summary = "A collection of framework independent HTTP protocol utils." summary = "A collection of framework independent HTTP protocol utils."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"},
{file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"},
@ -760,7 +760,7 @@ name = "httpx"
version = "0.27.0" version = "0.27.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The next generation HTTP client." summary = "The next generation HTTP client."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"anyio", "anyio",
"certifi", "certifi",
@ -778,7 +778,7 @@ name = "idna"
version = "3.7" version = "3.7"
requires_python = ">=3.5" requires_python = ">=3.5"
summary = "Internationalized Domain Names in Applications (IDNA)" summary = "Internationalized Domain Names in Applications (IDNA)"
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
{file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
@ -800,7 +800,7 @@ name = "jinja2"
version = "3.1.4" version = "3.1.4"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "A very fast and expressive template engine." summary = "A very fast and expressive template engine."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
dependencies = [ dependencies = [
"MarkupSafe>=2.0", "MarkupSafe>=2.0",
] ]
@ -814,7 +814,7 @@ name = "kombu"
version = "5.4.0" version = "5.4.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Messaging library for Python." summary = "Messaging library for Python."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"amqp<6.0.0,>=5.1.1", "amqp<6.0.0,>=5.1.1",
"vine==5.1.0", "vine==5.1.0",
@ -829,7 +829,7 @@ name = "loguru"
version = "0.7.2" version = "0.7.2"
requires_python = ">=3.5" requires_python = ">=3.5"
summary = "Python logging made (stupidly) simple" summary = "Python logging made (stupidly) simple"
groups = ["default", "dev"] groups = ["all", "default", "dev", "frontend"]
dependencies = [ dependencies = [
"colorama>=0.3.4; sys_platform == \"win32\"", "colorama>=0.3.4; sys_platform == \"win32\"",
"win32-setctime>=1.0.0; sys_platform == \"win32\"", "win32-setctime>=1.0.0; sys_platform == \"win32\"",
@ -844,7 +844,7 @@ name = "lxml"
version = "5.2.2" version = "5.2.2"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." summary = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"}, {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"},
{file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"}, {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"},
@ -899,7 +899,7 @@ name = "mako"
version = "1.3.5" version = "1.3.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A super-fast templating language that borrows the best ideas from the existing templating languages." summary = "A super-fast templating language that borrows the best ideas from the existing templating languages."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"MarkupSafe>=0.9.2", "MarkupSafe>=0.9.2",
] ]
@ -913,7 +913,7 @@ name = "markdown"
version = "3.7" version = "3.7"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Python implementation of John Gruber's Markdown." summary = "Python implementation of John Gruber's Markdown."
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"},
{file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"},
@ -924,7 +924,7 @@ name = "markupsafe"
version = "2.1.5" version = "2.1.5"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Safely add untrusted strings to HTML/XML markup." summary = "Safely add untrusted strings to HTML/XML markup."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
{file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
@ -946,7 +946,7 @@ requires_python = ">=3.12,<3.13"
editable = true editable = true
path = "./workspaces/frontend" path = "./workspaces/frontend"
summary = "Materia frontend" summary = "Materia frontend"
groups = ["dev"] groups = ["all", "dev", "frontend"]
dependencies = [ dependencies = [
"loguru<1.0.0,>=0.7.2", "loguru<1.0.0,>=0.7.2",
] ]
@ -956,7 +956,7 @@ name = "mergedeep"
version = "1.3.4" version = "1.3.4"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "A deep merge function for 🐍." summary = "A deep merge function for 🐍."
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
{file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
@ -967,7 +967,7 @@ name = "mkdocs"
version = "1.6.1" version = "1.6.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Project documentation with Markdown." summary = "Project documentation with Markdown."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"click>=7.0", "click>=7.0",
"colorama>=0.4; platform_system == \"Windows\"", "colorama>=0.4; platform_system == \"Windows\"",
@ -993,7 +993,7 @@ name = "mkdocs-autorefs"
version = "1.2.0" version = "1.2.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Automatically link across pages in MkDocs." summary = "Automatically link across pages in MkDocs."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"Markdown>=3.3", "Markdown>=3.3",
"markupsafe>=2.0.1", "markupsafe>=2.0.1",
@ -1009,7 +1009,7 @@ name = "mkdocs-get-deps"
version = "0.2.0" version = "0.2.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" summary = "MkDocs extension that lists all dependencies according to a mkdocs.yml file"
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"mergedeep>=1.3.4", "mergedeep>=1.3.4",
"platformdirs>=2.2.0", "platformdirs>=2.2.0",
@ -1022,10 +1022,10 @@ files = [
[[package]] [[package]]
name = "mkdocs-material" name = "mkdocs-material"
version = "9.5.34" version = "9.5.38"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Documentation that simply works" summary = "Documentation that simply works"
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"babel~=2.10", "babel~=2.10",
"colorama~=0.4", "colorama~=0.4",
@ -1040,8 +1040,8 @@ dependencies = [
"requests~=2.26", "requests~=2.26",
] ]
files = [ files = [
{file = "mkdocs_material-9.5.34-py3-none-any.whl", hash = "sha256:54caa8be708de2b75167fd4d3b9f3d949579294f49cb242515d4653dbee9227e"}, {file = "mkdocs_material-9.5.38-py3-none-any.whl", hash = "sha256:d4779051d52ba9f1e7e344b34de95449c7c366c212b388e4a2db9a3db043c228"},
{file = "mkdocs_material-9.5.34.tar.gz", hash = "sha256:1e60ddf716cfb5679dfd65900b8a25d277064ed82d9a53cd5190e3f894df7840"}, {file = "mkdocs_material-9.5.38.tar.gz", hash = "sha256:1843c5171ad6b489550aeaf7358e5b7128cc03ddcf0fb4d91d19aa1e691a63b8"},
] ]
[[package]] [[package]]
@ -1049,7 +1049,7 @@ name = "mkdocs-material-extensions"
version = "1.3.1" version = "1.3.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Extension pack for Python Markdown and MkDocs Material." summary = "Extension pack for Python Markdown and MkDocs Material."
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"},
{file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"},
@ -1060,7 +1060,7 @@ name = "mkdocstrings"
version = "0.26.0" version = "0.26.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Automatic documentation from sources, for MkDocs." summary = "Automatic documentation from sources, for MkDocs."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"Jinja2>=2.11.1", "Jinja2>=2.11.1",
"Markdown>=3.6", "Markdown>=3.6",
@ -1078,18 +1078,18 @@ files = [
[[package]] [[package]]
name = "mkdocstrings-python" name = "mkdocstrings-python"
version = "1.10.9" version = "1.11.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A Python handler for mkdocstrings." summary = "A Python handler for mkdocstrings."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"griffe>=0.49", "griffe>=0.49",
"mkdocs-autorefs>=1.0", "mkdocs-autorefs>=1.2",
"mkdocstrings>=0.25", "mkdocstrings>=0.26",
] ]
files = [ files = [
{file = "mkdocstrings_python-1.10.9-py3-none-any.whl", hash = "sha256:cbe98710a6757dfd4dff79bf36cb9731908fb4c69dd2736b15270ae7a488243d"}, {file = "mkdocstrings_python-1.11.1-py3-none-any.whl", hash = "sha256:a21a1c05acef129a618517bb5aae3e33114f569b11588b1e7af3e9d4061a71af"},
{file = "mkdocstrings_python-1.10.9.tar.gz", hash = "sha256:f344aaa47e727d8a2dc911e063025e58e2b7fb31a41110ccc3902aa6be7ca196"}, {file = "mkdocstrings_python-1.11.1.tar.gz", hash = "sha256:8824b115c5359304ab0b5378a91f6202324a849e1da907a3485b59208b797322"},
] ]
[[package]] [[package]]
@ -1097,7 +1097,7 @@ name = "more-itertools"
version = "10.3.0" version = "10.3.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "More routines for operating on iterables, beyond itertools" summary = "More routines for operating on iterables, beyond itertools"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "more-itertools-10.3.0.tar.gz", hash = "sha256:e5d93ef411224fbcef366a6e8ddc4c5781bc6359d43412a65dd5964e46111463"}, {file = "more-itertools-10.3.0.tar.gz", hash = "sha256:e5d93ef411224fbcef366a6e8ddc4c5781bc6359d43412a65dd5964e46111463"},
{file = "more_itertools-10.3.0-py3-none-any.whl", hash = "sha256:ea6a02e24a9161e51faad17a8782b92a0df82c12c1c8886fec7f0c3fa1a1b320"}, {file = "more_itertools-10.3.0-py3-none-any.whl", hash = "sha256:ea6a02e24a9161e51faad17a8782b92a0df82c12c1c8886fec7f0c3fa1a1b320"},
@ -1130,7 +1130,7 @@ name = "packaging"
version = "24.1" version = "24.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Core utilities for Python packages" summary = "Core utilities for Python packages"
groups = ["default", "dev"] groups = ["all", "default", "dev", "docs"]
files = [ files = [
{file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
{file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
@ -1140,7 +1140,7 @@ files = [
name = "paginate" name = "paginate"
version = "0.5.7" version = "0.5.7"
summary = "Divides large result sets into pages for easier browsing" summary = "Divides large result sets into pages for easier browsing"
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"},
{file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"},
@ -1151,7 +1151,7 @@ name = "pathspec"
version = "0.12.1" version = "0.12.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Utility library for gitignore style pattern matching of file paths." summary = "Utility library for gitignore style pattern matching of file paths."
groups = ["dev"] groups = ["all", "dev", "docs"]
files = [ files = [
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {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.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
@ -1162,7 +1162,7 @@ name = "pillow"
version = "10.4.0" version = "10.4.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Python Imaging Library (Fork)" summary = "Python Imaging Library (Fork)"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"},
{file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"},
@ -1197,7 +1197,7 @@ name = "platformdirs"
version = "4.2.2" version = "4.2.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
groups = ["dev"] groups = ["all", "dev", "docs"]
files = [ files = [
{file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
{file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
@ -1218,7 +1218,7 @@ files = [
name = "premailer" name = "premailer"
version = "3.10.0" version = "3.10.0"
summary = "Turns CSS blocks into style attributes" summary = "Turns CSS blocks into style attributes"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"cachetools", "cachetools",
"cssselect", "cssselect",
@ -1236,7 +1236,7 @@ name = "prompt-toolkit"
version = "3.0.47" version = "3.0.47"
requires_python = ">=3.7.0" requires_python = ">=3.7.0"
summary = "Library for building powerful interactive command lines in Python" summary = "Library for building powerful interactive command lines in Python"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"wcwidth", "wcwidth",
] ]
@ -1250,7 +1250,7 @@ name = "psycopg2-binary"
version = "2.9.9" version = "2.9.9"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "psycopg2 - Python-PostgreSQL Database Adapter" summary = "psycopg2 - Python-PostgreSQL Database Adapter"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c"}, {file = "psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c"},
{file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"},
@ -1272,7 +1272,7 @@ name = "pycparser"
version = "2.22" version = "2.22"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "C parser in Python" summary = "C parser in Python"
groups = ["default"] groups = ["all", "default"]
marker = "platform_python_implementation != \"PyPy\"" marker = "platform_python_implementation != \"PyPy\""
files = [ files = [
{file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"},
@ -1284,7 +1284,7 @@ name = "pydanclick"
version = "0.2.1" version = "0.2.1"
requires_python = "<4.0,>=3.8" requires_python = "<4.0,>=3.8"
summary = "Use Pydantic models as Click options" summary = "Use Pydantic models as Click options"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"annotated-types<0.7.0,>=0.6.0", "annotated-types<0.7.0,>=0.6.0",
"click<9.0.0,>=8.1.7", "click<9.0.0,>=8.1.7",
@ -1302,7 +1302,7 @@ name = "pydantic"
version = "2.8.2" version = "2.8.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Data validation using Python type hints" summary = "Data validation using Python type hints"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"annotated-types>=0.4.0", "annotated-types>=0.4.0",
"pydantic-core==2.20.1", "pydantic-core==2.20.1",
@ -1318,7 +1318,7 @@ name = "pydantic-core"
version = "2.20.1" version = "2.20.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Core functionality for Pydantic validation and serialization" summary = "Core functionality for Pydantic validation and serialization"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"typing-extensions!=4.7.0,>=4.6.0", "typing-extensions!=4.7.0,>=4.6.0",
] ]
@ -1359,7 +1359,7 @@ name = "pydantic-settings"
version = "2.4.0" version = "2.4.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Settings management using Pydantic" summary = "Settings management using Pydantic"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"pydantic>=2.7.0", "pydantic>=2.7.0",
"python-dotenv>=0.21.0", "python-dotenv>=0.21.0",
@ -1385,7 +1385,7 @@ name = "pygments"
version = "2.18.0" version = "2.18.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Pygments is a syntax highlighting package written in Python." summary = "Pygments is a syntax highlighting package written in Python."
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"},
{file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"},
@ -1396,7 +1396,7 @@ name = "pyjwt"
version = "2.9.0" version = "2.9.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "JSON Web Token implementation in Python" summary = "JSON Web Token implementation in Python"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, {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.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"},
@ -1404,17 +1404,17 @@ files = [
[[package]] [[package]]
name = "pymdown-extensions" name = "pymdown-extensions"
version = "10.9" version = "10.11"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Extension pack for Python Markdown." summary = "Extension pack for Python Markdown."
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"markdown>=3.6", "markdown>=3.6",
"pyyaml", "pyyaml",
] ]
files = [ files = [
{file = "pymdown_extensions-10.9-py3-none-any.whl", hash = "sha256:d323f7e90d83c86113ee78f3fe62fc9dee5f56b54d912660703ea1816fed5626"}, {file = "pymdown_extensions-10.11-py3-none-any.whl", hash = "sha256:e68080eac44634406b31f4aec58fbad17b0ec5fca6b086e29008616d54c3906b"},
{file = "pymdown_extensions-10.9.tar.gz", hash = "sha256:6ff740bcd99ec4172a938970d42b96128bdc9d4b9bcad72494f29921dc69b753"}, {file = "pymdown_extensions-10.11.tar.gz", hash = "sha256:2653fb658bca5f278029f8c67a67f0f08b7bd3c657e2630d261ad542e97c4192"},
] ]
[[package]] [[package]]
@ -1482,7 +1482,7 @@ name = "python-dateutil"
version = "2.9.0.post0" version = "2.9.0.post0"
requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
summary = "Extensions to the standard Python datetime module" summary = "Extensions to the standard Python datetime module"
groups = ["default", "dev"] groups = ["all", "default", "docs"]
dependencies = [ dependencies = [
"six>=1.5", "six>=1.5",
] ]
@ -1496,7 +1496,7 @@ name = "python-dotenv"
version = "1.0.1" version = "1.0.1"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Read key-value pairs from a .env file and set them as environment variables" summary = "Read key-value pairs from a .env file and set them as environment variables"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
{file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
@ -1507,7 +1507,7 @@ name = "python-multipart"
version = "0.0.9" version = "0.0.9"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "A streaming multipart parser for Python" summary = "A streaming multipart parser for Python"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"},
{file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"},
@ -1518,7 +1518,7 @@ name = "pyyaml"
version = "6.0.1" version = "6.0.1"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "YAML parser and emitter for Python" summary = "YAML parser and emitter for Python"
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
@ -1535,7 +1535,7 @@ name = "pyyaml-env-tag"
version = "0.1" version = "0.1"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "A custom YAML tag for referencing environment variables in YAML files. " summary = "A custom YAML tag for referencing environment variables in YAML files. "
groups = ["dev"] groups = ["all", "docs"]
dependencies = [ dependencies = [
"pyyaml", "pyyaml",
] ]
@ -1549,7 +1549,7 @@ name = "redis"
version = "5.0.8" version = "5.0.8"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Python client for Redis database and key-value store" summary = "Python client for Redis database and key-value store"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "redis-5.0.8-py3-none-any.whl", hash = "sha256:56134ee08ea909106090934adc36f65c9bcbbaecea5b21ba704ba6fb561f8eb4"}, {file = "redis-5.0.8-py3-none-any.whl", hash = "sha256:56134ee08ea909106090934adc36f65c9bcbbaecea5b21ba704ba6fb561f8eb4"},
{file = "redis-5.0.8.tar.gz", hash = "sha256:0c5b10d387568dfe0698c6fad6615750c24170e548ca2deac10c649d463e9870"}, {file = "redis-5.0.8.tar.gz", hash = "sha256:0c5b10d387568dfe0698c6fad6615750c24170e548ca2deac10c649d463e9870"},
@ -1561,7 +1561,7 @@ version = "5.0.8"
extras = ["hiredis"] extras = ["hiredis"]
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Python client for Redis database and key-value store" summary = "Python client for Redis database and key-value store"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"hiredis>1.0.0", "hiredis>1.0.0",
"redis==5.0.8", "redis==5.0.8",
@ -1576,7 +1576,7 @@ name = "regex"
version = "2024.7.24" version = "2024.7.24"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Alternative regular expression module, to replace re." summary = "Alternative regular expression module, to replace re."
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"},
{file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"},
@ -1601,7 +1601,7 @@ name = "requests"
version = "2.32.3" version = "2.32.3"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Python HTTP for Humans." summary = "Python HTTP for Humans."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
dependencies = [ dependencies = [
"certifi>=2017.4.17", "certifi>=2017.4.17",
"charset-normalizer<4,>=2", "charset-normalizer<4,>=2",
@ -1618,7 +1618,7 @@ name = "six"
version = "1.16.0" version = "1.16.0"
requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
summary = "Python 2 and 3 compatibility utilities" summary = "Python 2 and 3 compatibility utilities"
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
@ -1629,7 +1629,7 @@ name = "smart-open"
version = "7.0.4" version = "7.0.4"
requires_python = "<4.0,>=3.7" requires_python = "<4.0,>=3.7"
summary = "Utils for streaming large files (S3, HDFS, GCS, Azure Blob Storage, gzip, bz2...)" summary = "Utils for streaming large files (S3, HDFS, GCS, Azure Blob Storage, gzip, bz2...)"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"wrapt", "wrapt",
] ]
@ -1643,7 +1643,7 @@ name = "sniffio"
version = "1.3.1" version = "1.3.1"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Sniff out which async library your code is running under" summary = "Sniff out which async library your code is running under"
groups = ["default", "dev"] groups = ["all", "default", "dev"]
files = [ files = [
{file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {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.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
@ -1654,7 +1654,7 @@ name = "sqids"
version = "0.4.1" version = "0.4.1"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Generate YouTube-like ids from numbers." summary = "Generate YouTube-like ids from numbers."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "sqids-0.4.1-py3-none-any.whl", hash = "sha256:fe48319ae1a7ea4faca77920f454fcf2946bbca540a468a98d979ba490d195bd"}, {file = "sqids-0.4.1-py3-none-any.whl", hash = "sha256:fe48319ae1a7ea4faca77920f454fcf2946bbca540a468a98d979ba490d195bd"},
{file = "sqids-0.4.1.tar.gz", hash = "sha256:ffc3fbfef63491bee8b940a98065388345dbefb06d49e415b7a9e475ca200f9d"}, {file = "sqids-0.4.1.tar.gz", hash = "sha256:ffc3fbfef63491bee8b940a98065388345dbefb06d49e415b7a9e475ca200f9d"},
@ -1665,7 +1665,7 @@ name = "sqlalchemy"
version = "2.0.31" version = "2.0.31"
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Database Abstraction Library" summary = "Database Abstraction Library"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"greenlet!=0.4.17; (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\") and python_version < \"3.13\"", "greenlet!=0.4.17; (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\") and python_version < \"3.13\"",
"typing-extensions>=4.6.0", "typing-extensions>=4.6.0",
@ -1689,7 +1689,7 @@ version = "2.0.31"
extras = ["asyncio"] extras = ["asyncio"]
requires_python = ">=3.7" requires_python = ">=3.7"
summary = "Database Abstraction Library" summary = "Database Abstraction Library"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"greenlet!=0.4.17", "greenlet!=0.4.17",
"sqlalchemy==2.0.31", "sqlalchemy==2.0.31",
@ -1712,7 +1712,7 @@ name = "starlette"
version = "0.37.2" version = "0.37.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The little ASGI library that shines." summary = "The little ASGI library that shines."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"anyio<5,>=3.4.0", "anyio<5,>=3.4.0",
] ]
@ -1726,7 +1726,7 @@ name = "streaming-form-data"
version = "1.16.0" version = "1.16.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Streaming parser for multipart/form-data" summary = "Streaming parser for multipart/form-data"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"smart-open>=6.0", "smart-open>=6.0",
] ]
@ -1739,7 +1739,7 @@ name = "toml"
version = "0.10.2" version = "0.10.2"
requires_python = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" requires_python = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
summary = "Python Library for Tom's Obvious, Minimal Language" summary = "Python Library for Tom's Obvious, Minimal Language"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
@ -1750,7 +1750,7 @@ name = "typing-extensions"
version = "4.12.2" version = "4.12.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Backported and Experimental Type Hints for Python 3.8+" summary = "Backported and Experimental Type Hints for Python 3.8+"
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
{file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
@ -1761,7 +1761,7 @@ name = "tzdata"
version = "2024.1" version = "2024.1"
requires_python = ">=2" requires_python = ">=2"
summary = "Provider of IANA time zone data" summary = "Provider of IANA time zone data"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
{file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
@ -1772,7 +1772,7 @@ name = "urllib3"
version = "2.2.2" version = "2.2.2"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "HTTP library with thread-safe connection pooling, file post, and more." summary = "HTTP library with thread-safe connection pooling, file post, and more."
groups = ["default", "dev"] groups = ["all", "default", "docs"]
files = [ files = [
{file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
{file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
@ -1783,7 +1783,7 @@ name = "uvicorn"
version = "0.30.5" version = "0.30.5"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The lightning-fast ASGI server." summary = "The lightning-fast ASGI server."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"click>=7.0", "click>=7.0",
"h11>=0.8", "h11>=0.8",
@ -1798,7 +1798,7 @@ name = "uvicorn-worker"
version = "0.2.0" version = "0.2.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Uvicorn worker for Gunicorn! ✨" summary = "Uvicorn worker for Gunicorn! ✨"
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"gunicorn>=20.1.0", "gunicorn>=20.1.0",
"uvicorn>=0.14.0", "uvicorn>=0.14.0",
@ -1814,7 +1814,7 @@ version = "0.30.5"
extras = ["standard"] extras = ["standard"]
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "The lightning-fast ASGI server." summary = "The lightning-fast ASGI server."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"colorama>=0.4; sys_platform == \"win32\"", "colorama>=0.4; sys_platform == \"win32\"",
"httptools>=0.5.0", "httptools>=0.5.0",
@ -1835,7 +1835,7 @@ name = "uvloop"
version = "0.19.0" version = "0.19.0"
requires_python = ">=3.8.0" requires_python = ">=3.8.0"
summary = "Fast implementation of asyncio event loop on top of libuv" summary = "Fast implementation of asyncio event loop on top of libuv"
groups = ["default"] groups = ["all", "default"]
marker = "(sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\"" marker = "(sys_platform != \"cygwin\" and sys_platform != \"win32\") and platform_python_implementation != \"PyPy\""
files = [ files = [
{file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"},
@ -1852,7 +1852,7 @@ name = "vine"
version = "5.1.0" version = "5.1.0"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Python promises." summary = "Python promises."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc"}, {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.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0"},
@ -1863,7 +1863,7 @@ name = "watchdog"
version = "5.0.0" version = "5.0.0"
requires_python = ">=3.9" requires_python = ">=3.9"
summary = "Filesystem events monitoring" summary = "Filesystem events monitoring"
groups = ["dev"] groups = ["all", "docs"]
files = [ files = [
{file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1e26f570dd7f5178656affb24d6f0e22ce66c8daf88d4061a27bfb9ac866b40d"}, {file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1e26f570dd7f5178656affb24d6f0e22ce66c8daf88d4061a27bfb9ac866b40d"},
{file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d146331e6b206baa9f6dd40f72b5783ad2302c240df68e7fce196d30588ccf7b"}, {file = "watchdog-5.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d146331e6b206baa9f6dd40f72b5783ad2302c240df68e7fce196d30588ccf7b"},
@ -1890,7 +1890,7 @@ name = "watchfiles"
version = "0.22.0" version = "0.22.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "Simple, modern and high performance file watching and code reload in python." summary = "Simple, modern and high performance file watching and code reload in python."
groups = ["default"] groups = ["all", "default"]
dependencies = [ dependencies = [
"anyio>=3.0.0", "anyio>=3.0.0",
] ]
@ -1927,7 +1927,7 @@ files = [
name = "wcwidth" name = "wcwidth"
version = "0.2.13" version = "0.2.13"
summary = "Measures the displayed width of unicode strings in a terminal" summary = "Measures the displayed width of unicode strings in a terminal"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {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.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"},
@ -1938,7 +1938,7 @@ name = "websockets"
version = "12.0" version = "12.0"
requires_python = ">=3.8" requires_python = ">=3.8"
summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" summary = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"},
{file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"},
@ -1975,7 +1975,7 @@ name = "win32-setctime"
version = "1.1.0" version = "1.1.0"
requires_python = ">=3.5" requires_python = ">=3.5"
summary = "A small Python utility to set file creation time on Windows" summary = "A small Python utility to set file creation time on Windows"
groups = ["default", "dev"] groups = ["all", "default", "dev", "frontend"]
marker = "sys_platform == \"win32\"" marker = "sys_platform == \"win32\""
files = [ files = [
{file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"},
@ -1987,7 +1987,7 @@ name = "wrapt"
version = "1.16.0" version = "1.16.0"
requires_python = ">=3.6" requires_python = ">=3.6"
summary = "Module for decorators, wrappers and monkey patching." summary = "Module for decorators, wrappers and monkey patching."
groups = ["default"] groups = ["all", "default"]
files = [ files = [
{file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
{file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},

2
pdm.toml Normal file
View File

@ -0,0 +1,2 @@
[repository.elnafo-vcs]
url = "https://vcs.elnafo.ru/api/packages/L-Nafaryus/pypi"

View File

@ -1,7 +1,7 @@
[project] [project]
name = "materia" name = "materia"
version = "0.1.1" version = "0.1.1"
description = "Materia is a file server" description = "Materia is a simple and fast cloud storage"
authors = [ authors = [
{name = "L-Nafaryus", email = "l.nafaryus@gmail.com"}, {name = "L-Nafaryus", email = "l.nafaryus@gmail.com"},
] ]
@ -43,11 +43,26 @@ requires-python = ">=3.12,<3.13"
readme = "README.md" readme = "README.md"
license = {text = "MIT"} license = {text = "MIT"}
[project.optional-dependencies]
docs = [
"mkdocs-material>=9.5.38",
"mkdocstrings-python>=1.11.1",
"griffe-typingdoc>=0.2.7",
"pymdown-extensions>=10.11",
]
frontend = [
"materia-frontend>=0.1.1",
]
all = [
"materia[docs,frontend]",
]
[build-system] [build-system]
requires = ["pdm-backend"] requires = ["pdm-backend"]
build-backend = "pdm.backend" build-backend = "pdm.backend"
[project.scripts] [project.scripts]
materia = "materia.app.cli:cli" materia = "materia.app.cli:cli"
[tool.pyright] [tool.pyright]
@ -57,9 +72,9 @@ reportGeneralTypeIssues = false
pythonpath = ["."] pythonpath = ["."]
testpaths = ["tests"] testpaths = ["tests"]
[tool.pdm] [tool.pdm]
distribution = true distribution = true
[tool.pdm.dev-dependencies] [tool.pdm.dev-dependencies]
dev = [ dev = [
"-e file:///${PROJECT_ROOT}/workspaces/frontend", "-e file:///${PROJECT_ROOT}/workspaces/frontend",
@ -70,9 +85,6 @@ dev = [
"pytest-asyncio>=0.23.7", "pytest-asyncio>=0.23.7",
"asgi-lifespan>=2.1.0", "asgi-lifespan>=2.1.0",
"pytest-cov>=5.0.0", "pytest-cov>=5.0.0",
"mkdocs-material>=9.5.34",
"mkdocstrings-python>=1.10.9",
"griffe-typingdoc>=0.2.6",
] ]
[tool.pdm.build] [tool.pdm.build]
@ -86,3 +98,17 @@ rev.cmd = "alembic revision {args:--autogenerate}"
upgrade.cmd = "alembic upgrade {args:head}" upgrade.cmd = "alembic upgrade {args:head}"
downgrade.cmd = "alembic downgrade {args:base}" downgrade.cmd = "alembic downgrade {args:base}"
remove-revs.shell = "rm -v ./src/materia/models/migrations/versions/*.py" remove-revs.shell = "rm -v ./src/materia/models/migrations/versions/*.py"
docs.shell = "pdm run mkdocs build -d src/materia/docs/"
pre_build.composite = [ "docs" ]
[tool.pdm.resolution]
respect-source-order = true
[[tool.pdm.source]]
name = "pypi"
url = "https://pypi.org/simple"
[[tool.pdm.source]]
name = "elnafo-vcs"
url = "https://vcs.elnafo.ru/api/packages/L-Nafaryus/pypi"
verify_ssl = true

View File

@ -92,7 +92,7 @@ class Cache(BaseModel):
self.scheme, self.address, self.port, self.database self.scheme, self.address, self.port, self.database
) )
else: else:
raise NotImplemented() raise NotImplementedError()
class Security(BaseModel): class Security(BaseModel):
@ -110,7 +110,7 @@ class OAuth2(BaseModel):
# check if signing algo need a key or generate it | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, EdDSA # check if signing algo need a key or generate it | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, EdDSA
jwt_signing_key: Optional[Union[str, Path]] = None jwt_signing_key: Optional[Union[str, Path]] = None
jwt_secret: Optional[Union[str, Path]] = ( jwt_secret: Optional[Union[str, Path]] = (
None # only for HS256, HS384, HS512 | generate "changeme" # None # only for HS256, HS384, HS512 | generate
) )
access_token_lifetime: int = 3600 access_token_lifetime: int = 3600
refresh_token_lifetime: int = 730 * 60 refresh_token_lifetime: int = 730 * 60

View File

@ -7,27 +7,28 @@ from pathlib import Path
from materia.core.misc import optional from materia.core.misc import optional
from materia.routers import middleware from materia.routers import middleware
from materia import docs as materia_docs
router = APIRouter() router = APIRouter()
# templates = Jinja2Templates(directory=Path(materia_docs.__path__[0]))
# p = Path(__file__).parent.joinpath("..", "docs").resolve()
# router.mount("/docs", StaticFiles(directory="doces", html=True), name="docs")
try:
from materia import docs as materia_docs
except ImportError:
pass
else:
@router.get("/docs/{catchall:path}", include_in_schema=False) @router.get("/docs/{catchall:path}", include_in_schema=False)
async def docs(request: Request, ctx: middleware.Context = Depends()): async def docs(request: Request, ctx: middleware.Context = Depends()):
docs_directory = Path(materia_docs.__path__[0]).resolve() docs_directory = Path(materia_docs.__path__[0]).resolve()
target = docs_directory.joinpath(request.path_params["catchall"]).resolve() target = docs_directory.joinpath(request.path_params["catchall"]).resolve()
if not optional(target.relative_to, docs_directory): if not optional(target.relative_to, docs_directory):
raise HTTPException(status.HTTP_403_FORBIDDEN) raise HTTPException(status.HTTP_403_FORBIDDEN)
if target.is_dir() and (index := target.joinpath("index.html")).is_file(): if target.is_dir() and (index := target.joinpath("index.html")).is_file():
return FileResponse(index) return FileResponse(index)
if not target.is_file(): if not target.is_file():
raise HTTPException(status.HTTP_404_NOT_FOUND) raise HTTPException(status.HTTP_404_NOT_FOUND)
return FileResponse(target) return FileResponse(target)

View File

@ -1,16 +1,7 @@
# materia-frontend # materia-frontend
## Building (npm) **Documentation**: [https://storage.elnafo.ru/docs](https://storage.elnafo.ru/docs)
```sh **Source**: [https://vcs.elnafo.ru/L-Nafaryus/materia](https://vcs.elnafo.ru/L-Nafaryus/materia)
npm install
npm run build
```
## Building / installing (pdm)
```sh
pdm build
pdm install --prod --no-editable
```
This is part of the Materia project.

View File

@ -1,12 +1,12 @@
{ {
"name": "materia-frontend", "name": "materia-frontend-vue",
"version": "0.0.5", "version": "0.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "materia-frontend", "name": "materia-frontend-vue",
"version": "0.0.5", "version": "0.1.1",
"dependencies": { "dependencies": {
"@catppuccin/tailwindcss": "^0.1.6", "@catppuccin/tailwindcss": "^0.1.6",
"@hey-api/client-axios": "^0.2.3", "@hey-api/client-axios": "^0.2.3",
@ -27,7 +27,6 @@
"@vitejs/plugin-vue-jsx": "^3.1.0", "@vitejs/plugin-vue-jsx": "^3.1.0",
"@vue/tsconfig": "^0.5.0", "@vue/tsconfig": "^0.5.0",
"npm-run-all2": "^6.1.1", "npm-run-all2": "^6.1.1",
"openapi-typescript-codegen": "^0.29.0",
"typescript": "~5.3.0", "typescript": "~5.3.0",
"vite": "^5.0.10", "vite": "^5.0.10",
"vue-tsc": "^2.0.29" "vue-tsc": "^2.0.29"
@ -515,9 +514,9 @@
} }
}, },
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
"integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@ -531,9 +530,9 @@
} }
}, },
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
"integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -547,9 +546,9 @@
} }
}, },
"node_modules/@esbuild/android-arm64": { "node_modules/@esbuild/android-arm64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
"integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -563,9 +562,9 @@
} }
}, },
"node_modules/@esbuild/android-x64": { "node_modules/@esbuild/android-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
"integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -579,9 +578,9 @@
} }
}, },
"node_modules/@esbuild/darwin-arm64": { "node_modules/@esbuild/darwin-arm64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
"integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -595,9 +594,9 @@
} }
}, },
"node_modules/@esbuild/darwin-x64": { "node_modules/@esbuild/darwin-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
"integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -611,9 +610,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-arm64": { "node_modules/@esbuild/freebsd-arm64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
"integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -627,9 +626,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-x64": { "node_modules/@esbuild/freebsd-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
"integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -643,9 +642,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm": { "node_modules/@esbuild/linux-arm": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
"integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -659,9 +658,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm64": { "node_modules/@esbuild/linux-arm64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
"integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -675,9 +674,9 @@
} }
}, },
"node_modules/@esbuild/linux-ia32": { "node_modules/@esbuild/linux-ia32": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
"integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -691,9 +690,9 @@
} }
}, },
"node_modules/@esbuild/linux-loong64": { "node_modules/@esbuild/linux-loong64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
"integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
@ -707,9 +706,9 @@
} }
}, },
"node_modules/@esbuild/linux-mips64el": { "node_modules/@esbuild/linux-mips64el": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
"integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
@ -723,9 +722,9 @@
} }
}, },
"node_modules/@esbuild/linux-ppc64": { "node_modules/@esbuild/linux-ppc64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
"integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@ -739,9 +738,9 @@
} }
}, },
"node_modules/@esbuild/linux-riscv64": { "node_modules/@esbuild/linux-riscv64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
"integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -755,9 +754,9 @@
} }
}, },
"node_modules/@esbuild/linux-s390x": { "node_modules/@esbuild/linux-s390x": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
"integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@ -771,9 +770,9 @@
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
"integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -787,9 +786,9 @@
} }
}, },
"node_modules/@esbuild/netbsd-x64": { "node_modules/@esbuild/netbsd-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
"integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -803,9 +802,9 @@
} }
}, },
"node_modules/@esbuild/openbsd-x64": { "node_modules/@esbuild/openbsd-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
"integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -819,9 +818,9 @@
} }
}, },
"node_modules/@esbuild/sunos-x64": { "node_modules/@esbuild/sunos-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
"integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -835,9 +834,9 @@
} }
}, },
"node_modules/@esbuild/win32-arm64": { "node_modules/@esbuild/win32-arm64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
"integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -851,9 +850,9 @@
} }
}, },
"node_modules/@esbuild/win32-ia32": { "node_modules/@esbuild/win32-ia32": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
"integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -867,9 +866,9 @@
} }
}, },
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
"integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1027,9 +1026,9 @@
} }
}, },
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
"integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -1040,9 +1039,9 @@
] ]
}, },
"node_modules/@rollup/rollup-android-arm64": { "node_modules/@rollup/rollup-android-arm64": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
"integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1053,9 +1052,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-arm64": { "node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
"integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1066,9 +1065,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-x64": { "node_modules/@rollup/rollup-darwin-x64": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
"integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1079,9 +1078,22 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
"integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
"integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -1092,9 +1104,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-gnu": { "node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
"integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1105,9 +1117,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-musl": { "node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
"integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1117,10 +1129,23 @@
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
"integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
"cpu": [
"ppc64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
"integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -1130,10 +1155,23 @@
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
"integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
"cpu": [
"s390x"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": { "node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
"integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1144,9 +1182,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-musl": { "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
"integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1157,9 +1195,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-arm64-msvc": { "node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
"integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -1170,9 +1208,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-ia32-msvc": { "node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
"integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@ -1183,9 +1221,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-x64-msvc": { "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
"integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -1955,9 +1993,9 @@
} }
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.20.2", "version": "0.21.5",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
"integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
@ -1967,29 +2005,29 @@
"node": ">=12" "node": ">=12"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/aix-ppc64": "0.20.2", "@esbuild/aix-ppc64": "0.21.5",
"@esbuild/android-arm": "0.20.2", "@esbuild/android-arm": "0.21.5",
"@esbuild/android-arm64": "0.20.2", "@esbuild/android-arm64": "0.21.5",
"@esbuild/android-x64": "0.20.2", "@esbuild/android-x64": "0.21.5",
"@esbuild/darwin-arm64": "0.20.2", "@esbuild/darwin-arm64": "0.21.5",
"@esbuild/darwin-x64": "0.20.2", "@esbuild/darwin-x64": "0.21.5",
"@esbuild/freebsd-arm64": "0.20.2", "@esbuild/freebsd-arm64": "0.21.5",
"@esbuild/freebsd-x64": "0.20.2", "@esbuild/freebsd-x64": "0.21.5",
"@esbuild/linux-arm": "0.20.2", "@esbuild/linux-arm": "0.21.5",
"@esbuild/linux-arm64": "0.20.2", "@esbuild/linux-arm64": "0.21.5",
"@esbuild/linux-ia32": "0.20.2", "@esbuild/linux-ia32": "0.21.5",
"@esbuild/linux-loong64": "0.20.2", "@esbuild/linux-loong64": "0.21.5",
"@esbuild/linux-mips64el": "0.20.2", "@esbuild/linux-mips64el": "0.21.5",
"@esbuild/linux-ppc64": "0.20.2", "@esbuild/linux-ppc64": "0.21.5",
"@esbuild/linux-riscv64": "0.20.2", "@esbuild/linux-riscv64": "0.21.5",
"@esbuild/linux-s390x": "0.20.2", "@esbuild/linux-s390x": "0.21.5",
"@esbuild/linux-x64": "0.20.2", "@esbuild/linux-x64": "0.21.5",
"@esbuild/netbsd-x64": "0.20.2", "@esbuild/netbsd-x64": "0.21.5",
"@esbuild/openbsd-x64": "0.20.2", "@esbuild/openbsd-x64": "0.21.5",
"@esbuild/sunos-x64": "0.20.2", "@esbuild/sunos-x64": "0.21.5",
"@esbuild/win32-arm64": "0.20.2", "@esbuild/win32-arm64": "0.21.5",
"@esbuild/win32-ia32": "0.20.2", "@esbuild/win32-ia32": "0.21.5",
"@esbuild/win32-x64": "0.20.2" "@esbuild/win32-x64": "0.21.5"
} }
}, },
"node_modules/escalade": { "node_modules/escalade": {
@ -2149,20 +2187,6 @@
"url": "https://github.com/sponsors/rawify" "url": "https://github.com/sponsors/rawify"
} }
}, },
"node_modules/fs-extra": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
"integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=14.14"
}
},
"node_modules/fs-minipass": { "node_modules/fs-minipass": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@ -2295,12 +2319,6 @@
"node": ">=4" "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
},
"node_modules/handlebars": { "node_modules/handlebars": {
"version": "4.7.8", "version": "4.7.8",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
@ -2522,18 +2540,6 @@
"node": ">=6" "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,
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/lilconfig": { "node_modules/lilconfig": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@ -2921,31 +2927,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/openapi-typescript-codegen": {
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/openapi-typescript-codegen/-/openapi-typescript-codegen-0.29.0.tgz",
"integrity": "sha512-/wC42PkD0LGjDTEULa/XiWQbv4E9NwLjwLjsaJ/62yOsoYhwvmBR31kPttn1DzQ2OlGe5stACcF/EIkZk43M6w==",
"dev": true,
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^11.5.4",
"camelcase": "^6.3.0",
"commander": "^12.0.0",
"fs-extra": "^11.2.0",
"handlebars": "^4.7.8"
},
"bin": {
"openapi": "bin/index.js"
}
},
"node_modules/openapi-typescript-codegen/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"dev": true,
"engines": {
"node": ">=18"
}
},
"node_modules/path-browserify": { "node_modules/path-browserify": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
@ -3001,9 +2982,9 @@
"dev": true "dev": true
}, },
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.0.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
@ -3106,9 +3087,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.38", "version": "8.4.47",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -3125,8 +3106,8 @@
], ],
"dependencies": { "dependencies": {
"nanoid": "^3.3.7", "nanoid": "^3.3.7",
"picocolors": "^1.0.0", "picocolors": "^1.1.0",
"source-map-js": "^1.2.0" "source-map-js": "^1.2.1"
}, },
"engines": { "engines": {
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
@ -3338,9 +3319,9 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.13.0", "version": "4.22.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
"integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.5" "@types/estree": "1.0.5"
@ -3353,19 +3334,22 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.13.0", "@rollup/rollup-android-arm-eabi": "4.22.4",
"@rollup/rollup-android-arm64": "4.13.0", "@rollup/rollup-android-arm64": "4.22.4",
"@rollup/rollup-darwin-arm64": "4.13.0", "@rollup/rollup-darwin-arm64": "4.22.4",
"@rollup/rollup-darwin-x64": "4.13.0", "@rollup/rollup-darwin-x64": "4.22.4",
"@rollup/rollup-linux-arm-gnueabihf": "4.13.0", "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
"@rollup/rollup-linux-arm64-gnu": "4.13.0", "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
"@rollup/rollup-linux-arm64-musl": "4.13.0", "@rollup/rollup-linux-arm64-gnu": "4.22.4",
"@rollup/rollup-linux-riscv64-gnu": "4.13.0", "@rollup/rollup-linux-arm64-musl": "4.22.4",
"@rollup/rollup-linux-x64-gnu": "4.13.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
"@rollup/rollup-linux-x64-musl": "4.13.0", "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
"@rollup/rollup-win32-arm64-msvc": "4.13.0", "@rollup/rollup-linux-s390x-gnu": "4.22.4",
"@rollup/rollup-win32-ia32-msvc": "4.13.0", "@rollup/rollup-linux-x64-gnu": "4.22.4",
"@rollup/rollup-win32-x64-msvc": "4.13.0", "@rollup/rollup-linux-x64-musl": "4.22.4",
"@rollup/rollup-win32-arm64-msvc": "4.22.4",
"@rollup/rollup-win32-ia32-msvc": "4.22.4",
"@rollup/rollup-win32-x64-msvc": "4.22.4",
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
@ -3449,9 +3433,9 @@
} }
}, },
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.2.0", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@ -3756,15 +3740,6 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true "dev": true
}, },
"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,
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/update-browserslist-db": { "node_modules/update-browserslist-db": {
"version": "1.0.13", "version": "1.0.13",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
@ -3800,14 +3775,14 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "5.2.12", "version": "5.4.8",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
"integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.20.1", "esbuild": "^0.21.3",
"postcss": "^8.4.38", "postcss": "^8.4.43",
"rollup": "^4.13.0" "rollup": "^4.20.0"
}, },
"bin": { "bin": {
"vite": "bin/vite.js" "vite": "bin/vite.js"
@ -3826,6 +3801,7 @@
"less": "*", "less": "*",
"lightningcss": "^1.21.0", "lightningcss": "^1.21.0",
"sass": "*", "sass": "*",
"sass-embedded": "*",
"stylus": "*", "stylus": "*",
"sugarss": "*", "sugarss": "*",
"terser": "^5.4.0" "terser": "^5.4.0"
@ -3843,6 +3819,9 @@
"sass": { "sass": {
"optional": true "optional": true
}, },
"sass-embedded": {
"optional": true
},
"stylus": { "stylus": {
"optional": true "optional": true
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "materia-frontend", "name": "materia-frontend-vue",
"version": "0.0.5", "version": "0.1.1",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
@ -9,8 +9,7 @@
"preview": "vite preview", "preview": "vite preview",
"build": "vite build", "build": "vite build",
"type-check": "vue-tsc --build --force", "type-check": "vue-tsc --build --force",
"generate-client": "openapi --input ./openapi.json --output ./src/client_old/ --client axios --name Client", "openapi": "openapi-ts --input ./openapi.json --output ./src/client/ --client @hey-api/client-axios"
"openapi-ts": "openapi-ts --input ./openapi.json --output ./src/client/ --client @hey-api/client-axios"
}, },
"dependencies": { "dependencies": {
"@catppuccin/tailwindcss": "^0.1.6", "@catppuccin/tailwindcss": "^0.1.6",
@ -32,7 +31,6 @@
"@vitejs/plugin-vue-jsx": "^3.1.0", "@vitejs/plugin-vue-jsx": "^3.1.0",
"@vue/tsconfig": "^0.5.0", "@vue/tsconfig": "^0.5.0",
"npm-run-all2": "^6.1.1", "npm-run-all2": "^6.1.1",
"openapi-typescript-codegen": "^0.29.0",
"typescript": "~5.3.0", "typescript": "~5.3.0",
"vite": "^5.0.10", "vite": "^5.0.10",
"vue-tsc": "^2.0.29" "vue-tsc": "^2.0.29"

View File

@ -26,10 +26,12 @@ dev = [
includes = [ "src/materia_frontend" ] includes = [ "src/materia_frontend" ]
[tool.pdm.scripts] [tool.pdm.scripts]
openapi-json.cmd = "pdm run -p ../../ python -m materia export openapi --path ./openapi.json"
npm-install.cmd = "npm install --prefix ./" npm-install.cmd = "npm install --prefix ./"
openapi-client.cmd = "npm run openapi"
npm-run-build.cmd = "npm run build --prefix ./" npm-run-build.cmd = "npm run build --prefix ./"
move-dist.shell = "rm -vrf src/materia_frontend/dist && mv -v dist src/materia_frontend/ && cp -v templates/* src/materia_frontend/dist" move-dist.shell = "rm -vrf src/materia_frontend/dist && mv -v dist src/materia_frontend/ && cp -v templates/* src/materia_frontend/dist"
pre_build.composite = [ "npm-install", "npm-run-build", "move-dist" ] pre_build.composite = [ "openapi-json", "npm-install", "openapi-client", "npm-run-build", "move-dist" ]
materia-frontend.call = "materia_frontend.main:client" materia-frontend.call = "materia_frontend.main:client"
[build-system] [build-system]

View File

@ -3,9 +3,9 @@ import Base from "@/views/Base.vue";
import { ref, onMounted, watch, getCurrentInstance } from "vue"; import { ref, onMounted, watch, getCurrentInstance } from "vue";
import { useMiscStore } from "@/stores"; import { store } from "@";
const miscStore = useMiscStore(); const miscStore = store.useMisc();
</script> </script>

View File

@ -3,8 +3,7 @@ import Base from "@/views/Base.vue";
import { ref, onMounted, watch, getCurrentInstance } from "vue"; import { ref, onMounted, watch, getCurrentInstance } from "vue";
import router from "@/router"; import { router, store } from "@";
import { useUserStore, useMiscStore } from "@/stores";
const password = defineModel("password"); const password = defineModel("password");
const new_password = defineModel("new-password"); const new_password = defineModel("new-password");
@ -16,8 +15,8 @@ const new_email = defineModel("new-email");
const confirm_password = defineModel("confirm-password"); const confirm_password = defineModel("confirm-password");
const error = ref(null); const error = ref(null);
const userStore = useUserStore(); const userStore = store.useUser();
const miscStore = useMiscStore(); const miscStore = store.useMisc();
onMounted(async () => { onMounted(async () => {
miscStore.p_current_tab = 1; miscStore.p_current_tab = 1;

View File

@ -3,13 +3,11 @@ import Base from "@/views/Base.vue";
import { ref, onMounted, watch, getCurrentInstance } from "vue"; import { ref, onMounted, watch, getCurrentInstance } from "vue";
import router from "@/router"; import { api, router, store } from "@";
import { api } from "@";
import { useUserStore, useMiscStore } from "@/stores";
const error = ref(null); const error = ref(null);
const userStore = useUserStore(); const userStore = store.useUser();
const miscStore = useMiscStore(); const miscStore = store.useMisc();
const login = defineModel("login"); const login = defineModel("login");
const name = defineModel("name"); const name = defineModel("name");

View File

@ -5,11 +5,10 @@ import Error from "@/components/error/Error.vue";
import { ref, onMounted, watch, getCurrentInstance } from "vue"; import { ref, onMounted, watch, getCurrentInstance } from "vue";
import { onBeforeRouteUpdate, useRoute } from "vue-router" import { onBeforeRouteUpdate, useRoute } from "vue-router"
import { api } from "@"; import { api, store } from "@";
import { useUserStore } from "@/stores";
const route = useRoute(); const route = useRoute();
const userStore = useUserStore(); const userStore = store.useUser();
const error = ref<string>(null); const error = ref<string>(null);
const person = ref<user.User>(null); const person = ref<user.User>(null);