[project] name = "geoguessr-mcp" version = "0.1.0" description = "MCP server for analyzing GeoGuessr account data" readme = "README.md" requires-python = ">=3.13" license = {text = "MIT"} authors = [ {name = "Yûki VACHOT", email = "yuki.vachot@datasingularity.fr"} ] keywords = ["mcp", "geoguessr", "claude", "ai", "model-context-protocol"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "mcp[cli]>=1.4.0", "httpx>=0.27.0", "uvicorn>=0.30.0", "starlette>=0.38.0", "python-dotenv>=1.0.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "pytest-cov>=4.1.0", "pytest-mock>=3.12.0", "respx>=0.20.0", "black>=24.0.0", "ruff>=0.3.0", "mypy>=1.8.0", "pre-commit>=3.6.0", "debugpy>=1.8.0", "ipython>=8.0.0", "rich>=13.0.0", "uv>=0.9.0", "hatch>=1.10.0", ] [project.scripts] geoguessr-mcp = "server:main" [project.urls] Homepage = "https://github.com/NyxiumYuuki/GeoGuessrMCP" Repository = "https://github.com/NyxiumYuuki/GeoGuessrMCP" Issues = "https://github.com/NyxiumYuuki/GeoGuessrMCP/issues" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["."] # Black configuration [tool.black] line-length = 100 target-version = ['py310', 'py311', 'py312', 'py313'] include = '\.pyi?$' exclude = ''' /( \.eggs | \.git | \.hatch | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist )/ ''' # Ruff configuration [tool.ruff] line-length = 100 target-version = "py313" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "ARG", # flake8-unused-arguments "SIM", # flake8-simplify ] ignore = [ "E501", # line too long (handled by black) "B008", # do not perform function calls in argument defaults "C901", # too complex "ARG001", # unused function argument ] [tool.ruff.lint.per-file-ignores] "tests/*" = ["ARG001", "S101"] # Pytest configuration [tool.pytest.ini_options] minversion = "8.0" asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py", "*_test.py"] python_functions = ["test_*"] addopts = [ "-v", "--tb=short", "--strict-markers", ] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests", ] # Coverage configuration [tool.coverage.run] source = ["."] omit = [ "tests/*", ".venv/*", "*.pyc", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] # MyPy configuration [tool.mypy] python_version = "3.13" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true follow_imports = "silent" ignore_missing_imports = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false