Spaces:
Sleeping
Sleeping
| [project] | |
| name = "talking-snake" | |
| version = "0.1.1" | |
| description = "Just a talking snake that reads PDFs and web pages aloud." | |
| readme = "README.md" | |
| license = { text = "MIT" } | |
| requires-python = ">=3.11" | |
| authors = [{ name = "Luca" }] | |
| keywords = ["tts", "pdf", "speech", "audiobook", "text-to-speech", "listening"] | |
| classifiers = [ | |
| "Development Status :: 3 - Alpha", | |
| "Intended Audience :: End Users/Desktop", | |
| "License :: OSI Approved :: MIT License", | |
| "Operating System :: POSIX :: Linux", | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Topic :: Multimedia :: Sound/Audio :: Speech", | |
| ] | |
| # System dependencies (not installable via pip): | |
| # - sox: Audio processing tool required by qwen-tts | |
| # Ubuntu/Debian: sudo apt-get install sox libsox-dev | |
| # macOS: brew install sox | |
| # Fedora: sudo dnf install sox sox-devel | |
| dependencies = [ | |
| "fastapi>=0.115.0", | |
| "uvicorn[standard]>=0.32.0", | |
| "qwen-tts>=0.1.1", | |
| "torch>=2.5.0", | |
| "pdfminer.six>=20260107", | |
| "python-multipart>=0.0.12", | |
| "jinja2>=3.1.4", | |
| "httpx>=0.27.0", | |
| "trafilatura>=2.0.0", | |
| ] | |
| [project.optional-dependencies] | |
| dev = [ | |
| "pytest>=8.3.0", | |
| "pytest-asyncio>=0.24.0", | |
| "pytest-cov>=6.0.0", | |
| "httpx>=0.27.0", | |
| "ruff>=0.8.0", | |
| "mypy>=1.14.0", | |
| "pre-commit>=4.0.0", | |
| ] | |
| [project.scripts] | |
| talking-snake = "talking_snake.__main__:main" | |
| [build-system] | |
| requires = ["hatchling"] | |
| build-backend = "hatchling.build" | |
| [tool.hatch.build.targets.wheel] | |
| packages = ["src/talking_snake"] | |
| [tool.pytest.ini_options] | |
| asyncio_mode = "auto" | |
| testpaths = ["tests"] | |
| markers = [ | |
| "slow: marks tests as slow (run with --run-slow)", | |
| ] | |
| [tool.ruff] | |
| line-length = 100 | |
| target-version = "py311" | |
| [tool.ruff.lint] | |
| select = ["E", "F", "I", "N", "W", "UP"] | |
| [tool.ruff.lint.per-file-ignores] | |
| # PDF xref tables require trailing whitespace per spec | |
| "tests/conftest.py" = ["W291"] | |
| [tool.coverage.run] | |
| source = ["src/talking_snake"] | |
| branch = true | |
| omit = [ | |
| "*/tests/*", | |
| "*/__main__.py", | |
| ] | |
| [tool.coverage.report] | |
| exclude_lines = [ | |
| "pragma: no cover", | |
| "if TYPE_CHECKING:", | |
| "raise NotImplementedError", | |
| "if __name__ == .__main__.:", | |
| "class QwenTTSEngine", | |
| "def _audio_to_wav", | |
| "def _split_text", | |
| "import torch", | |
| "from qwen_tts", | |
| ] | |
| show_missing = true | |
| skip_covered = true | |
| fail_under = 70 | |
| [tool.mypy] | |
| python_version = "3.11" | |
| warn_return_any = true | |
| warn_unused_configs = true | |
| disallow_untyped_defs = true | |
| ignore_missing_imports = true | |