[project]
name = "coolrl-lost-cities"
version = "0.1.0"
description = "Focused Lost Cities classic game extraction"
readme = "README.md"
authors = [
    { name = "정시원", email = "sebastianrcnt@gmail.com" }
]
requires-python = ">=3.11"
dependencies = [
    "numpy>=1.26.0",
    "matplotlib>=3.8",
    "pydantic>=2.7",
    "PyYAML>=6.0",
    "torch>=2.3.0",
    "jax>=0.10.2",
    "chex>=0.1.92",
    "flax>=0.12.7",
    "optax>=0.2.8",
    "orbax-checkpoint>=0.12.1",
]

[project.optional-dependencies]
gui = [
    "pygame-ce>=2.5.3",
    "pygame-gui>=0.6.14",
]
wandb = [
    "wandb>=0.17",
]

[project.scripts]
lost-cities-classic = "coolrl_lost_cities.games.classic:main"
lost-cities-eval = "coolrl_lost_cities.games.classic.evaluation:main"
lost-cities-classic-gui = "coolrl_lost_cities.games.classic.pygame_pvp:main"
lost-cities-play = "coolrl_lost_cities.games.classic.pygame_table:main"
lost-cities-deep-cfr = "coolrl_lost_cities.games.classic.deep_cfr.cli:main"
lost-cities-ismcts = "coolrl_lost_cities.games.classic.ismcts.cli:main"
lost-cities-jax-ppo = "lost_cities_jax.ppo_cli:main"

[dependency-groups]
dev = [
    "cython>=3.0",
    "pre-commit>=4.0.0",
    "pytest>=9.0.3",
    "ruff>=0.8.0",
]

[build-system]
requires = ["setuptools>=69", "wheel", "Cython>=3.0", "numpy>=1.26.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["src"]
include = ["coolrl_lost_cities*", "lost_cities_jax*"]

[tool.setuptools.package-data]
"coolrl_lost_cities.games.classic" = [
    "assets/*.json",
    "fixtures/*.json",
    "docs/*.md",
    "*.pxd",
    "*.pyx",
]
"coolrl_lost_cities.games.classic.deep_cfr" = [
    "*.pxd",
    "*.pyx",
]
"coolrl_lost_cities.games.classic.bots" = [
    "*.pxd",
    "*.pyx",
]
"coolrl_lost_cities.games.classic.ismcts" = [
    "*.pxd",
    "*.pyx",
]

[tool.ruff]
line-length = 100
target-version = "py311"
extend-exclude = [
    "src/coolrl_lost_cities/games/classic/game.pyx",
]

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]
ignore = ["E501"]
