diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..89fc266 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,89 @@ +[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