HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/nerfstudio/pyproject.toml
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "nerfstudio"
version = "1.0.2"
description = "All-in-one repository for state-of-the-art NeRFs"
readme = "README.md"
license = { text="Apache 2.0"}
requires-python = ">=3.8.0"
classifiers = [
    "Development Status :: 3 - Alpha",
    "Programming Language :: Python",
]
dependencies = [
    "appdirs>=1.4",
    "av>=9.2.0",
    "awscli>=1.31.10",
    "comet_ml>=3.33.8",
    "cryptography>=38",
    "tyro>=0.6.6",
    "gdown>=4.6.0",
    "ninja>=1.10",
    "h5py>=2.9.0",
    "imageio>=2.21.1",
    'importlib-metadata>=6.0.0; python_version < "3.10"',
    "ipywidgets>=7.6",
    "jaxtyping>=0.2.15",
    "jupyterlab>=3.3.4",
    "matplotlib>=3.6.0",
    "mediapy>=1.1.0",
    "msgpack>=1.0.4",
    "msgpack_numpy>=0.4.8",
    "nerfacc==0.5.2",
    "open3d>=0.16.0",
    "opencv-python==4.8.0.76",
    "Pillow>=9.3.0",
    "plotly>=5.7.0",
    "protobuf<=3.20.3,!=3.20.0",
    # TODO(1480) enable when pycolmap windows wheels are available
    # "pycolmap==0.3.0",
    "pymeshlab>=2022.2.post2; platform_machine != 'arm64' and platform_machine != 'aarch64'",
    "pyngrok>=5.1.0",
    "python-socketio>=5.7.1",
    "pyquaternion>=0.9.9",
    # TODO we can switch back to (non-new) rawpy if they start releasing arm64
    # wheels. https://github.com/letmaik/rawpy/issues/171#issuecomment-1572627747
    "rawpy>=0.18.1; platform_machine != 'arm64'",
    "newrawpy>=1.0.0b0; platform_machine == 'arm64'",
    "requests",
    "rich>=12.5.1",
    "scikit-image>=0.19.3",
    "splines==0.3.0",
    "tensorboard>=2.13.0",
    "torch>=1.13.1",
    "torchvision>=0.14.1",
    "torchmetrics[image]>=1.0.1",
    "typing_extensions>=4.4.0",
    "viser==0.1.21",
    "nuscenes-devkit>=1.1.1",
    "wandb>=0.13.3",
    "xatlas",
    "trimesh>=3.20.2",
    "timm==0.6.7",
    "gsplat>=0.1.6",
    "pytorch-msssim",
    "pathos",
    "packaging"
]

[project.urls]
"Documentation" = "https://docs.nerf.studio"


[project.optional-dependencies]

# Generative related dependencies
gen = [
    "diffusers==0.16.1",
    "transformers==4.29.2",
    "accelerate==0.19.0",
    "bitsandbytes==0.39.0",
    "sentencepiece==0.1.99",
]


# Development packages
dev = [
    "pre-commit==3.3.2",
    "pytest==7.1.2",
    "pytest-xdist==2.5.0",
    "typeguard==2.13.3",
    "ruff==0.1.13",
    "sshconf==0.2.5",
    "pycolmap>=0.3.0",  # NOTE: pycolmap==0.3.0 is not available on newer python versions
    "diffusers==0.16.1",
    "opencv-stubs==0.0.7",
    "transformers==4.29.2",
    "pyright==1.1.331",
    # NOTE: Disabling projectaria-tools because it doesn't have prebuilt windows wheels
    # Syntax comes from here: https://pip.pypa.io/en/stable/reference/requirement-specifiers/
    "projectaria-tools>=1.3.1; sys_platform != 'win32'",
    # pin torch to <=2.1 to fix https://github.com/pytorch/pytorch/issues/118736
    "torch>=1.13.1,<2.2",
]

# Documentation related packages
docs = [
    "furo==2022.09.29",
    # Specifying ipython for https://github.com/ipython/ipython/issues/13845
    "ipython==8.6.0",
    "readthedocs-sphinx-search==0.1.2",
    "myst-nb==0.16.0",
    "nbconvert==7.2.5",
    "nbformat==5.5.0",
    "sphinx==5.2.1",
    "sphinxemoji==0.2.0",
    "sphinx-argparse==0.3.1",
    "sphinx-copybutton==0.5.0",
    "sphinx-design==0.2.0",
    "sphinxext-opengraph==0.6.3"
]

[project.scripts]
# Note, add entrypoint name to nerfstudio/scripts/completions/install.py to include CLI completion
ns-install-cli = "nerfstudio.scripts.completions.install:entrypoint"
ns-process-data = "nerfstudio.scripts.process_data:entrypoint"
ns-download-data = "nerfstudio.scripts.downloads.download_data:entrypoint"
ns-train = "nerfstudio.scripts.train:entrypoint"
ns-viewer = "nerfstudio.scripts.viewer.run_viewer:entrypoint"
ns-eval = "nerfstudio.scripts.eval:entrypoint"
ns-render = "nerfstudio.scripts.render:entrypoint"
ns-export = "nerfstudio.scripts.exporter:entrypoint"
ns-dev-test = "nerfstudio.scripts.github.run_actions:entrypoint"
ns-dev-sync-viser-message-defs = "nerfstudio.scripts.viewer.sync_viser_message_defs:entrypoint"

[tool.setuptools.packages.find]
include = ["nerfstudio*"]

[tool.setuptools.package-data]
"*" = ["*.cu", "*.json", "py.typed", "setup.bash", "setup.zsh"]

[tool.pytest.ini_options]
addopts = "-n=4 --typeguard-packages=nerfstudio --disable-warnings"
testpaths = [
    "tests",
]

[tool.pyright]
include = ["nerfstudio"]
exclude = ["**/node_modules",
    "**/__pycache__",
]
defineConstant = { DEBUG = true }

reportMissingImports = "warning"
reportMissingTypeStubs = false
reportPrivateImportUsage = false

pythonVersion = "3.8"
pythonPlatform = "Linux"

[tool.ruff]
line-length = 120
respect-gitignore = false
select = [
    "E",  # pycodestyle errors.
    "F",  # Pyflakes rules.
    "I",  # isort formatting.
    "PLC",  # Pylint convention warnings.
    "PLE",  # Pylint errors.
    "PLR",  # Pylint refactor recommendations.
    "PLW",  # Pylint warnings.
]
ignore = [
    "E501",  # Line too long.
    "F722",  # Forward annotation false positive from jaxtyping. Should be caught by pyright.
    "F821",  # Forward annotation false positive from jaxtyping. Should be caught by pyright.
    "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.
    "PLR5501",  # Use `elif` instead of `else if`.
    "PLR0911",  # Too many return statements.
    "PLR0912",  # Too many branches.
    "PLW0603",  # Globa statement updates are discouraged.
    "PLW2901",  # For loop variable overwritten.
]

[tool.ruff.lint.isort]
combine-as-imports = true
known-first-party = ["nerfstudio"]
split-on-trailing-comma = false