[project]
name = "elevenlabs"
dynamic = ["version"]

[tool.poetry]
name = "elevenlabs"
version = "2.60.0"
description = ""
readme = "README.md"
authors = []
keywords = []
license = "MIT"
classifiers = [
    "Intended Audience :: Developers",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Programming Language :: Python :: 3.15",
    "Operating System :: OS Independent",
    "Operating System :: POSIX",
    "Operating System :: MacOS",
    "Operating System :: POSIX :: Linux",
    "Operating System :: Microsoft :: Windows",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Typing :: Typed",
    "License :: OSI Approved :: MIT License"
]
packages = [
    { include = "elevenlabs", from = "src"}
]

[tool.poetry.urls]
Repository = 'https://github.com/elevenlabs/elevenlabs-python'

[tool.poetry.dependencies]
python = "^3.8"
httpx = ">=0.21.2"
pyaudio = { version = ">=0.2.14", optional = true}
pydantic = ">= 1.9.2"
pydantic-core = ">=2.18.2"
requests = ">=2.20"
typing_extensions = ">= 4.0.0"
websockets = ">=13.0"

[tool.poetry.group.dev.dependencies]
mypy = "==1.13.0"
pytest = "^7.4.0"
pytest-asyncio = "^0.23.5"
pytest-xdist = "^3.6.1"
python-dateutil = "^2.9.0"
types-python-dateutil = "^2.9.0.20240316"
ruff = "==0.11.5"
types-pyaudio = "^0.2.16.20240516"

[tool.pytest.ini_options]
testpaths = [ "tests" ]
asyncio_mode = "auto"

[tool.mypy]
plugins = ["pydantic.mypy"]

[tool.ruff]
line-length = 120

[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "F",  # pyflakes
    "I",  # isort
]
ignore = [
    "E402",  # Module level import not at top of file
    "E501",  # Line too long
    "E711",  # Comparison to `None` should be `cond is not None`
    "E712",  # Avoid equality comparisons to `True`; use `if ...:` checks
    "E721",  # Use `is` and `is not` for type comparisons, or `isinstance()` for insinstance checks
    "E722",  # Do not use bare `except`
    "E731",  # Do not assign a `lambda` expression, use a `def`
    "F821",  # Undefined name
    "F841"   # Local variable ... is assigned to but never used
]

[tool.ruff.lint.isort]
section-order = ["future", "standard-library", "third-party", "first-party"]

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.poetry.extras]
pyaudio=["pyaudio"]
