fix: sync creation fixed (#2637)

This pull request includes updates to the `docker-compose.dev.yml` and
`Dockerfile.dev` files. The changes aim to improve performance and fix
bugs. The updates include:

- Removing unnecessary workers configuration in the
`docker-compose.dev.yml` file.

- Updating the base image in the `Dockerfile.dev` to use a slim version.

- Adjusting the schedule for a specific task in the code.

- Modifying the time interval for retrieving active syncs.

- Changing the loader class for processing PowerPoint files.

- Refactoring the file existence check logic.

- Adding debug logs for file existence check and file removal.

- Adjusting the file synchronization logic.

These changes are intended to enhance the performance and stability of
the application.
This commit is contained in:
Stan Girard 2024-06-06 19:06:21 +02:00 committed by GitHub
parent 6ea4a4513b
commit 31d3cce97f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 911 additions and 850 deletions

1546
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# Using a slim version for a smaller base image
FROM python:3.11.6-slim-bullseye@sha256:0c1fbb294096d842ad795ee232d783cab436c90b034210fe894f2bb2f2be7626
FROM python:3.11.6-slim-bullseye
ARG DEV_MODE
ENV DEV_MODE=$DEV_MODE

View File

@ -218,6 +218,6 @@ celery.conf.beat_schedule = {
},
"process_sync_active": {
"task": "process_sync_active",
"schedule": crontab(minute="*/5", hour="*"),
"schedule": crontab(minute="*/1", hour="*"),
},
}

View File

@ -57,10 +57,11 @@ class GoogleSyncUtils(BaseModel):
logger.info("Google Drive credentials refreshed")
# Updating the credentials in the database
try:
service = build("drive", "v3", credentials=creds)
downloaded_files = []
for file in files:
service = build("drive", "v3", credentials=creds)
downloaded_files = []
for file in files:
logger.info("🔥🔥🔥🔥: %s", file)
try:
file_id = file["id"]
file_name = file["name"]
mime_type = file["mime_type"]
@ -68,7 +69,8 @@ class GoogleSyncUtils(BaseModel):
# Convert Google Docs files to appropriate formats before downloading
if mime_type == "application/vnd.google-apps.document":
logger.debug(
"Converting Google Docs file with file_id: %s to DOCX.", file_id
"Converting Google Docs file with file_id: %s to DOCX.",
file_id,
)
request = service.files().export_media(
fileId=file_id,
@ -119,7 +121,7 @@ class GoogleSyncUtils(BaseModel):
# Check if the file already exists in the storage
if check_file_exists(brain_id, file_name):
logger.info("🔥 File already exists in the storage: %s", file_name)
logger.debug("🔥 File already exists in the storage: %s", file_name)
self.storage.remove_file(brain_id + "/" + file_name)
BrainsVectors().delete_file_from_brain(brain_id, file_name)
@ -129,7 +131,7 @@ class GoogleSyncUtils(BaseModel):
filename=file_name,
)
await upload_file(to_upload_file, brain_id, current_user)
await upload_file(to_upload_file, brain_id, current_user) # type: ignore
# Check if the file already exists in the database
existing_files = self.sync_files_repo.get_sync_files(sync_active_id)
@ -156,13 +158,13 @@ class GoogleSyncUtils(BaseModel):
)
)
downloaded_files.append(file_name)
return {"downloaded_files": downloaded_files}
except HttpError as error:
logger.error(
"An error occurred while downloading Google Drive files: %s", error
)
return {"error": f"An error occurred: {error}"}
downloaded_files.append(file_name)
except HttpError as error:
logger.error(
"An error occurred while downloading Google Drive files: %s",
error,
)
return {"downloaded_files": downloaded_files}
async def sync(self, sync_active_id: int, user_id: str):
"""
@ -244,16 +246,22 @@ class GoogleSyncUtils(BaseModel):
# Filter files that have been modified since the last sync
last_synced_time = datetime.fromisoformat(last_synced) if last_synced else None
files_to_download = [
file
for file in files.get("files", [])
if not file["is_folder"]
and (
not last_synced_time
or datetime.fromisoformat(file["last_modified"]) > last_synced_time
(
not last_synced_time
or datetime.fromisoformat(file["last_modified"]) > last_synced_time
)
or not check_file_exists(sync_active["brain_id"], file["name"])
)
]
logger.error(files_to_download)
downloaded_files = await self._upload_files(
sync_user["credentials"],
files_to_download,
@ -261,12 +269,6 @@ class GoogleSyncUtils(BaseModel):
sync_active["brain_id"],
sync_active_id,
)
if "error" in downloaded_files:
logger.error(
"Failed to download files from Google Drive for sync_active_id: %s",
sync_active_id,
)
return None
# Update the last_synced timestamp
self.sync_active_service.update_sync_active(

View File

@ -103,7 +103,7 @@ class AzureSyncUtils(BaseModel):
# Check if the file already exists in the storage
if check_file_exists(brain_id, file_name):
logger.info("🔥 File already exists in the storage: %s", file_name)
logger.debug("🔥 File already exists in the storage: %s", file_name)
self.storage.remove_file(brain_id + "/" + file_name)
BrainsVectors().delete_file_from_brain(brain_id, file_name)
@ -250,11 +250,14 @@ class AzureSyncUtils(BaseModel):
for file in files.get("files", [])
if not file["is_folder"]
and (
not last_synced_time
or datetime.strptime(
file["last_modified"], "%Y-%m-%dT%H:%M:%SZ"
).replace(tzinfo=timezone.utc)
> last_synced_time
(
not last_synced_time
or datetime.strptime(
file["last_modified"], "%Y-%m-%dT%H:%M:%SZ"
).replace(tzinfo=timezone.utc)
> last_synced_time
)
or not check_file_exists(sync_active["brain_id"], file["name"])
)
]

View File

@ -49,8 +49,12 @@ def check_file_exists(brain_id: str, file_identifier: str) -> bool:
response = supabase_client.storage.from_("quivr").list(brain_id)
# Check if the file_identifier is in the response
file_exists = any(file["name"] == file_identifier for file in response)
file_exists = any(
file["name"].split(".")[0] == file_identifier.split(".")[0]
for file in response
)
logger.info(f"File identifier: {file_identifier}")
logger.info(f"File exists: {file_exists}")
if file_exists:
logger.info(f"File {file_identifier} exists.")
return True
@ -59,7 +63,7 @@ def check_file_exists(brain_id: str, file_identifier: str) -> bool:
return False
except Exception as e:
logger.error(f"An error occurred while checking the file: {e}")
raise e
return True
def upload_file_storage(file, file_identifier: str, upsert: str = "false"):

View File

@ -1,4 +1,4 @@
from langchain_community.document_loaders import UnstructuredPowerPointLoader
from langchain_community.document_loaders import UnstructuredFileLoader
from models import File
from .common import process_file
@ -9,7 +9,7 @@ def process_powerpoint(
):
return process_file(
file=file,
loader_class=UnstructuredPowerPointLoader,
loader_class=UnstructuredFileLoader,
brain_id=brain_id,
original_file_name=original_file_name,
integration=integration,

View File

@ -17,11 +17,11 @@ backoff==2.2.1; python_version >= '3.7' and python_version < '4.0'
beautifulsoup4==4.12.3; python_full_version >= '3.6.0'
billiard==4.2.0; python_version >= '3.7'
black==24.4.2; python_version >= '3.8'
boto3==1.34.113; python_version >= '3.8'
botocore==1.34.113; python_version >= '3.8'
boto3==1.34.120; python_version >= '3.8'
botocore==1.34.120; python_version >= '3.8'
cachetools==5.3.3; python_version >= '3.7'
celery[redis,sqs]==5.4.0; python_version >= '3.8'
certifi==2024.2.2; python_version >= '3.6'
certifi==2024.6.2; python_version >= '3.6'
cffi==1.16.0; platform_python_implementation != 'PyPy'
chardet==5.2.0; python_version >= '3.7'
charset-normalizer==3.3.2; python_full_version >= '3.7.0'
@ -29,15 +29,15 @@ click==8.1.7; python_version >= '3.7'
click-didyoumean==0.3.1; python_full_version >= '3.6.2'
click-plugins==1.1.1
click-repl==0.3.0; python_version >= '3.6'
cohere==5.5.3; python_version >= '3.8' and python_version < '4.0'
cohere==5.5.4; python_version >= '3.8' and python_version < '4.0'
coloredlogs==15.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
colorlog==6.8.2; python_version >= '3.6'
contourpy==1.2.1; python_version >= '3.9'
cryptography==42.0.7; python_version >= '3.7'
cryptography==42.0.8; python_version >= '3.7'
cssselect==1.2.0; python_version >= '3.7'
cycler==0.12.1; python_version >= '3.8'
dataclasses-json==0.6.6; python_version >= '3.7' and python_version < '4.0'
datasets==2.19.1; python_full_version >= '3.8.0'
datasets==2.19.2; python_full_version >= '3.8.0'
debugpy==1.8.1; python_version >= '3.8'
decorator==5.1.1; python_version >= '3.5'
deepdiff==7.0.1; python_version >= '3.8'
@ -52,7 +52,7 @@ dnspython==2.6.1; python_version >= '3.8'
docker==7.1.0; python_version >= '3.8'
docx2txt==0.8
duckdb==0.10.3; python_full_version >= '3.7.0'
duckduckgo-search==6.1.1; python_version >= '3.8'
duckduckgo-search==6.1.5; python_version >= '3.8'
ecdsa==0.19.0; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
effdet==0.4.1
email-validator==2.1.1; python_version >= '3.8'
@ -71,22 +71,22 @@ flake8-black==0.3.6; python_version >= '3.7'
flashrank==0.2.5; python_version >= '3.6'
flatbuffers==24.3.25
flower==2.0.1; python_version >= '3.7'
fonttools==4.52.1; python_version >= '3.8'
fonttools==4.53.0; python_version >= '3.8'
fpdf2==2.7.9; python_version >= '3.7'
frozenlist==1.4.1; python_version >= '3.8'
fsspec[http]==2024.3.1; python_version >= '3.8'
gitdb==4.0.11; python_version >= '3.7'
gitpython==3.1.43; python_version >= '3.7'
google-api-core[grpc]==2.19.0; python_version >= '3.7'
google-api-python-client==2.130.0; python_version >= '3.7'
google-api-python-client==2.132.0; python_version >= '3.7'
google-auth==2.29.0; python_version >= '3.7'
google-auth-httplib2==0.2.0
google-auth-oauthlib==1.2.0; python_version >= '3.6'
google-cloud-vision==3.7.2
googleapis-common-protos==1.63.0; python_version >= '3.7'
gotrue==2.4.2; python_version >= '3.8' and python_version < '4.0'
googleapis-common-protos==1.63.1; python_version >= '3.7'
gotrue==2.4.4; python_version >= '3.8' and python_version < '4.0'
greenlet==3.0.3; python_version >= '3.7'
grpcio==1.64.0
grpcio==1.64.1
grpcio-status==1.62.2
h11==0.14.0; python_version >= '3.7'
html5lib==1.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
@ -95,7 +95,7 @@ httplib2==0.22.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3
httptools==0.6.1
httpx==0.27.0; python_version >= '3.8'
httpx-sse==0.4.0; python_version >= '3.8'
huggingface-hub==0.23.2; python_full_version >= '3.8.0'
huggingface-hub==0.23.3; python_full_version >= '3.8.0'
humanfriendly==10.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
humanize==4.9.0; python_version >= '3.8'
idna==3.7; python_version >= '3.5'
@ -112,40 +112,40 @@ jsonpath-python==1.0.6; python_version >= '3.6'
jsonpointer==2.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'
kiwisolver==1.4.5; python_version >= '3.7'
kombu[sqs]==5.3.7; python_version >= '3.8'
langchain==0.2.1; python_version < '4.0' and python_full_version >= '3.8.1'
langchain==0.2.2; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-cohere==0.1.5; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-community==0.2.1; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-core==0.2.1; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-openai==0.1.7; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-text-splitters==0.2.0; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-community==0.2.3; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-core==0.2.4; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-openai==0.1.8; python_version < '4.0' and python_full_version >= '3.8.1'
langchain-text-splitters==0.2.1; python_version < '4.0' and python_full_version >= '3.8.1'
langdetect==1.0.9
langfuse==2.33.0; python_version < '4.0' and python_full_version >= '3.8.1'
langgraph==0.0.55; python_version < '4.0' and python_full_version >= '3.9.0'
langsmith==0.1.63; python_version < '4.0' and python_full_version >= '3.8.1'
langfuse==2.34.2; python_version < '4.0' and python_full_version >= '3.8.1'
langgraph==0.0.64; python_version < '4.0' and python_full_version >= '3.9.0'
langsmith==0.1.74; python_version < '4.0' and python_full_version >= '3.8.1'
layoutparser[layoutmodels,tesseract]==0.3.4; python_version >= '3.6'
litellm==1.38.10; python_version not in '2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7' and python_version >= '3.8'
litellm==1.40.4; python_version not in '2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7' and python_version >= '3.8'
llama-cpp-python==0.2.67; python_version >= '3.8'
llama-index==0.10.39; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-agent-openai==0.2.5; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index==0.10.43; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-agent-openai==0.2.7; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-cli==0.1.12; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-core==0.10.39.post1; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-core==0.10.43; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-embeddings-openai==0.1.10; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-indices-managed-llama-cloud==0.1.6; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-legacy==0.9.48; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-llms-openai==0.1.21; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-llms-openai==0.1.22; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-multi-modal-llms-openai==0.1.6; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-program-openai==0.1.6; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-question-gen-openai==0.1.3; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-readers-file==0.1.23; python_version < '4.0' and python_full_version >= '3.8.1'
llama-index-readers-llama-parse==0.1.4; python_version < '4.0' and python_full_version >= '3.8.1'
llama-parse==0.4.3; python_version < '4.0' and python_full_version >= '3.8.1'
llama-parse==0.4.4; python_version < '4.0' and python_full_version >= '3.8.1'
llamaindex-py-client==0.1.19; python_version >= '3.8' and python_version < '4'
lxml[html_clean]==5.2.2; python_version >= '3.6'
lxml-html-clean==0.1.1
markdown==3.6
markdown-it-py==3.0.0; python_version >= '3.8'
markupsafe==2.1.5; python_version >= '3.7'
marshmallow==3.21.2; python_version >= '3.8'
marshmallow==3.21.3; python_version >= '3.8'
matplotlib==3.9.0; python_version >= '3.9'
mccabe==0.7.0; python_version >= '3.6'
mdurl==0.1.2; python_version >= '3.7'
@ -157,39 +157,39 @@ multidict==6.0.5; python_version >= '3.7'
multiprocess==0.70.16; python_version >= '3.8'
mypy-extensions==1.0.0; python_version >= '3.5'
nest-asyncio==1.6.0; python_version >= '3.5'
networkx==3.3
networkx==3.3; python_version >= '3.10'
newspaper3k==0.2.8
nltk==3.8.1; python_version >= '3.7'
nodeenv==1.8.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'
numpy==1.26.4; python_version >= '3.10'
nodeenv==1.9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'
numpy==1.26.4; python_version >= '3.9'
oauthlib==3.2.2; python_version >= '3.6'
olefile==0.47; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
omegaconf==2.3.0; python_version >= '3.6'
onnx==1.16.1
onnxruntime==1.18.0
openai==1.30.3; python_full_version >= '3.7.1'
opencv-python==4.9.0.80; python_version >= '3.6'
openpyxl==3.1.2
openai==1.31.1; python_full_version >= '3.7.1'
opencv-python==4.10.0.82; python_version >= '3.6'
openpyxl==3.1.3
ordered-set==4.1.0; python_version >= '3.7'
orjson==3.10.3; python_version >= '3.8'
packaging==23.2; python_version >= '3.7'
pandas==1.5.3; python_version >= '3.8'
pandasai==2.0.43; python_version not in '2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8' and python_version >= '3.9'
pandasai==2.1.1; python_version not in '2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8' and python_version >= '3.9'
pathspec==0.12.1; python_version >= '3.8'
pdf2image==1.17.0
pdfminer.six==20231228
pdfplumber==0.11.0; python_version >= '3.8'
pikepdf==8.15.1
pikepdf==9.0.0
pillow==10.3.0; python_version >= '3.8'
pillow-heif==0.16.0
platformdirs==4.2.2; python_version >= '3.8'
playwright==1.44.0; python_version >= '3.8'
pluggy==1.5.0; python_version >= '3.8'
portalocker==2.8.2; python_version >= '3.8'
postgrest==0.16.4; python_version >= '3.8' and python_version < '4.0'
postgrest==0.16.8; python_version >= '3.8' and python_version < '4.0'
posthog==3.5.0
prometheus-client==0.20.0; python_version >= '3.8'
prompt-toolkit==3.0.43; python_full_version >= '3.7.0'
prompt-toolkit==3.0.46; python_full_version >= '3.7.0'
proto-plus==1.23.0; python_version >= '3.6'
protobuf==4.25.3; python_version >= '3.8'
psutil==5.9.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
@ -204,9 +204,9 @@ pycocotools==2.0.7; python_version >= '3.5'
pycodestyle==2.11.1; python_version >= '3.8'
pycparser==2.22; python_version >= '3.8'
pycurl==7.45.3
pydantic==2.7.1; python_version >= '3.8'
pydantic-core==2.18.2; python_version >= '3.8'
pydantic-settings==2.2.1; python_version >= '3.8'
pydantic==2.7.3; python_version >= '3.8'
pydantic-core==2.18.4; python_version >= '3.8'
pydantic-settings==2.3.1; python_version >= '3.8'
pyee==11.1.0; python_version >= '3.8'
pyflakes==3.2.0; python_version >= '3.8'
pygments==2.18.0; python_version >= '3.8'
@ -216,11 +216,11 @@ pypandoc==1.13; python_version >= '3.6'
pyparsing==3.1.2; python_version >= '3.1'
pypdf==4.2.0; python_version >= '3.6'
pypdfium2==4.30.0; python_version >= '3.6'
pyreqwest-impersonate==0.4.5; python_version >= '3.8'
pyright==1.1.364; python_version >= '3.7'
pyreqwest-impersonate==0.4.7; python_version >= '3.8'
pyright==1.1.366; python_version >= '3.7'
pysbd==0.3.4; python_version >= '3'
pytesseract==0.3.10; python_version >= '3.7'
pytest==8.2.1; python_version >= '3.8'
pytest==8.2.2; python_version >= '3.8'
pytest-celery==1.0.0; python_version >= '3.8' and python_version < '4.0'
pytest-docker-tools==3.1.3; python_full_version >= '3.7.0' and python_full_version < '4.0.0'
pytest-dotenv==0.5.2
@ -235,22 +235,23 @@ python-multipart==0.0.9; python_version >= '3.8'
python-pptx==0.6.23
pytz==2024.1
pyyaml==6.0.1; python_version >= '3.6'
ragas==0.1.8
rapidfuzz==3.9.1; python_version >= '3.8'
realtime==1.0.4; python_version >= '3.8' and python_version < '4.0'
redis==5.0.4; python_version >= '3.7'
ragas==0.1.9
rapidfuzz==3.9.3; python_version >= '3.8'
realtime==1.0.5; python_version >= '3.8' and python_version < '4.0'
redis==5.0.5; python_version >= '3.7'
regex==2024.5.15; python_version >= '3.8'
requests==2.32.2; python_version >= '3.8'
requests==2.32.3; python_version >= '3.8'
requests-file==2.1.0
requests-oauthlib==2.0.0; python_version >= '3.4'
resend==1.2.0; python_version >= '3.7'
requests-toolbelt==1.0.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
resend==2.0.0; python_version >= '3.7'
retry==0.9.2
rich==13.7.1; python_full_version >= '3.7.0'
rsa==4.9; python_version >= '3.6' and python_version < '4'
s3transfer==0.10.1; python_version >= '3.8'
safetensors==0.4.3; python_version >= '3.7'
scipy==1.13.1; python_version >= '3.9'
sentry-sdk[fastapi]==2.3.1; python_version >= '3.6'
sentry-sdk[fastapi]==2.5.0; python_version >= '3.6'
setuptools==70.0.0; python_version >= '3.8'
sgmllib3k==1.0.0
shellingham==1.5.4; python_version >= '3.7'
@ -260,12 +261,12 @@ sniffio==1.3.1; python_version >= '3.7'
soupsieve==2.5; python_version >= '3.8'
sqlalchemy[asyncio]==2.0.30; python_version >= '3.7'
starlette==0.37.2; python_version >= '3.8'
storage3==0.7.4; python_version >= '3.8' and python_version < '4.0'
storage3==0.7.6; python_version >= '3.8' and python_version < '4.0'
strenum==0.4.15
striprtf==0.0.26
supabase==2.4.6; python_version >= '3.8' and python_version < '4.0'
supafunc==0.4.5; python_version >= '3.8' and python_version < '4.0'
sympy==1.12; python_version >= '3.8'
supabase==2.5.0; python_version >= '3.8' and python_version < '4.0'
supafunc==0.4.6; python_version >= '3.8' and python_version < '4.0'
sympy==1.12.1; python_version >= '3.8'
tabulate==0.9.0; python_version >= '3.7'
tavily-python==0.3.3; python_version >= '3.6'
tenacity==8.3.0; python_version >= '3.8'
@ -273,31 +274,30 @@ tiktoken==0.7.0; python_version >= '3.8'
timm==1.0.3; python_version >= '3.8'
tinysegmenter==0.3
tldextract==5.1.2; python_version >= '3.8'
tokenizers==0.19.1; python_version >= '3.7'
torch==2.3.0; python_full_version >= '3.8.0'
torchvision==0.18.0; python_version >= '3.8'
tokenizers==0.15.2; python_version >= '3.7'
torch==2.3.1; python_full_version >= '3.8.0'
torchvision==0.18.1; python_version >= '3.8'
tornado==6.4; python_version >= '3.8'
tqdm==4.66.4; python_version >= '3.7'
transformers==4.41.1; python_full_version >= '3.8.0'
transformers==4.39.3; python_full_version >= '3.8.0'
typer==0.12.3; python_version >= '3.7'
types-requests==2.32.0.20240523; python_version >= '3.8'
typing-extensions==4.12.0; python_version >= '3.8'
types-requests==2.32.0.20240602; python_version >= '3.8'
typing-extensions==4.12.1; python_version >= '3.8'
typing-inspect==0.9.0
tzdata==2024.1; python_version >= '2'
ujson==5.10.0; python_version >= '3.8'
unidecode==1.3.8; python_version >= '3.5'
unstructured[all-docs]==0.14.2; python_version < '3.13' and python_full_version >= '3.9.0'
unstructured-client==0.22.0; python_version >= '3.8'
unstructured[all-docs]==0.14.4; python_version < '3.13' and python_full_version >= '3.9.0'
unstructured-client==0.23.0; python_version >= '3.8'
unstructured-inference==0.7.33
unstructured.pytesseract==0.3.12
uritemplate==4.1.1; python_version >= '3.6'
urllib3==2.2.1; python_version >= '3.8'
uuid6==2024.1.12; python_version >= '3.8'
uvicorn[standard]==0.29.0; python_version >= '3.8'
uvicorn[standard]==0.30.1; python_version >= '3.8'
uvloop==0.19.0
vine==5.1.0; python_version >= '3.6'
watchdog==4.0.1; python_version >= '3.8'
watchfiles==0.21.0
watchfiles==0.22.0
wcwidth==0.2.13
webencodings==0.5.1
websockets==12.0; python_version >= '3.8'
@ -306,4 +306,4 @@ xlrd==2.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3
xlsxwriter==3.2.0; python_version >= '3.6'
xxhash==3.4.1; python_version >= '3.7'
yarl==1.9.4; python_version >= '3.7'
zipp==3.19.0; python_version >= '3.8'
zipp==3.19.2; python_version >= '3.8'

View File

@ -26,8 +26,6 @@ services:
- "0.0.0.0"
- "--port"
- "5050"
- "--workers"
- "6"
- "--log-level"
- "info"
restart: always