Spaces:
Runtime error
Runtime error
Soutrik
commited on
Commit
·
03beb83
1
Parent(s):
36ed17a
cache added
Browse files- app/api/chat.py +22 -9
- app/core/config.py +1 -0
- main.py +13 -1
- poetry.lock +139 -1
- pyproject.toml +2 -0
app/api/chat.py
CHANGED
@@ -5,16 +5,23 @@ from app.crud.chat_crud import create_chat_message
|
|
5 |
from app.tasks.chat_task import process_chat_message
|
6 |
from src.number_manipulation import add_random_number
|
7 |
from app.db.database import get_db
|
|
|
8 |
|
9 |
router = APIRouter()
|
10 |
|
11 |
|
12 |
@router.post("/chat", response_model=ChatResponse)
|
13 |
async def chat(message: ChatMessage, db: AsyncSession = Depends(get_db)):
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
#
|
|
|
18 |
message_id = await create_chat_message(
|
19 |
db=db,
|
20 |
content=message.content,
|
@@ -22,11 +29,17 @@ async def chat(message: ChatMessage, db: AsyncSession = Depends(get_db)):
|
|
22 |
processed_value=processed_value,
|
23 |
)
|
24 |
|
25 |
-
# Trigger
|
26 |
process_chat_message.delay(message.content)
|
27 |
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
from app.tasks.chat_task import process_chat_message
|
6 |
from src.number_manipulation import add_random_number
|
7 |
from app.db.database import get_db
|
8 |
+
from aiocache import caches
|
9 |
|
10 |
router = APIRouter()
|
11 |
|
12 |
|
13 |
@router.post("/chat", response_model=ChatResponse)
|
14 |
async def chat(message: ChatMessage, db: AsyncSession = Depends(get_db)):
|
15 |
+
cache = caches.get("default")
|
16 |
+
cache_key = f"chat:{message.user_input}:{message.content}"
|
17 |
+
|
18 |
+
# Attempt to retrieve the cached response
|
19 |
+
cached_response = await cache.get(cache_key)
|
20 |
+
if cached_response:
|
21 |
+
return ChatResponse(**cached_response)
|
22 |
|
23 |
+
# Process user input if not cached
|
24 |
+
processed_value = add_random_number(message.user_input)
|
25 |
message_id = await create_chat_message(
|
26 |
db=db,
|
27 |
content=message.content,
|
|
|
29 |
processed_value=processed_value,
|
30 |
)
|
31 |
|
32 |
+
# Trigger background task
|
33 |
process_chat_message.delay(message.content)
|
34 |
|
35 |
+
# Prepare the response data
|
36 |
+
response_data = {
|
37 |
+
"message_id": message_id,
|
38 |
+
"status": "Message received",
|
39 |
+
"processed_value": processed_value,
|
40 |
+
}
|
41 |
+
|
42 |
+
# Cache the response data
|
43 |
+
await cache.set(cache_key, response_data, ttl=300) # Cache for 5 minutes
|
44 |
+
|
45 |
+
return ChatResponse(**response_data)
|
app/core/config.py
CHANGED
@@ -14,6 +14,7 @@ class Settings(BaseSettings):
|
|
14 |
redis_url: str = Field(..., env="REDIS_URL")
|
15 |
flower_basic_auth: str = Field(..., env="FLOWER_BASIC_AUTH")
|
16 |
broker_url: str = Field(..., env="BROKER_URL")
|
|
|
17 |
|
18 |
class Config:
|
19 |
env_file = ".env"
|
|
|
14 |
redis_url: str = Field(..., env="REDIS_URL")
|
15 |
flower_basic_auth: str = Field(..., env="FLOWER_BASIC_AUTH")
|
16 |
broker_url: str = Field(..., env="BROKER_URL")
|
17 |
+
cache_backend: str = "aiocache.SimpleMemoryCache"
|
18 |
|
19 |
class Config:
|
20 |
env_file = ".env"
|
main.py
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
from fastapi import FastAPI
|
2 |
from app.api import chat
|
3 |
-
from app.db.database import Base, engine
|
|
|
|
|
4 |
|
5 |
app = FastAPI()
|
6 |
|
@@ -11,6 +13,16 @@ async def startup():
|
|
11 |
async with engine.begin() as conn:
|
12 |
await conn.run_sync(Base.metadata.create_all)
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
# Include the chat route
|
16 |
app.include_router(chat.router)
|
|
|
1 |
from fastapi import FastAPI
|
2 |
from app.api import chat
|
3 |
+
from app.db.database import Base, engine
|
4 |
+
from app.core.config import settings
|
5 |
+
from aiocache import caches
|
6 |
|
7 |
app = FastAPI()
|
8 |
|
|
|
13 |
async with engine.begin() as conn:
|
14 |
await conn.run_sync(Base.metadata.create_all)
|
15 |
|
16 |
+
# Configure aiocache with in-memory backend
|
17 |
+
caches.set_config(
|
18 |
+
{
|
19 |
+
"default": {
|
20 |
+
"cache": settings.cache_backend,
|
21 |
+
"ttl": 300, # Default Time-To-Live for cache entries (in seconds)
|
22 |
+
}
|
23 |
+
}
|
24 |
+
)
|
25 |
+
|
26 |
|
27 |
# Include the chat route
|
28 |
app.include_router(chat.router)
|
poetry.lock
CHANGED
@@ -1,5 +1,21 @@
|
|
1 |
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
[[package]]
|
4 |
name = "aiofiles"
|
5 |
version = "24.1.0"
|
@@ -784,6 +800,29 @@ typing-extensions = ">=4.8.0"
|
|
784 |
all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
785 |
standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"]
|
786 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
787 |
[[package]]
|
788 |
name = "fastapi-limiter"
|
789 |
version = "0.1.6"
|
@@ -1658,6 +1697,105 @@ sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-d
|
|
1658 |
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
|
1659 |
xml = ["lxml (>=4.9.2)"]
|
1660 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1661 |
[[package]]
|
1662 |
name = "pluggy"
|
1663 |
version = "1.5.0"
|
@@ -2655,4 +2793,4 @@ propcache = ">=0.2.0"
|
|
2655 |
[metadata]
|
2656 |
lock-version = "2.0"
|
2657 |
python-versions = "3.10.15"
|
2658 |
-
content-hash = "
|
|
|
1 |
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
|
2 |
|
3 |
+
[[package]]
|
4 |
+
name = "aiocache"
|
5 |
+
version = "0.12.3"
|
6 |
+
description = "multi backend asyncio cache"
|
7 |
+
optional = false
|
8 |
+
python-versions = "*"
|
9 |
+
files = [
|
10 |
+
{file = "aiocache-0.12.3-py2.py3-none-any.whl", hash = "sha256:889086fc24710f431937b87ad3720a289f7fc31c4fd8b68e9f918b9bacd8270d"},
|
11 |
+
{file = "aiocache-0.12.3.tar.gz", hash = "sha256:f528b27bf4d436b497a1d0d1a8f59a542c153ab1e37c3621713cb376d44c4713"},
|
12 |
+
]
|
13 |
+
|
14 |
+
[package.extras]
|
15 |
+
memcached = ["aiomcache (>=0.5.2)"]
|
16 |
+
msgpack = ["msgpack (>=0.5.5)"]
|
17 |
+
redis = ["redis (>=4.2.0)"]
|
18 |
+
|
19 |
[[package]]
|
20 |
name = "aiofiles"
|
21 |
version = "24.1.0"
|
|
|
800 |
all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
|
801 |
standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=2.11.2)", "python-multipart (>=0.0.7)", "uvicorn[standard] (>=0.12.0)"]
|
802 |
|
803 |
+
[[package]]
|
804 |
+
name = "fastapi-cache2"
|
805 |
+
version = "0.2.2"
|
806 |
+
description = "Cache for FastAPI"
|
807 |
+
optional = false
|
808 |
+
python-versions = "<4.0,>=3.8"
|
809 |
+
files = [
|
810 |
+
{file = "fastapi_cache2-0.2.2-py3-none-any.whl", hash = "sha256:e1fae86d8eaaa6c8501dfe08407f71d69e87cc6748042d59d51994000532846c"},
|
811 |
+
{file = "fastapi_cache2-0.2.2.tar.gz", hash = "sha256:71bf4450117dc24224ec120be489dbe09e331143c9f74e75eb6f576b78926026"},
|
812 |
+
]
|
813 |
+
|
814 |
+
[package.dependencies]
|
815 |
+
fastapi = "*"
|
816 |
+
pendulum = ">=3.0.0,<4.0.0"
|
817 |
+
typing-extensions = ">=4.1.0"
|
818 |
+
uvicorn = "*"
|
819 |
+
|
820 |
+
[package.extras]
|
821 |
+
all = ["aiobotocore (>=2.13.1,<3.0.0)", "aiomcache (>=0.8.2,<0.9.0)", "redis (>=4.2.0rc1,<5.0.0)"]
|
822 |
+
dynamodb = ["aiobotocore (>=2.13.1,<3.0.0)"]
|
823 |
+
memcache = ["aiomcache (>=0.8.2,<0.9.0)"]
|
824 |
+
redis = ["redis (>=4.2.0rc1,<5.0.0)"]
|
825 |
+
|
826 |
[[package]]
|
827 |
name = "fastapi-limiter"
|
828 |
version = "0.1.6"
|
|
|
1697 |
test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
|
1698 |
xml = ["lxml (>=4.9.2)"]
|
1699 |
|
1700 |
+
[[package]]
|
1701 |
+
name = "pendulum"
|
1702 |
+
version = "3.0.0"
|
1703 |
+
description = "Python datetimes made easy"
|
1704 |
+
optional = false
|
1705 |
+
python-versions = ">=3.8"
|
1706 |
+
files = [
|
1707 |
+
{file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"},
|
1708 |
+
{file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"},
|
1709 |
+
{file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"},
|
1710 |
+
{file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"},
|
1711 |
+
{file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"},
|
1712 |
+
{file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"},
|
1713 |
+
{file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"},
|
1714 |
+
{file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"},
|
1715 |
+
{file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"},
|
1716 |
+
{file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"},
|
1717 |
+
{file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"},
|
1718 |
+
{file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"},
|
1719 |
+
{file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"},
|
1720 |
+
{file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"},
|
1721 |
+
{file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"},
|
1722 |
+
{file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"},
|
1723 |
+
{file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"},
|
1724 |
+
{file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"},
|
1725 |
+
{file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"},
|
1726 |
+
{file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"},
|
1727 |
+
{file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"},
|
1728 |
+
{file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"},
|
1729 |
+
{file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"},
|
1730 |
+
{file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"},
|
1731 |
+
{file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"},
|
1732 |
+
{file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"},
|
1733 |
+
{file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"},
|
1734 |
+
{file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"},
|
1735 |
+
{file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"},
|
1736 |
+
{file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"},
|
1737 |
+
{file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"},
|
1738 |
+
{file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"},
|
1739 |
+
{file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"},
|
1740 |
+
{file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"},
|
1741 |
+
{file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"},
|
1742 |
+
{file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"},
|
1743 |
+
{file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"},
|
1744 |
+
{file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"},
|
1745 |
+
{file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"},
|
1746 |
+
{file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"},
|
1747 |
+
{file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"},
|
1748 |
+
{file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"},
|
1749 |
+
{file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"},
|
1750 |
+
{file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"},
|
1751 |
+
{file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"},
|
1752 |
+
{file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"},
|
1753 |
+
{file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"},
|
1754 |
+
{file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"},
|
1755 |
+
{file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"},
|
1756 |
+
{file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"},
|
1757 |
+
{file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"},
|
1758 |
+
{file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"},
|
1759 |
+
{file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"},
|
1760 |
+
{file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"},
|
1761 |
+
{file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"},
|
1762 |
+
{file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"},
|
1763 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"},
|
1764 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"},
|
1765 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"},
|
1766 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"},
|
1767 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"},
|
1768 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"},
|
1769 |
+
{file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"},
|
1770 |
+
{file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"},
|
1771 |
+
{file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"},
|
1772 |
+
{file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"},
|
1773 |
+
{file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"},
|
1774 |
+
{file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"},
|
1775 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"},
|
1776 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"},
|
1777 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"},
|
1778 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"},
|
1779 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"},
|
1780 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"},
|
1781 |
+
{file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"},
|
1782 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"},
|
1783 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"},
|
1784 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"},
|
1785 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"},
|
1786 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"},
|
1787 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"},
|
1788 |
+
{file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"},
|
1789 |
+
{file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"},
|
1790 |
+
]
|
1791 |
+
|
1792 |
+
[package.dependencies]
|
1793 |
+
python-dateutil = ">=2.6"
|
1794 |
+
tzdata = ">=2020.1"
|
1795 |
+
|
1796 |
+
[package.extras]
|
1797 |
+
test = ["time-machine (>=2.6.0)"]
|
1798 |
+
|
1799 |
[[package]]
|
1800 |
name = "pluggy"
|
1801 |
version = "1.5.0"
|
|
|
2793 |
[metadata]
|
2794 |
lock-version = "2.0"
|
2795 |
python-versions = "3.10.15"
|
2796 |
+
content-hash = "2835ac929d581446cc5b014a5d5706d4bc43fe164704aaed9bd579419ca999fe"
|
pyproject.toml
CHANGED
@@ -40,6 +40,8 @@ pandas = "^2.2.3"
|
|
40 |
python-multipart = "^0.0.17"
|
41 |
python-dotenv = "^1.0.1"
|
42 |
celery = "^5.4.0"
|
|
|
|
|
43 |
|
44 |
[tool.poetry.dev-dependencies]
|
45 |
pytest = "^7.2.0"
|
|
|
40 |
python-multipart = "^0.0.17"
|
41 |
python-dotenv = "^1.0.1"
|
42 |
celery = "^5.4.0"
|
43 |
+
fastapi-cache2 = "^0.2.2"
|
44 |
+
aiocache = "^0.12.3"
|
45 |
|
46 |
[tool.poetry.dev-dependencies]
|
47 |
pytest = "^7.2.0"
|