[build-system] requires = ["setuptools>=69", "wheel"] build-backend = "setuptools.build_meta" [project] name = "driftcall" version = "0.1.0" description = "DriftCall — voice-first Indic concierge RL environment under schema drift." readme = "README.md" requires-python = ">=3.11,<3.13" license = { text = "Apache-2.0" } authors = [ { name = "DriftCall Team" }, ] keywords = ["openenv", "rl", "voice", "indic", "schema-drift", "grpo"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ # Training stack (V100/H100, text-only GRPO — training.md §6.1). "unsloth>=2026.4.5", "trl>=0.23", "torch>=2.5", "transformers>=4.51", "peft>=0.13", "bitsandbytes>=0.43", "accelerate>=1.0", "timm>=1.0", # Server + OpenEnv (deploy_env_space.md §4.5). "fastapi>=0.115", "uvicorn[standard]>=0.32", "openenv>=0.1.10,<0.2", "pydantic>=2.7", # Audio (audio.md §6.1). "kokoro>=0.3,<0.4", "faster-whisper>=1.0,<2.0", "torchaudio>=2.5", "soundfile>=0.12", "numpy<2.0", # Demo / pitch (deploy_demo_space.md). "gradio>=5.8,<6", # Notebook builder (CLAUDE.md §5). "jupytext>=1.16", "nbformat>=5.10", # Fixtures / task generator. "PyYAML>=6.0", "cachetools>=5.3", "huggingface_hub>=0.25", # Experiment tracking (training.md §3.3.3). "wandb>=0.18", ] [project.optional-dependencies] dev = [ "pytest>=8", "pytest-cov>=5", "hypothesis>=6.100", "ruff>=0.7", "mypy>=1.13", ] [project.urls] Homepage = "https://huggingface.co/spaces/driftcall/driftcall-env" Repository = "https://github.com/krrishchoudhary109/openenv-DGXAI" [project.scripts] server = "server.app:main" [tool.setuptools] packages = ["cells", "server"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "W", "B", "UP", "SIM", "TCH"] ignore = ["E501"] # line-length enforced separately [tool.ruff.lint.per-file-ignores] "cells/step_02_imports.py" = ["F401"] # intentional re-exports [tool.mypy] python_version = "3.11" strict = true ignore_missing_imports = true warn_unused_ignores = true warn_redundant_casts = true explicit_package_bases = true [[tool.mypy.overrides]] module = ["kokoro", "kokoro.*", "faster_whisper", "faster_whisper.*", "torchaudio", "torchaudio.*", "soundfile"] ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-ra --strict-markers" filterwarnings = [ "ignore::DeprecationWarning", ] markers = [ "unit: unit tests", "property: hypothesis property tests", "integration: integration tests", "slow: slow tests (excluded from default run)", ] [tool.coverage.run] branch = true source = ["cells"] [tool.coverage.report] show_missing = true skip_covered = false