[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "selectel-ml-tui" version = "1.0.3" description = "TUI-приложение для отображения потребления ИИ-роутера Selectel" readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Selectel ML Tokens" }] keywords = ["selectel", "ai-router", "tui", "textual", "billing"] classifiers = [ "Environment :: Console", "Operating System :: POSIX :: Linux", "Operating System :: MacOS", "Programming Language :: Python :: 3", "Topic :: Terminals :: Terminal Emulators/X Terminals", ] dependencies = [ "textual>=2.0", "httpx>=0.27", "pydantic>=2.7", "pydantic-settings>=2.3", "python-dotenv>=1.0", "click>=8.1", "platformdirs>=4.0", "tomli>=2.0", "tomli-w>=1.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-cov>=5.0", "ruff>=0.5", "mypy>=1.10", ] build = ["pyinstaller>=6.0"] [project.scripts] selectel-ml-tui = "selectel_ml_tui.cli:main" [project.urls] Homepage = "https://selectel.ru" [tool.hatch.build.targets.wheel] packages = ["src/selectel_ml_tui"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" [tool.coverage.run] branch = true source = ["selectel_ml_tui"] [tool.coverage.report] show_missing = true fail_under = 80 exclude_lines = [ "pragma: no cover", "if TYPE_CHECKING:", "if __name__ == .__main__.:", ] [tool.ruff] target-version = "py310" line-length = 88 src = ["src", "tests"] [tool.ruff.lint] select = ["E", "F", "W", "I", "UP", "B", "SIM"] [tool.ruff.lint.isort] known-first-party = ["selectel_ml_tui"] [tool.ruff.format] quote-style = "double" [tool.mypy] python_version = "3.10" strict = true files = ["src"] show_error_codes = true warn_unused_ignores = true