mirror of
https://github.com/beak-insights/felicity-lims.git
synced 2025-02-21 07:22:53 +08:00
upgraded all app dependencies
This commit is contained in:
parent
3be58be8e9
commit
b994d0bb9d
7 changed files with 183 additions and 177 deletions
|
@ -6,18 +6,12 @@
|
|||
<component name="ChangeListManager">
|
||||
<list default="true" id="9f590b69-f929-45a1-8512-12ed6efbf028" name="Changes" comment="Added Invetory starter">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/codegen.yml" beforeDir="false" afterPath="$PROJECT_DIR$/codegen.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/api/gql/analysis/mutations/analysis_request.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/api/gql/analysis/mutations/analysis_request.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/api/gql/analysis/mutations/analysis_result.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/api/gql/analysis/mutations/analysis_result.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/api/gql/instrument/types.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/api/gql/instrument/types.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/core/config.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/core/config.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/lims/boot.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/lims/boot.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/felicity/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/felicity/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/conf.ts" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/conf.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/graphql/operations/analyses.queries.ts" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/graphql/operations/analyses.queries.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/graphql/operations/instrument.queries.ts" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/graphql/operations/instrument.queries.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/main.ts" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/main.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/models/analysis.ts" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/models/analysis.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/views/sample/SamplesAdd.vue" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/views/sample/SamplesAdd.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/webapp/views/sample/_id/Results.vue" beforeDir="false" afterPath="$PROJECT_DIR$/webapp/views/sample/_id/Results.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/requirements-dev.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements-dev.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import os
|
||||
import secrets
|
||||
from typing import Any
|
||||
|
||||
import pytz
|
||||
from pydantic import AnyHttpUrl, EmailStr, field_validator, ConfigDict
|
||||
from pydantic_core.core_schema import FieldValidationInfo
|
||||
from pydantic_settings import BaseSettings
|
||||
from pydantic import (
|
||||
PostgresDsn, AnyHttpUrl, EmailStr, field_validator, ValidationInfo
|
||||
)
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
def getenv_boolean(var_name: Any, default_value: bool = False) -> bool:
|
||||
|
@ -28,8 +28,9 @@ class Settings(BaseSettings):
|
|||
STATIC_DIR: str = os.path.join(BASE_DIR, "static")
|
||||
API_V1_STR: str = "/api/v1"
|
||||
ALGORITHM: str = "HS256"
|
||||
SECRET_KEY: str = secrets.token_urlsafe(32)
|
||||
REFRESH_SECRET_KEY: str = secrets.token_urlsafe(32)
|
||||
# secrets.token_urlsafe(32)
|
||||
SECRET_KEY: str = "Eoy7XAjJWnr6PcgFi0FK37XbjXEfx2PdFV8GFbucReDbWiew8T79ob3ZIF3bgYi62THktkoTNdC1SrFyd_k4xQ"
|
||||
REFRESH_SECRET_KEY: str = "KKj6HeSWwizXDnzc1SS_e-PYn3EwA4XuotoOD3J0mvmu1PLdVzbDkAeThJDTQsgYHVgYwbV5PnSbo_ZJZHEMEg"
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 4 * 1 # 4 hours
|
||||
REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 12 * 1 # 1/2 day / 12 hours
|
||||
PROJECT_NAME: str = getenv_value("PROJECT_NAME", "Felicity LIMS")
|
||||
|
@ -59,19 +60,21 @@ class Settings(BaseSettings):
|
|||
|
||||
@field_validator("SQLALCHEMY_DATABASE_URI")
|
||||
def assemble_async_db_connection(
|
||||
cls, v: str | None, info: FieldValidationInfo
|
||||
) -> Any:
|
||||
cls, v: str | None, info: ValidationInfo
|
||||
) -> PostgresDsn:
|
||||
if isinstance(v, str):
|
||||
return v
|
||||
return f'postgresql+asyncpg://{info.data.get("POSTGRES_USER")}:{info.data.get("POSTGRES_PASSWORD")}@{info.data.get("POSTGRES_SERVER")}/{info.data.get("POSTGRES_DB") or ""}'
|
||||
return f'postgresql+asyncpg://{info.data.get("POSTGRES_USER")}:{info.data.get("POSTGRES_PASSWORD")}\
|
||||
@{info.data.get("POSTGRES_SERVER")}/{info.data.get("POSTGRES_DB") or ""}'
|
||||
|
||||
@field_validator("SQLALCHEMY_TEST_DATABASE_URI")
|
||||
def assemble_async_test_db_connection(
|
||||
cls, v: str | None, info: FieldValidationInfo
|
||||
) -> Any:
|
||||
cls, v: str | None, info: ValidationInfo
|
||||
) -> PostgresDsn:
|
||||
if isinstance(v, str):
|
||||
return v
|
||||
return f'postgresql+asyncpg://{info.data.get("POSTGRES_USER")}:{info.data.get("POSTGRES_PASSWORD")}@{info.data.get("POSTGRES_SERVER")}/test_{info.data.get("POSTGRES_DB") or ""}'
|
||||
return f'postgresql+asyncpg://{info.data.get("POSTGRES_USER")}:{info.data.get("POSTGRES_PASSWORD")}\
|
||||
@{info.data.get("POSTGRES_SERVER")}/test_{info.data.get("POSTGRES_DB") or ""}'
|
||||
|
||||
SMTP_TLS: bool = getenv_boolean("SMTP_TLS", False)
|
||||
SMTP_PORT: int | None = getenv_value("SMTP_PORT", 1025)
|
||||
|
@ -82,7 +85,7 @@ class Settings(BaseSettings):
|
|||
EMAILS_FROM_NAME: str | None = getenv_value("EMAILS_FROM_NAME", "felicity")
|
||||
|
||||
@field_validator("EMAILS_FROM_NAME")
|
||||
def get_project_name(cls, v: str | None, info: FieldValidationInfo) -> str:
|
||||
def get_project_name(cls, v: str | None, info: ValidationInfo) -> str:
|
||||
if not v:
|
||||
return info.data["PROJECT_NAME"]
|
||||
return v
|
||||
|
@ -92,7 +95,7 @@ class Settings(BaseSettings):
|
|||
EMAILS_ENABLED: bool = False
|
||||
|
||||
@field_validator("EMAILS_ENABLED")
|
||||
def get_emails_enabled(cls, v: bool, info: FieldValidationInfo) -> bool:
|
||||
def get_emails_enabled(cls, v: bool, info: ValidationInfo) -> bool:
|
||||
return bool(
|
||||
info.data.get("SMTP_HOST")
|
||||
and info.data.get("SMTP_PORT")
|
||||
|
@ -112,7 +115,7 @@ class Settings(BaseSettings):
|
|||
RUN_OPEN_TRACING: bool = getenv_boolean("RUN_OPEN_TRACING", False)
|
||||
OTLP_SPAN_EXPORT_URL: str = getenv_value("OTLP_SPAN_EXPORT_URL", "http://localhost:4317")
|
||||
|
||||
model_config = ConfigDict(case_sensitive=True)
|
||||
model_config = SettingsConfigDict(case_sensitive=True)
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from fastapi import FastAPI
|
||||
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
from strawberry.fastapi import GraphQLRouter
|
||||
from strawberry.subscriptions import GRAPHQL_TRANSPORT_WS_PROTOCOL, GRAPHQL_WS_PROTOCOL
|
||||
|
@ -58,9 +59,15 @@ def register_tasks(app: FastAPI):
|
|||
observe_events()
|
||||
|
||||
|
||||
def trace_app(app: FastAPI):
|
||||
if settings.RUN_OPEN_TRACING:
|
||||
FastAPIInstrumentor.instrument_app(app)
|
||||
|
||||
|
||||
def register_felicity(app: FastAPI):
|
||||
register_cors(app)
|
||||
register_routes(app)
|
||||
register_graphql(app)
|
||||
register_listeners(app)
|
||||
register_tasks(app)
|
||||
trace_app(app)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
- The felicity app must be creaed first before importing other modules.
|
||||
- This is important to register felicity in sanic registry
|
||||
"""
|
||||
|
||||
from fastapi import FastAPI
|
||||
|
||||
from lims import register_felicity
|
||||
|
|
218
package.json
218
package.json
|
@ -1,111 +1,111 @@
|
|||
{
|
||||
"name": "felicity-lims",
|
||||
"version": "0.1.0",
|
||||
"main": "webapp/main.ts",
|
||||
"license": "Public",
|
||||
"scripts": {
|
||||
"webapp:dev": "vite",
|
||||
"webapp:vf": "vite --force",
|
||||
"webapp:build:report": "npx vite-bundle-visualizer",
|
||||
"webapp:build:only": "vite build",
|
||||
"webapp:prettier:check": "prettier --check \"{,webapp/**/}*.{md,json,yml,html,cjs,mjs,js,ts,tsx,css,scss}\"",
|
||||
"webapp:prettier:format": "prettier --write \"{,webapp/**/}*.{md,json,yml,html,cjs,mjs,js,ts,tsx,css,scss}\"",
|
||||
"webapp:lint": "eslint . --ext .js,.ts,.tsx,.vue",
|
||||
"webapp:lint:fix": "npm run lint -- --fix",
|
||||
"webapp:codegen": "graphql-codegen --config codegen.yml --verbose",
|
||||
"server:uv": "cd felicity && uvicorn main:felicity --host=0.0.0.0 --port=8000 --workers 1",
|
||||
"server:uv:watch": "cd felicity && uvicorn main:felicity --reload --host=0.0.0.0 --port=8000 --workers 1 --log-level debug --use-colors",
|
||||
"server:gu": "cd felicity && gunicorn main:felicity --workers 1 --worker-class uvicorn.workers.UvicornH11Worker --bind 0.0.0.0:8000 --name felicity --access-logfile - --error-logfile - --log-level info --timeout 600",
|
||||
"server:gu:watch": "cd felicity && gunicorn main:felicity --workers 1 --worker-class uvicorn.workers.UvicornH11Worker --bind 0.0.0.0:8000 --name felicity --reload --access-logfile - --error-logfile - --log-level info --timeout 600",
|
||||
"server:test": "cd felicity && bash ./scripts/test.sh",
|
||||
"server:lint": "cd felicity && bash ./scripts/lint.sh",
|
||||
"server:format": "cd felicity && bash ./scripts/format.sh",
|
||||
"server:format:imports": "cd felicity && bash ./scripts/format_imports.sh",
|
||||
"server:schema:export": "cd felicity && strawberry export-schema api.gql.schema:schema > ./api/gql/schema.graphql",
|
||||
"server:schema:export:tofront": "cd felicity && strawberry export-schema api.gql.schema:schema > ../webapp/graphql/schema.graphql",
|
||||
"server:codegen:not-working": "# npm run backend:schema:export && strawberry codegen --schema api.gql.schema --output-dir ../graphql -p python -p typescript ./api/gql/schema.graphql",
|
||||
"server:magidoc:generate": "magidoc generate",
|
||||
"server:magidoc:preview": "magidoc preview",
|
||||
"standalone:build": "rm -rf felicity/templates/static/* && vite build && cp -r dist/** felicity/templates/static",
|
||||
"db:al:upgrade": "cd felicity && alembic upgrade head",
|
||||
"db:al:revision": "cd felicity && alembic revision --autogenerate -m"
|
||||
},
|
||||
"dependencies": {
|
||||
"@antv/g2": "^4.2.10",
|
||||
"@antv/g2plot": "^2.4.31",
|
||||
"@ckeditor/ckeditor5-build-decoupled-document": "^35.4.0",
|
||||
"@editorjs/editorjs": "^2.28.2",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.5.1",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.5.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.5.1",
|
||||
"@fortawesome/vue-fontawesome": "^3.0.5",
|
||||
"@graphql-codegen/cli": "^5.0.0",
|
||||
"@graphql-codegen/client-preset": "^4.1.0",
|
||||
"@graphql-codegen/typescript": "^4.0.1",
|
||||
"@graphql-codegen/typescript-operations": "^4.0.1",
|
||||
"@graphql-codegen/typescript-urql": "^3.7.3",
|
||||
"@graphql-codegen/typescript-vue-urql": "^2.3.6",
|
||||
"@graphql-typed-document-node/core": "^3.2.0",
|
||||
"@magidoc/cli": "^4.1.2",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@urql/core": "^3.2.2",
|
||||
"@urql/exchange-auth": "^1.0.0",
|
||||
"@urql/vue": "^1.1.2",
|
||||
"@vueform/multiselect": "^2.6.6",
|
||||
"@vueuse/core": "^9.13.0",
|
||||
"@vueuse/motion": "2.0.0-beta.12",
|
||||
"axios": "^1.6.5",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"floating-vue": "2.0.0-beta.20",
|
||||
"graphql": "^16.8.1",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"graphql-ws": "^5.14.3",
|
||||
"js-confetti": "^0.11.0",
|
||||
"jstat": "^1.9.6",
|
||||
"jwt-decode": "^3.1.2",
|
||||
"lodash-es": "^4.17.21",
|
||||
"mitt": "^3.0.1",
|
||||
"moment": "^2.30.1",
|
||||
"notyf": "^3.10.0",
|
||||
"pdf-lib": "^1.17.1",
|
||||
"pinia": "^2.1.7",
|
||||
"process": "^0.11.10",
|
||||
"react": "^18.2.0",
|
||||
"socket.io": "^4.7.4",
|
||||
"socket.io-client": "^4.7.4",
|
||||
"split.js": "^1.6.5",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"sweetalert2": "^11.10.3",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"urql": "^3.0.4",
|
||||
"vee-validate": "^4.12.4",
|
||||
"vite-tsconfig-paths": "^4.3.1",
|
||||
"vue": "^3.4.15",
|
||||
"vue-multiselect": "3.0.0-alpha.2",
|
||||
"vue-router": "^4.2.5",
|
||||
"vue-sweetalert2": "^5.0.5",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"wonka": "^6.3.4",
|
||||
"yup": "^0.32.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@types/node": "^18.19.8",
|
||||
"@urql/devtools": "^2.0.3",
|
||||
"@vitejs/plugin-vue": "^4.6.2",
|
||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||
"@vue/compiler-sfc": "^3.4.15",
|
||||
"autoprefixer": "^10.4.17",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-config-prettier": "^8.10.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.20.1",
|
||||
"jshint": "^2.13.6",
|
||||
"postcss": "^8.4.33",
|
||||
"prettier": "^2.8.8",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^4.5.2"
|
||||
}
|
||||
"name": "felicity-lims",
|
||||
"version": "0.1.0",
|
||||
"main": "webapp/main.ts",
|
||||
"license": "Public",
|
||||
"scripts": {
|
||||
"webapp:dev": "vite",
|
||||
"webapp:vf": "vite --force",
|
||||
"webapp:build:report": "npx vite-bundle-visualizer",
|
||||
"webapp:build:only": "vite build",
|
||||
"webapp:prettier:check": "prettier --check \"{,webapp/**/}*.{md,json,yml,html,cjs,mjs,js,ts,tsx,css,scss}\"",
|
||||
"webapp:prettier:format": "prettier --write \"{,webapp/**/}*.{md,json,yml,html,cjs,mjs,js,ts,tsx,css,scss}\"",
|
||||
"webapp:lint": "eslint . --ext .js,.ts,.tsx,.vue",
|
||||
"webapp:lint:fix": "npm run lint -- --fix",
|
||||
"webapp:codegen": "graphql-codegen --config codegen.yml --verbose",
|
||||
"server:uv": "cd felicity && uvicorn main:felicity --host=0.0.0.0 --port=8000 --workers 5",
|
||||
"server:uv:watch": "cd felicity && uvicorn main:felicity --reload --host=0.0.0.0 --port=8000 --workers 1 --log-level debug --use-colors",
|
||||
"server:gu": "cd felicity && gunicorn main:felicity --workers 5 --worker-class uvicorn.workers.UvicornH11Worker --bind 0.0.0.0:8000 --name felicity --access-logfile - --error-logfile - --log-level info --timeout 600",
|
||||
"server:gu:watch": "cd felicity && gunicorn main:felicity --workers 1 --worker-class uvicorn.workers.UvicornH11Worker --bind 0.0.0.0:8000 --name felicity --reload --access-logfile - --error-logfile - --log-level info --timeout 600",
|
||||
"server:test": "cd felicity && bash ./scripts/test.sh",
|
||||
"server:lint": "cd felicity && bash ./scripts/lint.sh",
|
||||
"server:format": "cd felicity && bash ./scripts/format.sh",
|
||||
"server:format:imports": "cd felicity && bash ./scripts/format_imports.sh",
|
||||
"server:schema:export": "cd felicity && strawberry export-schema api.gql.schema:schema > ./api/gql/schema.graphql",
|
||||
"server:schema:export:tofront": "cd felicity && strawberry export-schema api.gql.schema:schema > ../webapp/graphql/schema.graphql",
|
||||
"server:codegen:not-working": "# npm run backend:schema:export && strawberry codegen --schema api.gql.schema --output-dir ../graphql -p python -p typescript ./api/gql/schema.graphql",
|
||||
"server:magidoc:generate": "magidoc generate",
|
||||
"server:magidoc:preview": "magidoc preview",
|
||||
"standalone:build": "rm -rf felicity/templates/static/* && vite build && cp -r dist/** felicity/templates/static",
|
||||
"db:al:upgrade": "cd felicity && alembic upgrade head",
|
||||
"db:al:revision": "cd felicity && alembic revision --autogenerate -m"
|
||||
},
|
||||
"dependencies": {
|
||||
"@antv/g2": "^4.2.10",
|
||||
"@antv/g2plot": "^2.4.31",
|
||||
"@ckeditor/ckeditor5-build-decoupled-document": "^35.4.0",
|
||||
"@editorjs/editorjs": "^2.28.2",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.5.1",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.5.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.5.1",
|
||||
"@fortawesome/vue-fontawesome": "^3.0.5",
|
||||
"@graphql-codegen/cli": "^5.0.0",
|
||||
"@graphql-codegen/client-preset": "^4.1.0",
|
||||
"@graphql-codegen/typescript": "^4.0.1",
|
||||
"@graphql-codegen/typescript-operations": "^4.0.1",
|
||||
"@graphql-codegen/typescript-urql": "^3.7.3",
|
||||
"@graphql-codegen/typescript-vue-urql": "^2.3.6",
|
||||
"@graphql-typed-document-node/core": "^3.2.0",
|
||||
"@magidoc/cli": "^4.1.2",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@urql/core": "^3.2.2",
|
||||
"@urql/exchange-auth": "^1.0.0",
|
||||
"@urql/vue": "^1.1.2",
|
||||
"@vueform/multiselect": "^2.6.6",
|
||||
"@vueuse/core": "^9.13.0",
|
||||
"@vueuse/motion": "2.0.0-beta.12",
|
||||
"axios": "^1.6.5",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"floating-vue": "2.0.0-beta.20",
|
||||
"graphql": "^16.8.1",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"graphql-ws": "^5.14.3",
|
||||
"js-confetti": "^0.11.0",
|
||||
"jstat": "^1.9.6",
|
||||
"jwt-decode": "^3.1.2",
|
||||
"lodash-es": "^4.17.21",
|
||||
"mitt": "^3.0.1",
|
||||
"moment": "^2.30.1",
|
||||
"notyf": "^3.10.0",
|
||||
"pdf-lib": "^1.17.1",
|
||||
"pinia": "^2.1.7",
|
||||
"process": "^0.11.10",
|
||||
"react": "^18.2.0",
|
||||
"socket.io": "^4.7.4",
|
||||
"socket.io-client": "^4.7.4",
|
||||
"split.js": "^1.6.5",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"sweetalert2": "^11.10.3",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"urql": "^3.0.4",
|
||||
"vee-validate": "^4.12.4",
|
||||
"vite-tsconfig-paths": "^4.3.1",
|
||||
"vue": "^3.4.15",
|
||||
"vue-multiselect": "3.0.0-alpha.2",
|
||||
"vue-router": "^4.2.5",
|
||||
"vue-sweetalert2": "^5.0.5",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"wonka": "^6.3.4",
|
||||
"yup": "^0.32.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@types/node": "^18.19.8",
|
||||
"@urql/devtools": "^2.0.3",
|
||||
"@vitejs/plugin-vue": "^4.6.2",
|
||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||
"@vue/compiler-sfc": "^3.4.15",
|
||||
"autoprefixer": "^10.4.17",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-config-prettier": "^8.10.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-vue": "^9.20.1",
|
||||
"jshint": "^2.13.6",
|
||||
"postcss": "^8.4.33",
|
||||
"prettier": "^2.8.8",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^4.5.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
-r requirements.txt
|
||||
pytest
|
||||
pytest-asyncio==0.21.0
|
||||
pytest-order==1.1.0
|
||||
httpx==0.24.0
|
||||
anyio[trio]==3.6.2
|
||||
faker==18.5.1
|
||||
bump-pydantic==0.7.0
|
||||
|
||||
-r requirements.txt
|
||||
pytest
|
||||
pytest-asyncio==0.23.3
|
||||
pytest-order==1.2.0
|
||||
httpx==0.26.0
|
||||
anyio[trio]==4.2.0
|
||||
faker==22.5.1
|
||||
bump-pydantic==0.8.0
|
||||
|
||||
|
|
|
@ -1,33 +1,34 @@
|
|||
fastapi==0.104.1
|
||||
strawberry-graphql==0.195.1
|
||||
SQLAlchemy==2.0.19
|
||||
uvicorn[standard]==0.21.1
|
||||
gunicorn==20.1.0
|
||||
python-jose[cryptography]==3.3.0
|
||||
passlib[bcrypt]==1.7.4
|
||||
emails==0.6
|
||||
psycopg2-binary==2.9.6
|
||||
apscheduler==3.10.1
|
||||
sqlalchemy_mptt==0.2.5
|
||||
sqlalchemy_mixins @ git+https://github.com/aurthurm/sqlalchemy-mixins.git@async_support
|
||||
tenacity==8.2.2
|
||||
pydantic[email]==2.4.2
|
||||
pydantic_settings==2.0.3
|
||||
python-multipart==0.0.6
|
||||
alembic==1.11.1
|
||||
asyncpg==0.27.0
|
||||
broadcaster~=0.2.0
|
||||
aiofiles==23.1.0
|
||||
pandas==2.0.1
|
||||
jinja2==3.1.2
|
||||
celery==5.2.7
|
||||
fpdf2==2.7.3
|
||||
PyPDF2==3.0.1
|
||||
fhir.resources==7.0.0
|
||||
httpx==0.24.0
|
||||
python-barcode==0.15.1
|
||||
importlib-metadata~=6.0.0
|
||||
opentelemetry-instrumentation-fastapi==0.38b0
|
||||
opentelemetry-exporter-otlp==1.17.0
|
||||
opentelemetry-instrumentation-logging==0.38b0
|
||||
opentelemetry-instrumentation-sqlalchemy==0.38b0
|
||||
fastapi==0.109.0
|
||||
strawberry-graphql==0.219.0
|
||||
SQLAlchemy==2.0.25
|
||||
uvicorn[standard]==0.27.0
|
||||
gunicorn==21.2.0
|
||||
python-jose[cryptography]==3.3.0
|
||||
passlib[bcrypt]==1.7.4
|
||||
emails==0.6
|
||||
psycopg2-binary==2.9.9
|
||||
apscheduler==3.10.4
|
||||
sqlalchemy_mptt==0.2.5
|
||||
sqlalchemy_mixins @ git+https://github.com/aurthurm/sqlalchemy-mixins.git@async_support
|
||||
tenacity==8.2.3
|
||||
pydantic[email]==2.5.3
|
||||
pydantic_settings==2.1.0
|
||||
python-multipart==0.0.6
|
||||
alembic==1.13.1
|
||||
asyncpg==0.29.0
|
||||
broadcaster~=0.2.0
|
||||
aiofiles==23.2.1
|
||||
pandas==2.2.0
|
||||
jinja2==3.1.3
|
||||
celery==5.3.6
|
||||
fpdf2==2.7.7
|
||||
PyPDF2==3.0.1
|
||||
fhir.resources==7.1.0
|
||||
httpx==0.26.0
|
||||
python-barcode==0.15.1
|
||||
importlib-metadata~=6.0.0
|
||||
opentelemetry-semantic-conventions==0.43b0
|
||||
opentelemetry-instrumentation-fastapi==0.43b0
|
||||
opentelemetry-exporter-otlp==1.22.0
|
||||
opentelemetry-instrumentation-logging==0.43b0
|
||||
opentelemetry-instrumentation-sqlalchemy==0.43b0
|
||||
|
|
Loading…
Reference in a new issue