content: [project]
  name = "cax"
  version = "0.2.1"
  description = "Cellular Automata Accelerated in JAX"
  authors = [{ name="Maxence Faldor", email="maxencefaldor@gmail.com" }]
  readme = "README.md"
  license_files = ["LICENSE"]
  requires-python = ">=3.10"
  dependencies = [
  	"jax>=0.6.0",
  	"flax>=0.10.6",
  	"optax>=0.2.0",
  	"pillow>=11.1.0",
  ]
  keywords = [
  	"artificial life",
  	"emergence",
  	"self-organization",
  	"open-endedness",
  	"cellular automata",
  	"neural cellular automata",
  ]
  classifiers = [
  	"Programming Language :: Python :: 3.10",
  	"Programming Language :: Python :: 3.11",
  	"Programming Language :: Python :: 3.12",
  	"Programming Language :: Python :: 3.13",
  	"License :: OSI Approved :: MIT License",
  	"Operating System :: OS Independent",
  ]
  
  [project.optional-dependencies]
  dev = [
      "pytest>=8.3.0",
      "pytest-cov>=5.0.0",
      "ruff>=0.6.0",
      "mypy>=1.11.0",
  ]
  examples = [
  	"torchvision>=0.21.0",
  	"tqdm>=4.67.0",
  	"ipykernel>=6.29.0",
  	"ipywidgets>=8.1.0",
  	"mediapy>=1.2.0",
  ]
  
  [project.urls]
  Homepage = "https://github.com/maxencefaldor/cax"
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.ruff]
  src = ["src", "tests"]
  target-version = "py311"
  line-length = 100
  
  [tool.ruff.lint]
  select = ["E", "D", "F", "I", "N", "SIM", "UP", "W"]
  ignore = [
  	"D203",
  	"D206",
  	"D213",
  	"N803",  # Argument name `A` should be lowercase
  	"N806",  # Variable `A` in function should be lowercase
  	"W191",  # Indentation contains tabs
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "**/*.ipynb" = [
  	"F811",  # Checks for variable definitions that redefine (or "shadow") unused variables.
  ]
  
  [tool.ruff.format]
  indent-style = "tab"
  
  [tool.mypy]
  python_version = "3.11"
  disallow_untyped_defs = "True"
  disallow_any_unimported = "True"
  no_implicit_optional = "True"
  check_untyped_defs = "True"
  warn_return_any = "True"
  show_error_codes = "True"
  warn_unused_ignores = "True"
  