[project] name = "golfgame" version = "3.1.6" description = "6-Card Golf card game with AI opponents" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [ {name = "alee"} ] keywords = ["card-game", "golf", "websocket", "fastapi", "ai"] classifiers = [ "Development Status :: 3 - Alpha", "Framework :: FastAPI", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Games/Entertainment :: Board Games", ] dependencies = [ "fastapi>=0.109.0", "uvicorn[standard]>=0.27.0", "websockets>=12.0", "python-dotenv>=1.0.0", # V2: Event sourcing infrastructure "asyncpg>=0.29.0", "redis>=5.0.0", # V2: Authentication "bcrypt>=4.1.0", "resend>=2.0.0", # V2: Production monitoring (optional but recommended) "sentry-sdk[fastapi]>=1.40.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "pytest-cov>=4.1.0", "ruff>=0.1.0", "mypy>=1.8.0", ] [project.scripts] golfgame = "server.main:run" [project.urls] Homepage = "https://github.com/alee/golfgame" Repository = "https://github.com/alee/golfgame" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["server"] # ============================================================================ # Tool Configuration # ============================================================================ [tool.pytest.ini_options] testpaths = ["server"] python_files = ["test_*.py"] python_functions = ["test_*"] addopts = "-v --tb=short" asyncio_mode = "auto" [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long (handled by formatter) "B008", # do not perform function calls in argument defaults ] [tool.ruff.lint.isort] known-first-party = ["server"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_ignores = true disallow_untyped_defs = true ignore_missing_imports = true # ============================================================================ # Game Configuration Defaults # ============================================================================ # These can be overridden via environment variables # See .env.example for documentation [tool.golfgame] # Server settings host = "0.0.0.0" port = 8000 debug = false log_level = "INFO" # Database database_url = "sqlite:///server/games.db" # Game defaults default_rounds = 9 max_players_per_room = 6 room_timeout_minutes = 60 # Card values (standard 6-Card Golf) # These are defined in server/constants.py