[project] name = "dvlt" version = "0.0.1" description = "Déjà View: Looping Transformers for Multi-View 3D Reconstruction" readme = "README.md" requires-python = ">= 3.11" license = { file = "LICENSE" } authors = [ {name = "Tobias Fischer", email = "tobiasfischer623@gmail.com"}, {name = "Alessandro Burzio", email = "aburzio@nvidia.com"}, {name = "Haithem Turki", email = "hturki@nvidia.com"}, ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Image Processing", ] dependencies = [ # core "accelerate==1.15.0", "h5py==3.16.0", "huggingface-hub==1.16.4", "hydra-core==1.3.8", "numpy==2.4.4", "omegaconf==2.3.0", "opencv-python==4.11.0.86", "Pillow==12.3.0", "pydantic==2.12.4", "safetensors==0.5.3", "scipy==1.16.0", "torch==2.13.0", "torchvision==0.28.0", "tqdm==4.67.1", # logging + console "rich==14.3.3", "tensorboard==2.19.0", "wandb==0.25.1", # visualization (transitively required by callbacks/__init__) "matplotlib==3.10.3", "plotly==6.2.0", "rerun-sdk==0.24.1", # 3D geometry (ICP, voxel downsampling) "open3d==0.19.0", ] [project.optional-dependencies] demos = [ # interactive gradio demos "gradio[oauth,mcp]==6.31.0", "onnxruntime-gpu==1.25.0", "requests==2.34.2", "trimesh==4.8.3", ] dev = [ "black==25.1.0", "pre-commit==4.2.0", "pytest==8.4.1", "ruff==0.12.1", ] all = ["dvlt[demos,dev]"] # Using setuptools as the build backend [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" # setuptools configuration [tool.setuptools.packages.find] where = ["src"] include = ["dvlt*"] # Black configuration [tool.black] line-length = 120 target-version = ["py310"] include = '\.pyi?$' extend-exclude = ''' # A regex preceded with ^/ will apply only to files and directories # in the root of the project. ^/build/ ''' # Ruff configuration [tool.ruff] line-length = 120 target-version = "py310" # Enable various linting rules: # E: pycodestyle errors (PEP 8 style guide) # F: Pyflakes (detects logical errors) # I: isort (import sorting) # N: pep8-naming (naming conventions) # W: pycodestyle warnings # B: flake8-bugbear (additional bug detection) # UP: pyupgrade (upgrade syntax to newer Python) # PL: Pylint (general Python linting) # RUF: Ruff-specific rules lint.select = ["E", "F", "I", "W", "B", "PLE", "PLW", "PLC", "PLR"] lint.ignore = [ "E731", # lambda expression "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. "PLW2901", # For loop variable overwritten. "B027", # Allow empty methods in abstract base class ] # Specify directories that should be checked include = ["src/**/*.py", "tests/**/*.py"] # Exclude a variety of commonly ignored directories. exclude = [ ".bzr", ".direnv", ".eggs", ".git", ".git-rewrite", ".hg", ".mypy_cache", ".nox", ".pants.d", ".pytype", ".ruff_cache", ".svn", ".tox", ".venv", "__pypackages__", "_build", "buck-out", "build", "dist", "node_modules", "venv", ] # Allow unused variables when underscore-prefixed. lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.lint.isort] known-first-party = ["dvlt", "tests"] force-single-line = false lines-after-imports = 2 [tool.ruff.lint.flake8-quotes] docstring-quotes = "double" inline-quotes = "single" [tool.ruff.lint.pydocstyle] convention = "google" [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"]