mirror of
https://github.com/tiennm99/litellm.git
synced 2026-06-18 05:28:02 +00:00
212 lines
6.4 KiB
TOML
212 lines
6.4 KiB
TOML
[tool.poetry]
|
|
name = "litellm"
|
|
version = "1.83.5"
|
|
description = "Library to easily interface with LLM API providers"
|
|
authors = ["BerriAI"]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
packages = [
|
|
{ include = "litellm" },
|
|
{ include = "litellm/py.typed"},
|
|
]
|
|
|
|
[tool.poetry.urls]
|
|
homepage = "https://litellm.ai"
|
|
Homepage = "https://litellm.ai"
|
|
repository = "https://github.com/BerriAI/litellm"
|
|
Repository = "https://github.com/BerriAI/litellm"
|
|
documentation = "https://docs.litellm.ai"
|
|
Documentation = "https://docs.litellm.ai"
|
|
|
|
# Dependencies pinned from `pip install litellm[proxy]==1.83.0` PyPI resolution.
|
|
# Docker builds use requirements.txt (different pins). These two paths are independent.
|
|
[tool.poetry.dependencies]
|
|
python = ">=3.9,<4.0"
|
|
fastuuid = "0.14.0"
|
|
httpx = "0.28.1"
|
|
openai = "2.30.0"
|
|
python-dotenv = "1.0.1"
|
|
tiktoken = "0.12.0"
|
|
importlib-metadata = "8.5.0"
|
|
tokenizers = "0.22.2"
|
|
click = "8.1.8"
|
|
jinja2 = "3.1.6"
|
|
aiohttp = "3.13.5"
|
|
pydantic = "2.12.5"
|
|
jsonschema = "4.23.0"
|
|
numpydoc = {version = "1.8.0", optional = true} # not in Docker or PyPI proxy extra
|
|
|
|
uvicorn = {version = "0.33.0", optional = true}
|
|
uvloop = {version = "0.21.0", optional = true, markers="sys_platform != 'win32'"}
|
|
gunicorn = {version = "23.0.0", optional = true}
|
|
fastapi = {version = "0.124.4", optional = true}
|
|
backoff = {version = "2.2.1", optional = true}
|
|
pyyaml = {version = "6.0.3", optional = true}
|
|
rq = {version = "2.7.0", optional = true}
|
|
orjson = {version = "3.10.15", optional = true}
|
|
apscheduler = {version = "3.11.2", optional = true}
|
|
fastapi-sso = { version = "0.16.0", optional = true }
|
|
PyJWT = { version = "2.12.1", optional = true, python = ">=3.9" }
|
|
python-multipart = { version = "0.0.20", optional = true}
|
|
cryptography = {version = "43.0.3", optional = true} # Docker uses 46.0.5; pyproject uses 43.0.3 for Poetry Python 3.9.0/3.9.1 compat
|
|
prisma = {version = "0.11.0", optional = true}
|
|
azure-identity = {version = "1.25.3", optional = true, python = ">=3.9"}
|
|
azure-keyvault-secrets = {version = "4.10.0", optional = true}
|
|
azure-storage-blob = {version = "12.28.0", optional = true}
|
|
google-cloud-kms = {version = "2.24.2", optional = true} # not in PyPI proxy extra
|
|
google-cloud-iam = {version = "2.19.1", optional = true}
|
|
google-cloud-aiplatform = {version = "1.133.0", optional = true}
|
|
resend = {version = "2.23.0", optional = true} # not in PyPI proxy extra
|
|
pynacl = {version = "1.6.2", optional = true}
|
|
websockets = {version = "15.0.1", optional = true}
|
|
boto3 = { version = "1.42.80", optional = true }
|
|
redisvl = {version = "0.4.1", optional = true, markers = "python_version >= '3.9' and python_version < '3.14'"}
|
|
mcp = {version = "1.26.0", optional = true, python = ">=3.10"}
|
|
a2a-sdk = {version = "0.3.25", optional = true, python = ">=3.10"}
|
|
litellm-proxy-extras = {version = "0.4.65", optional = true}
|
|
rich = {version = "13.9.4", optional = true}
|
|
litellm-enterprise = {version = "0.1.37", optional = true}
|
|
diskcache = {version = "5.6.3", optional = true}
|
|
polars = {version = "1.39.3", optional = true, python = ">=3.10"}
|
|
semantic-router = {version = "0.1.12", optional = true, python = ">=3.9,<3.14"}
|
|
mlflow = {version = "3.9.0", optional = true, python = ">=3.10"} # not in PyPI proxy extra
|
|
soundfile = {version = "0.12.1", optional = true}
|
|
pyroscope-io = {version = "0.8.16", optional = true, markers = "sys_platform != 'win32'"}
|
|
# grpcio: pinned to 1.80.0 (past reconnect bug #38290 in 1.68.x, has Python 3.14 wheels)
|
|
grpcio = {version = "1.80.0", optional = true}
|
|
|
|
[tool.poetry.extras]
|
|
proxy = [
|
|
"gunicorn",
|
|
"uvicorn",
|
|
"uvloop",
|
|
"fastapi",
|
|
"backoff",
|
|
"pyyaml",
|
|
"rq",
|
|
"orjson",
|
|
"apscheduler",
|
|
"fastapi-sso",
|
|
"PyJWT",
|
|
"python-multipart",
|
|
"cryptography",
|
|
"pynacl",
|
|
"websockets",
|
|
"boto3",
|
|
"azure-identity",
|
|
"azure-storage-blob",
|
|
"mcp",
|
|
"litellm-proxy-extras",
|
|
"litellm-enterprise",
|
|
"rich",
|
|
"polars",
|
|
"soundfile",
|
|
"pyroscope-io",
|
|
]
|
|
|
|
extra_proxy = [
|
|
"prisma",
|
|
"azure-identity",
|
|
"azure-keyvault-secrets",
|
|
"google-cloud-kms",
|
|
"google-cloud-iam",
|
|
"resend",
|
|
"redisvl",
|
|
"a2a-sdk"
|
|
]
|
|
|
|
utils = [
|
|
"numpydoc",
|
|
]
|
|
|
|
|
|
|
|
caching = ["diskcache"]
|
|
|
|
semantic-router = ["semantic-router"]
|
|
|
|
mlflow = ["mlflow"]
|
|
|
|
grpc = ["grpcio"]
|
|
|
|
google = ["google-cloud-aiplatform"]
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
|
|
[tool.poetry.scripts]
|
|
litellm = 'litellm:run_server'
|
|
litellm-proxy = 'litellm.proxy.client.cli:cli'
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
diff-cover = "9.7.2"
|
|
flake8 = "7.3.0"
|
|
black = "24.10.0"
|
|
mypy = "1.19.0"
|
|
pytest = "8.3.5"
|
|
pytest-mock = "3.15.1"
|
|
pytest-asyncio = "1.2.0"
|
|
pytest-postgresql = "7.0.2"
|
|
pytest-xdist = "3.8.0"
|
|
requests-mock = "1.12.1"
|
|
responses = "0.26.0"
|
|
respx = "0.22.0"
|
|
ruff = "0.15.3"
|
|
types-requests = {version = "2.32.4.20260107", python = ">=3.10"}
|
|
types-setuptools = "75.8.0.20250225"
|
|
types-redis = "4.6.0.20241004"
|
|
types-PyYAML = "6.0.12.20250915"
|
|
opentelemetry-api = "1.28.0"
|
|
opentelemetry-sdk = "1.28.0"
|
|
opentelemetry-exporter-otlp = "1.28.0"
|
|
langfuse = "2.59.7"
|
|
fastapi-offline = "1.7.6"
|
|
fakeredis = "2.34.1"
|
|
pytest-rerunfailures = "15.1"
|
|
pytest-cov = "5.0.0"
|
|
parameterized = "0.9.0"
|
|
|
|
[tool.poetry.group.proxy-dev.dependencies]
|
|
prisma = "0.11.0"
|
|
hypercorn = "0.17.3"
|
|
prometheus-client = "0.20.0"
|
|
opentelemetry-api = "1.28.0"
|
|
opentelemetry-sdk = "1.28.0"
|
|
opentelemetry-exporter-otlp = "1.28.0"
|
|
azure-identity = {version = "1.25.3", python = ">=3.9"}
|
|
a2a-sdk = {version = "0.3.25", python = ">=3.10"}
|
|
|
|
[build-system]
|
|
requires = ["poetry-core", "wheel"]
|
|
build-backend = "poetry.core.masonry.api"
|
|
|
|
[tool.commitizen]
|
|
version = "1.83.5"
|
|
version_files = [
|
|
"pyproject.toml:^version"
|
|
]
|
|
|
|
[tool.mypy]
|
|
plugins = "pydantic.mypy"
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "session"
|
|
markers = [
|
|
"asyncio: mark test as an asyncio test",
|
|
"limit_leaks: mark test with memory limit for leak detection (e.g., '40 MB')",
|
|
"no_parallel: mark test to run sequentially (not in parallel) - typically for memory measurement tests",
|
|
]
|
|
filterwarnings = [
|
|
# Suppress Pydantic serializer warnings from mock server responses (non-critical for memory tests)
|
|
# These occur because the mock server returns a simplified response format
|
|
"ignore:Pydantic serializer warnings:UserWarning",
|
|
"ignore::UserWarning:pydantic.main",
|
|
# Suppress pytest-asyncio event loop deprecation warning (handled automatically by pytest-asyncio)
|
|
"ignore::DeprecationWarning:pytest_asyncio.plugin",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["litellm"]
|
|
relative_files = true
|