content: [build-system]
  requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
  write_to = "nerfbaselines/_version.py"
  
  [project]
  name = "nerfbaselines"
  authors = [
    { name="Jonas Kulhanek", email="jonas.kulhanek@live.com" },
  ]
  description = "Reproducible evaluation of NeRF and 3DGS methods"
  readme = "README.md"
  requires-python = ">=3.7"
  license = { text="MIT" }
  classifiers = [
      "Programming Language :: Python :: 3",
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
  ]
  dependencies = [
      "opencv-python>=4.6.0",
      "typing-extensions>=4.4.0",
      "click>=8.0.0,!=8.3.0",
      "tqdm>=4.61.1",
      "Pillow>=8.2.0",
      "matplotlib>=3.4.2",
      "plyfile>=0.7.3",
      "numpy>=1.19.5,<2.0.0",
      "tensorboard>=2.5.0",
      "scipy",
      'importlib-metadata>=6.0.0; python_version < "3.10"',
      'importlib-resources; python_version < "3.9"',
  ]
  dynamic = ["version"]
  
  [project.urls]
  Documentation = "https://nerfbaselines.github.io/docs"
  Source = "https://github.com/nerfbaselines/nerfbaselines"
  Homepage = "https://nerfbaselines.github.io/"
  "Bug Tracker" = "https://github.com/nerfbaselines/nerfbaselines/issues"
  
  [project.optional-dependencies]
  web = [
      'jinja2>=3.1.4',
      'livereload>=2.7.0',
      'sphinx-click>=6.0.0',
      'sphinx>=4.2.0,<8.0.0',
      'sphinx-rtd-theme>=2.0.0',
      'sphinxcontrib-apidoc>=0.5.0',
      'sphinxext-opengraph>=0.9.1',
      'sphinx-copybutton>=0.5.2',
      'furo>=2022.1.0',
      'myst_parser>=4.0.0',
      'myst_nb>=1.1.1',
      'sphinx-design>=0.6.1',
  ]
  dev = [
      'pytest',
      'typeguard<=4.2.1',
      'pytest-benchmark',
      'pyright<=1.1.377',
      # Web
      'jinja2==3.1.4',
      'livereload==2.7.0',
      # Release
      'twine',
      'build',
  ]
  extras = [
      'mediapy',
      'wandb',
      'gdown',
  ]
  extras-tests = [
      # 3DGRUT dependencies
      'addict',
      'hydra-core',
      'omegaconf',
      'einops',
      'dataclasses_json',
      'usd-core',
      'scikit-learn',
      'setuptools<70',
      'slangtorch',
  	'imageio',
  	'msgpack',
      # Shared dependencies
      'torch',
      'torchvision',
      'jax[cpu]',
      'torchmetrics==1.4.1',
      'dm_pix',
      'gin',
  ]
  
  [project.scripts]
  nerfbaselines = "nerfbaselines.__main__:main"
  
  [tool.pytest.ini_options]
  addopts = '--typeguard-packages nerfbaselines --benchmark-name=short --benchmark-columns mean,median'
  
  [tool.setuptools]
  include-package-data = true
  
  [tool.setuptools.packages.find]
  include = ["nerfbaselines*"]
  
  [tool.black]
  line-length = 200
  
  [tool.pyright]
  exclude = ["**/node_modules",
      "**/__pycache__",
      "**/build",
      "docs/**/*",
      "nerfbaselines/methods/nerfonthego.py",
      "nerfbaselines/methods/trips/**/*",
      "nerfbaselines/methods/taming_3dgs_patch.py",
      "nerfbaselines/methods/hierarchical_3dgs_patch.py",
      "nerfbaselines/methods/pgsr_patch.py",
      "nerfbaselines/methods/octree_gs_patch.py",
      "nerfbaselines/methods/student_splatting_scooping_patch.py",
      "nerfbaselines/methods/sparsegs_patch.py",
      "scripts/**/*",
      "tests/.cache-*",
      "tests/conftest.py",
  ]
  defineConstant = { DEBUG = true }
  reportMissingImports = "warning"
  reportMissingTypeStubs = false
  reportPrivateImportUsage = false
  pythonVersion = "3.11"
  pythonPlatform = "Linux"
  
  [tool.ruff]
  select = [
      "E",  # pycodestyle errors.
      "F",  # Pyflakes rules.
      "PLC",  # Pylint convention warnings.
      "PLE",  # Pylint errors.
      "PLR",  # Pylint refactor recommendations.
      "PLW",  # Pylint warnings.
  ]
  ignore = [
      "E501",  # Line too long.
      "PLR2004",  # Magic value used in comparison.
      "PLR0915",  # Too many statements.
      "PLR0913",  # Too many arguments.
      "PLC0414",  # Import alias does not rename variable. (this is used for exporting names)
      "PLC1901",  # Use falsey strings.
      "PLR0911",  # Too many return statements.
      "PLR0912",  # Too many branches.
      "PLW0603",  # Globa statement updates are discouraged.
      "PLW2901",  # For loop variable overwritten.
      "PLR1714",  # Repeated equality comparison.
  ]
  
  [tool.cu]
  defaults = ["$CU_DEFAULT_CONFIGS/default.yml"]
  include = [["//", "source"]]
  
  [tool.cu.plugins.conda]
  python = "3.11"
  type = "cluster_utils.plugins.SetupConda"
  install-script = """
  pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
  pip install 'jax[cpu]'
  pip install -e "$JOBDIR"'/source[extras]'
  """
  