[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