Files
DocsGPT/docsgpt/requirements.txt
T
Alex f7baa1952f chore(deps): anthropic 1.5, openai 3.13, and the move to httpx2
Both SDKs' 1.x/3.x majors run on httpx2 (the maintained fork of httpx by its
original author, published by Pydantic at github.com/pydantic/httpx2, version
line 2.x) instead of httpx, which is what makes these two bumps one change.
httpx2 is now a declared dependency because two modules import it directly.
Everything else in the 0.x -> 1.x / 2.x -> 3.x change lists is absent here:
no Text Completions, no `with_raw_response`, no raw `output_format` dicts, no
Bedrock client, and `requires-python` is already 3.12.

Three code changes, all forced by the bump:

The BYOM DNS-pinning client in `docsgpt/security/safe_url.py` is handed to
`OpenAI(http_client=...)`, and the SDK rejects an old-httpx client at
construction — which would have taken the SSRF guard offline. It is built on
httpx2 now, and its `sni_hostname` extension carries a `str` rather than
ascii bytes: httpcore passes the value straight to
`ssl.SSLContext.wrap_socket`, and the truststore backend httpx2 uses for the
default system trust store encodes it instead of accepting bytes. Bytes
therefore failed every real handshake while passing the existing tests, which
stub the transport out; the test now pins the type and says why.

The stream-retry error tuple in `docsgpt/llm/base.py` named `httpx`
exceptions only. The two libraries' exception classes are unrelated types, so
after the bump the retry silently stopped firing for openai and anthropic
while still working for google-genai and elevenlabs. It now covers both
stacks, with a parametrized test over each.

anthropic 1.x dropped temperature/top_p/top_k from `messages.create`'s
signature (passing one raises TypeError) without dropping them from the API,
so the provider forwards them through `extra_body`. The wire request is
unchanged and a model that rejects them 400s exactly as before.
2026-09-12 17:44:18 +01:00

943 lines
20 KiB
Plaintext

# GENERATED by scripts/export_requirements.sh from uv.lock -- do not edit.
#
# Core runtime. Optional extras live in requirements-<extra>.txt:
# docling DOC_PARSER_ENGINE=docling, docling OCR backend, read_document structured output
# milvus VECTOR_STORE=milvus
a2wsgi==1.10.10
# via docsgpt
aiofile==3.12.3
# via py-key-value-aio
aiofiles==25.1.0
# via daytona
aiohappyeyeballs==2.7.1
# via aiohttp
aiohttp==3.14.3
# via
# aiohttp-retry
# daytona
# daytona-analytics-api-client-async
# daytona-api-client-async
# daytona-toolbox-api-client-async
# python-socketio
aiohttp-retry==2.9.1
# via
# daytona-analytics-api-client-async
# daytona-api-client-async
# daytona-toolbox-api-client-async
aiosignal==1.4.0
# via aiohttp
alembic==1.20.0
# via docsgpt
amqp==5.3.1
# via kombu
aniso8601==10.0.1
# via flask-restx
annotated-doc==0.0.5
# via typer
annotated-types==0.8.0
# via pydantic
anthropic==1.5.0
# via docsgpt
anyio==4.15.1
# via
# anthropic
# google-genai
# httpx
# httpx-ws
# httpx2
# mcp
# openai
# py-key-value-aio
# sse-starlette
# starlette
# watchfiles
asgiref==3.12.1
# via opentelemetry-instrumentation-asgi
attrs==26.1.0
# via
# aiohttp
# cyclopts
# jsonschema
# jsonschema-path
# referencing
authlib==1.8.0
# via fastmcp-slim
beartype==0.22.9
# via py-key-value-aio
beautifulsoup4==4.15.0
# via
# docsgpt
# markdownify
bidict==0.24.1
# via python-socketio
billiard==4.2.4
# via celery
blinker==1.9.0
# via flask
boto3==1.43.93
# via docsgpt
botocore==1.43.93
# via
# boto3
# s3transfer
cachetools==7.1.8
# via py-key-value-aio
caio==0.12.4
# via aiofile
cel-python==0.5.0
# via docsgpt
celery==5.6.3
# via
# celery-redbeat
# docsgpt
celery-redbeat==2.4.2
# via docsgpt
certifi==2026.7.22
# via
# httpcore
# httpx
# requests
cffi==2.1.1 ; platform_python_implementation != 'PyPy'
# via cryptography
charset-normalizer==3.5.1
# via requests
click==8.1.8
# via
# celery
# click-didyoumean
# click-plugins
# click-repl
# ddgs
# flask
# gtts
# uvicorn
click-didyoumean==0.3.1
# via celery
click-plugins==1.1.1.2
# via celery
click-repl==0.3.0
# via celery
colorama==0.4.6 ; sys_platform == 'win32'
# via
# click
# loguru
# tqdm
# typer
croniter==6.2.4
# via docsgpt
cryptography==50.0.1
# via
# authlib
# docsgpt
# google-auth
# joserfc
# msal
# pyjwt
# secretstorage
cyclopts==4.25.2
# via fastmcp-slim
dataclasses-json==0.6.7
# via docsgpt
daytona==0.211.2
# via docsgpt
daytona-analytics-api-client==0.211.2
# via daytona
daytona-analytics-api-client-async==0.211.2
# via daytona
daytona-api-client==0.211.2
# via daytona
daytona-api-client-async==0.211.2
# via daytona
daytona-toolbox-api-client==0.211.2
# via daytona
daytona-toolbox-api-client-async==0.211.2
# via daytona
ddgs==9.16.0
# via docsgpt
decorator==5.3.1
# via retry
defusedxml==0.7.1
# via
# docsgpt
# praw
deprecated==1.3.1
# via daytona
distro==1.9.0
# via google-genai
dnspython==2.8.0
# via email-validator
docstring-parser==0.18.0
# via
# anthropic
# cyclopts
docx2txt==0.9
# via docsgpt
ecdsa==0.19.2
# via python-jose
elevenlabs==2.68.0
# via docsgpt
email-validator==2.3.0
# via pydantic
et-xmlfile==2.0.0
# via openpyxl
exceptiongroup==1.3.1
# via fastmcp-slim
faiss-cpu==1.15.0
# via docsgpt
fast-ebook==0.2.0
# via docsgpt
fastembed==0.8.0
# via docsgpt
fastmcp==3.4.7
# via docsgpt
fastmcp-slim==3.4.7
# via fastmcp
filelock==3.32.6
# via
# huggingface-hub
# tldextract
firecrawl-anydoc==0.2.4
# via docsgpt
flask==3.1.3
# via
# docsgpt
# flask-restx
flask-restx==1.3.2
# via docsgpt
flatbuffers==25.12.19
# via onnxruntime
frozenlist==1.8.0
# via
# aiohttp
# aiosignal
fsspec==2026.7.0
# via huggingface-hub
google-api-core==2.36.0
# via google-api-python-client
google-api-python-client==2.200.0
# via docsgpt
google-auth==2.58.0
# via
# google-api-core
# google-api-python-client
# google-auth-httplib2
# google-auth-oauthlib
# google-genai
google-auth-httplib2==0.4.2
# via google-api-python-client
google-auth-oauthlib==1.4.1
# via docsgpt
google-genai==2.23.0
# via docsgpt
google-re2==1.1.20251105
# via cel-python
googleapis-common-protos==1.75.3
# via
# google-api-core
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
greenlet==3.5.5 ; platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'
# via sqlalchemy
griffelib==2.3.0
# via fastmcp-slim
grpcio==1.83.1
# via
# opentelemetry-exporter-otlp-proto-grpc
# qdrant-client
gtts==2.5.4
# via docsgpt
gunicorn==26.2.0
# via
# docsgpt
# uvicorn-worker
h11==0.16.0
# via
# httpcore
# httpcore2
# uvicorn
# wsproto
h2==4.4.1
# via httpx
hf-xet==1.6.0 ; platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
# via huggingface-hub
hpack==4.2.0
# via h2
httpcore==1.0.9
# via
# httpx
# httpx-ws
httpcore2==2.12.0 ; sys_platform != 'emscripten'
# via httpx2
httplib2==0.32.0
# via
# google-api-python-client
# google-auth-httplib2
httptools==0.8.0
# via uvicorn
httpx==0.28.1
# via
# daytona
# elevenlabs
# fastmcp-slim
# google-genai
# httpx-ws
# huggingface-hub
# mcp
# qdrant-client
httpx-sse==0.4.3
# via mcp
httpx-ws==0.9.0
# via daytona
httpx2==2.12.0
# via
# anthropic
# docsgpt
# openai
httpx2-jsfetch==1.0 ; sys_platform == 'emscripten'
# via httpx2
huggingface-hub==1.16.1
# via
# fastembed
# tokenizers
hyperframe==6.1.0
# via h2
idna==3.19
# via
# anyio
# email-validator
# httpx
# httpx2
# requests
# tldextract
# yarl
importlib-resources==7.1.0
# via flask-restx
itsdangerous==2.2.0
# via flask
jaraco-classes==3.4.0
# via keyring
jaraco-context==6.1.2
# via keyring
jaraco-functools==4.6.0
# via keyring
jeepney==0.9.0 ; sys_platform == 'linux'
# via
# keyring
# secretstorage
jinja2==3.1.6
# via
# docsgpt
# flask
jiter==0.17.0
# via
# anthropic
# openai
jmespath==1.1.0
# via
# boto3
# botocore
# cel-python
joserfc==1.7.5
# via
# authlib
# fastmcp-slim
jsonref==1.1.0
# via fastmcp-slim
jsonschema==4.26.0
# via
# flask-restx
# mcp
jsonschema-path==0.5.0
# via fastmcp-slim
jsonschema-specifications==2025.9.1
# via jsonschema
keyring==25.7.0
# via py-key-value-aio
kombu==5.6.2
# via
# celery
# docsgpt
lark==1.3.1
# via cel-python
loguru==0.7.3
# via fastembed
lxml==6.1.3
# via
# ddgs
# python-pptx
mako==1.4.1
# via alembic
markdown-it-py==4.2.0
# via rich
markdownify==1.2.3
# via docsgpt
markupsafe==3.0.3
# via
# flask
# jinja2
# mako
# werkzeug
marshmallow==3.26.2
# via dataclasses-json
mcp==1.30.0
# via fastmcp-slim
mdurl==0.1.2
# via markdown-it-py
mmh3==5.3.0
# via fastembed
more-itertools==11.1.0
# via
# jaraco-classes
# jaraco-functools
msal==1.38.0
# via docsgpt
multidict==6.8.0
# via
# aiohttp
# yarl
mypy-extensions==1.1.0
# via typing-inspect
networkx==3.6.1
# via docsgpt
numpy==2.5.3
# via
# docsgpt
# faiss-cpu
# fastembed
# onnxruntime
# pandas
# qdrant-client
oauthlib==3.3.1
# via requests-oauthlib
obstore==0.11.1
# via daytona
onnxruntime==1.30.0
# via
# docsgpt
# fastembed
openai==3.13.0
# via docsgpt
openapi-pydantic==0.5.1
# via fastmcp-slim
openapi3-parser==2.0.0
# via docsgpt
openpyxl==3.1.5
# via docsgpt
opentelemetry-api==1.44.0
# via
# daytona
# fastmcp-slim
# google-api-core
# opentelemetry-distro
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-celery
# opentelemetry-instrumentation-dbapi
# opentelemetry-instrumentation-flask
# opentelemetry-instrumentation-logging
# opentelemetry-instrumentation-psycopg
# opentelemetry-instrumentation-redis
# opentelemetry-instrumentation-requests
# opentelemetry-instrumentation-sqlalchemy
# opentelemetry-instrumentation-starlette
# opentelemetry-instrumentation-wsgi
# opentelemetry-sdk
# opentelemetry-semantic-conventions
opentelemetry-distro==0.65b0
# via docsgpt
opentelemetry-exporter-otlp==1.44.0
# via docsgpt
opentelemetry-exporter-otlp-proto-common==1.44.0
# via
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
opentelemetry-exporter-otlp-proto-grpc==1.44.0
# via opentelemetry-exporter-otlp
opentelemetry-exporter-otlp-proto-http==1.44.0
# via
# daytona
# opentelemetry-exporter-otlp
opentelemetry-instrumentation==0.65b0
# via
# opentelemetry-distro
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-celery
# opentelemetry-instrumentation-dbapi
# opentelemetry-instrumentation-flask
# opentelemetry-instrumentation-logging
# opentelemetry-instrumentation-psycopg
# opentelemetry-instrumentation-redis
# opentelemetry-instrumentation-requests
# opentelemetry-instrumentation-sqlalchemy
# opentelemetry-instrumentation-starlette
# opentelemetry-instrumentation-wsgi
opentelemetry-instrumentation-aiohttp-client==0.65b0
# via daytona
opentelemetry-instrumentation-asgi==0.65b0
# via opentelemetry-instrumentation-starlette
opentelemetry-instrumentation-celery==0.65b0
# via docsgpt
opentelemetry-instrumentation-dbapi==0.65b0
# via opentelemetry-instrumentation-psycopg
opentelemetry-instrumentation-flask==0.65b0
# via docsgpt
opentelemetry-instrumentation-logging==0.65b0
# via docsgpt
opentelemetry-instrumentation-psycopg==0.65b0
# via docsgpt
opentelemetry-instrumentation-redis==0.65b0
# via docsgpt
opentelemetry-instrumentation-requests==0.65b0
# via docsgpt
opentelemetry-instrumentation-sqlalchemy==0.65b0
# via docsgpt
opentelemetry-instrumentation-starlette==0.65b0
# via docsgpt
opentelemetry-instrumentation-wsgi==0.65b0
# via opentelemetry-instrumentation-flask
opentelemetry-proto==1.44.0
# via
# opentelemetry-exporter-otlp-proto-common
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
opentelemetry-sdk==1.44.0
# via
# daytona
# opentelemetry-distro
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
opentelemetry-semantic-conventions==0.65b0
# via
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-celery
# opentelemetry-instrumentation-dbapi
# opentelemetry-instrumentation-flask
# opentelemetry-instrumentation-logging
# opentelemetry-instrumentation-redis
# opentelemetry-instrumentation-requests
# opentelemetry-instrumentation-sqlalchemy
# opentelemetry-instrumentation-starlette
# opentelemetry-instrumentation-wsgi
# opentelemetry-sdk
opentelemetry-util-http==0.65b0
# via
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-flask
# opentelemetry-instrumentation-requests
# opentelemetry-instrumentation-starlette
# opentelemetry-instrumentation-wsgi
packaging==26.3
# via
# faiss-cpu
# fastmcp-slim
# huggingface-hub
# kombu
# marshmallow
# onnxruntime
# opentelemetry-instrumentation
# opentelemetry-instrumentation-flask
# opentelemetry-instrumentation-sqlalchemy
pandas==3.0.5
# via docsgpt
pathable==0.6.0
# via jsonschema-path
pdf2image==1.17.0
# via docsgpt
pendulum==3.2.0
# via cel-python
pgvector==0.5.0
# via docsgpt
pillow==12.3.0
# via
# docsgpt
# fastembed
# pdf2image
# python-pptx
platformdirs==4.11.8
# via fastmcp-slim
portalocker==3.2.0
# via qdrant-client
praw==8.0.3
# via docsgpt
prawcore==4.0.0
# via praw
primp==2.0.0
# via ddgs
prompt-toolkit==3.0.53
# via click-repl
propcache==0.5.2
# via
# aiohttp
# yarl
proto-plus==1.28.4
# via google-api-core
protobuf==7.36.1
# via
# google-api-core
# googleapis-common-protos
# onnxruntime
# opentelemetry-proto
# proto-plus
# qdrant-client
psycopg==3.3.5
# via docsgpt
psycopg-binary==3.3.5 ; implementation_name != 'pypy'
# via psycopg
psycopg-pool==3.3.1
# via psycopg
py==1.11.0
# via retry
py-key-value-aio==0.4.5
# via fastmcp-slim
py-rust-stemmers==0.1.8
# via fastembed
pyasn1==0.6.4
# via
# pyasn1-modules
# python-jose
# rsa
pyasn1-modules==0.4.2
# via google-auth
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
# via cffi
pydantic==2.13.5
# via
# anthropic
# daytona
# daytona-analytics-api-client
# daytona-analytics-api-client-async
# daytona-api-client
# daytona-api-client-async
# daytona-toolbox-api-client
# daytona-toolbox-api-client-async
# docsgpt
# elevenlabs
# fastmcp-slim
# google-genai
# mcp
# openai
# openapi-pydantic
# openapi3-parser
# pydantic-settings
# qdrant-client
pydantic-core==2.46.5
# via
# elevenlabs
# pydantic
pydantic-settings==2.15.0
# via
# docsgpt
# fastmcp-slim
# mcp
pygments==2.21.0
# via
# rich
# rich-rst
pyjwt==2.14.0
# via
# mcp
# msal
pyparsing==3.3.2
# via httplib2
pypdf==6.18.1
# via docsgpt
pypdfium2==5.13.0
# via docsgpt
pyperclip==1.11.0
# via fastmcp-slim
python-dateutil==2.9.0.post0
# via
# botocore
# celery
# celery-redbeat
# croniter
# daytona-analytics-api-client
# daytona-analytics-api-client-async
# daytona-api-client
# daytona-api-client-async
# daytona-toolbox-api-client
# daytona-toolbox-api-client-async
# docsgpt
# pandas
# pendulum
python-dotenv==1.2.3
# via
# daytona
# docsgpt
# fastmcp-slim
# pydantic-settings
# uvicorn
python-engineio==4.14.0
# via python-socketio
python-jose==3.5.0
# via docsgpt
python-multipart==0.0.32
# via
# daytona
# fastmcp-slim
# mcp
python-pptx==1.0.2
# via docsgpt
python-socketio==5.16.4
# via daytona
pywin32==312 ; sys_platform == 'win32'
# via
# mcp
# portalocker
pywin32-ctypes==0.2.3 ; sys_platform == 'win32'
# via keyring
pyyaml==6.0.3
# via
# cel-python
# docsgpt
# fastmcp-slim
# huggingface-hub
# jsonschema-path
# openapi3-parser
# uvicorn
qdrant-client==1.19.0
# via docsgpt
redis==8.1.0
# via
# celery-redbeat
# docsgpt
referencing==0.37.0
# via
# flask-restx
# jsonschema
# jsonschema-path
# jsonschema-specifications
# openapi3-parser
regex==2026.9.10
# via tiktoken
requests==2.34.2
# via
# docsgpt
# elevenlabs
# fastembed
# google-api-core
# google-auth
# google-genai
# gtts
# msal
# opentelemetry-exporter-otlp-proto-http
# prawcore
# python-socketio
# requests-file
# requests-oauthlib
# tiktoken
# tldextract
requests-file==3.0.1
# via tldextract
requests-oauthlib==2.0.0
# via google-auth-oauthlib
retry==0.9.2
# via docsgpt
rich==15.0.0
# via
# cyclopts
# fastmcp-slim
# rich-rst
# typer
rich-rst==2.1.0
# via cyclopts
rpds-py==2026.6.3
# via
# jsonschema
# referencing
rsa==4.9.1
# via python-jose
s3transfer==0.19.2
# via boto3
secretstorage==3.5.0 ; sys_platform == 'linux'
# via keyring
shellingham==1.5.4
# via typer
simple-websocket==1.1.0
# via python-engineio
six==1.17.0
# via
# ecdsa
# markdownify
# python-dateutil
sniffio==1.3.1
# via
# anthropic
# google-genai
# openai
soupsieve==2.9.2
# via beautifulsoup4
sqlalchemy==2.0.52
# via
# alembic
# docsgpt
sse-starlette==3.4.11
# via mcp
starlette==1.6.0
# via
# docsgpt
# fastmcp-slim
# mcp
# sse-starlette
tenacity==9.1.4
# via
# celery-redbeat
# google-genai
tiktoken==0.14.0
# via docsgpt
tldextract==5.3.2
# via docsgpt
tokenizers==0.22.2
# via
# docsgpt
# fastembed
toml==0.10.2
# via daytona
tqdm==4.70.1
# via
# docsgpt
# fastembed
# huggingface-hub
truststore==0.10.4 ; sys_platform != 'emscripten'
# via
# httpcore2
# httpx2
typer==0.26.8
# via huggingface-hub
typing-extensions==4.16.0
# via
# aiohttp
# aiosignal
# alembic
# anthropic
# anyio
# beautifulsoup4
# daytona
# daytona-analytics-api-client
# daytona-analytics-api-client-async
# daytona-api-client
# daytona-api-client-async
# daytona-toolbox-api-client
# daytona-toolbox-api-client-async
# elevenlabs
# exceptiongroup
# fastmcp-slim
# google-genai
# grpcio
# httpx2
# huggingface-hub
# mcp
# obstore
# openai
# opentelemetry-api
# opentelemetry-exporter-otlp-proto-grpc
# opentelemetry-exporter-otlp-proto-http
# opentelemetry-sdk
# opentelemetry-semantic-conventions
# psycopg
# psycopg-pool
# py-key-value-aio
# pydantic
# pydantic-core
# python-pptx
# referencing
# sqlalchemy
# starlette
# typing-inspect
# typing-inspection
typing-inspect==0.9.0
# via dataclasses-json
typing-inspection==0.4.4
# via
# mcp
# pydantic
# pydantic-settings
tzdata==2026.4
# via
# kombu
# pandas
# pendulum
# psycopg
# tzlocal
tzlocal==5.4.4
# via celery
uncalled-for==0.4.0
# via fastmcp-slim
update-checker==1.0.0
# via praw
uritemplate==4.2.0
# via google-api-python-client
urllib3==2.7.0
# via
# botocore
# daytona
# daytona-analytics-api-client
# daytona-api-client
# daytona-toolbox-api-client
# qdrant-client
# requests
uvicorn==0.52.4
# via
# docsgpt
# fastmcp-slim
# mcp
# uvicorn-worker
uvicorn-worker==0.4.0
# via docsgpt
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
# via uvicorn
vine==5.1.0
# via
# amqp
# celery
# kombu
watchfiles==1.2.0
# via
# fastmcp-slim
# uvicorn
wcwidth==0.8.3
# via prompt-toolkit
websocket-client==1.9.2
# via
# docsgpt
# praw
# python-socketio
websockets==16.1.1
# via
# elevenlabs
# fastmcp-slim
# google-genai
# uvicorn
werkzeug==3.1.8
# via
# docsgpt
# flask
# flask-restx
win32-setctime==1.2.0 ; sys_platform == 'win32'
# via loguru
wrapt==2.4.1
# via
# deprecated
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-dbapi
# opentelemetry-instrumentation-redis
# opentelemetry-instrumentation-sqlalchemy
wsproto==1.3.2
# via
# daytona
# httpx-ws
# simple-websocket
xlsxwriter==3.2.9
# via python-pptx
yarl==1.24.5
# via aiohttp