content: [project]
  name = "graph_weather"
  requires-python = ">=3.11"
  version = "1.0.89"
  description = "Graph-based AI Weather models"
  authors = [
      {name = "Jacob Prince-Bieker", email = "jacob@bieker.tech"},
  ]
  dependencies = ["torch-harmonics", "anemoi-datasets>=0.4.5,<0.5"]
  
  [build-system]
  build-backend = "hatchling.build"
  requires = ["hatchling"]
  
  [tool.pixi.project]
  channels = ["conda-forge"]
  platforms = ["linux-64", "osx-arm64"]
  
  [tool.pixi.feature.cuda]
  channels = ["nvidia",]
  
  [tool.pixi.feature.cuda.system-requirements]
  cuda = "12"
  
  [tool.pixi.feature.cuda.target.linux-64.dependencies]
  cuda-version = "==12.8"
  
  #[tool.pixi.feature.cuda.target.linux-64.pypi-dependencies]
  #natten = {url = "https://shi-labs.com/natten/wheels/cu124/torch2.4.0/natten-0.17.4%2Btorch240cu124-cp312-cp312-linux_x86_64.whl"}
  
  [tool.pixi.feature.mlx]
  # MLX is only available on macOS >=13.5 (>14.0 is recommended)
  system-requirements = {macos = "13.5"}
  
  [tool.pixi.feature.mlx.target.osx-arm64.dependencies]
  mlx = {version = "*", channel = "conda-forge"}
  
  #[tool.pixi.feature.mlx.target.osx-arm64.pypi-dependencies]
  #natten = "*"
  [tool.pixi.feature.cpu]
  platforms = ["linux-64", "osx-arm64"]
  
  #[tool.pixi.feature.cpu.pypi-dependencies]
  #natten = "*"
  
  [tool.pixi.dependencies]
  python = "3.12.*"
  pip = "*"
  pytest = "*"
  pre-commit = "*"
  ruff = "*"
  xarray = "*"
  pandas = "*"
  numcodecs = "*"
  scipy = "*"
  zarr = ">=3.0.0"
  tqdm = "*"
  lightning = "*"
  einops = "*"
  fsspec = "*"
  datasets = "*"
  trimesh = "*"
  pysolar = "*"
  rtree = "*"
  pixi-pycharm = "*"
  uv = ">=0.6.2,<0.7"
  healpy = "*"
  dacite = "*"
  
  [tool.pixi.pypi-dependencies]
  torch_geometric = "*"
  pytest = "*"
  pytest-xdist = "*"
  h3 = "==3.7.7"
  
  [tool.pixi.feature.cuda.pypi-dependencies]
  torch = { version = ">=2.7.0", index = "https://download.pytorch.org/whl/cu128" }
  torchvision = {version = "*", index = "https://download.pytorch.org/whl/cu128"}
  
  [tool.pixi.feature.mlx.pypi-dependencies]
  torch = { version = ">=2.7.0", index = "https://download.pytorch.org/whl/cpu" }
  torchvision = {version = "*", index = "https://download.pytorch.org/whl/cpu"}
  
  [tool.pixi.feature.cpu.pypi-dependencies]
  torch = { version = ">=2.7.0", index = "https://download.pytorch.org/whl/cpu" }
  torchvision = {version = "*", index = "https://download.pytorch.org/whl/cpu"}
  
  [tool.pixi.environments]
  default = ["cpu"]
  cuda = ["cuda"]
  mlx = ["mlx"]
  
  [tool.pixi.tasks]
  install = "pip install --editable ."
  installnnja = "pip install git+https://github.com/brightbandtech/nnja-ai.git"
  installnat = "pip install natten"
  installnatcuda = "pip install natten==0.20.1+torch270cu128 -f https://whl.natten.org"
  installpyg = "pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.7.0+cpu.html"
  installpygcuda = "pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.7.0+cuda128.html"
  test = "pytest"
  format = "ruff format"
  
  
  [tool.ruff]
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".nox",
      ".pants.d",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
      "tests",
  ]
  # Same as Black.
  line-length = 100
  
  # Assume Python 3.10.
  target-version = "py311"
  fix=false
  # Group violations by containing file.
  output-format = "github"
  
  [tool.ruff.lint]
  # Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
  select = ["E", "F", "D", "I"]
  ignore = ["D200","D202","D210","D212","D415","D105"]
  
  # Allow autofix for all enabled rules (when `--fix`) is provided.
  fixable = ["A", "B", "C", "D", "E", "F", "I"]
  unfixable = []
  # Allow unused variables when underscore-prefixed.
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  mccabe.max-complexity = 10
  pydocstyle.convention = "google"
  
  [tool.ruff.lint.per-file-ignores]
  "__init__.py" = ["F401", "E402"]
  