[project] name = "wiregui" version = "0.1.0" description = "WireGuard VPN management platform — Python/NiceGUI rewrite of Wirezone" readme = "README.md" license = "AGPL-3.0-or-later" requires-python = ">=3.13" dependencies = [ # UI "nicegui>=2.12", # ORM & Database "sqlmodel>=0.0.22", "asyncpg>=0.30", "alembic>=1.14", # Configuration "pydantic-settings>=2.7", # Cache "redis>=5.2", # Encryption "cryptography>=44", # Auth "bcrypt>=4.0", "python-jose[cryptography]>=3.3", "authlib>=1.4", "pyotp>=2.9", "webauthn>=2.2", "python3-saml>=1.16", # HTTP client "httpx>=0.28", # Email "aiosmtplib>=3.0", # QR codes "qrcode[pil]>=8.0", # YAML config "pyyaml>=6.0", # Logging "loguru>=0.7.3", ] [dependency-groups] dev = [ "playwright>=1.58.0", "pytest>=8.0", "pytest-asyncio>=0.24", "pytest-cov>=7.1.0", "python-semantic-release>=9.0", "respx>=0.22.0", ] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" asyncio_default_test_loop_scope = "session" testpaths = ["tests"] # E2E tests run separately: uv run pytest tests/e2e/ # NiceGUI's testing plugin conflicts with unit tests when loaded together addopts = "--ignore=tests/e2e" main_file = "wiregui/main.py" # --------------------------------------------------------------------------- # Semantic Release # --------------------------------------------------------------------------- [tool.semantic_release] version_toml = ["pyproject.toml:project.version"] tag_format = "v{version}" commit_message = "chore(release): {version}" build_command = "" major_on_zero = false [tool.semantic_release.branches.main] match = "(main|master)" prerelease = false [tool.semantic_release.branches.dev] match = "dev" prerelease = true prerelease_token = "rc" [tool.semantic_release.changelog] exclude_commit_patterns = [ "^chore\\(release\\):", ] [tool.semantic_release.changelog.default_templates] changelog_file = "CHANGELOG.md" [tool.semantic_release.remote] type = "gitea" token = { env = "GITHUB_TOKEN" } [tool.semantic_release.publish] upload_to_vcs_release = false