Overview
Concrete project configuration defining the DVC build system, dependencies, entry points, and development tool settings. The pyproject.toml serves as the single source of truth for the DVC package metadata, build configuration, runtime dependencies, optional extras, CLI entry points, filesystem plugin registrations, and development tool configurations (pytest, coverage, mypy, ruff, codespell).
Source: pyproject.toml (314 lines)
Note: This is a configuration file, not Python code. The signature section shows entry points instead of function signatures.
Entry Points
# CLI entry point
[project.scripts]
dvc = "dvc.cli:main"
# fsspec filesystem specification
[project.entry-points."fsspec.specs"]
dvc = "dvc.api:DVCFileSystem"
# universal_pathlib implementations
[project.entry-points."universal_pathlib.implementations"]
dvc = "dvc.fs.dvc_path:DVCPath"
"dvc+http" = "dvc.fs.dvc_path:DVCPath"
"dvc+https" = "dvc.fs.dvc_path:DVCPath"
"dvc+ssh" = "dvc.fs.dvc_path:DVCPath"
# PyInstaller hooks
[project.entry-points."pyinstaller40"]
hook-dirs = "dvc.__pyinstaller:get_hook_dirs"
tests = "dvc.__pyinstaller:get_PyInstaller_tests"
Import
N/A (configuration file)
Description
Build System
| Setting |
Value
|
| Build backend |
setuptools.build_meta
|
| Build requirements |
setuptools>=77, setuptools_scm[toml]>=8
|
| Version management |
Dynamic via setuptools_scm, written to dvc/_version.py
|
| Package discovery |
setuptools.packages.find excluding tests and tests.*
|
Project Metadata
| Field |
Value
|
| Name |
dvc
|
| Description |
"Git for data scientists - manage your code and data together"
|
| License |
Apache-2.0
|
| Python requirement |
>=3.9
|
| Supported Python versions |
3.9, 3.10, 3.11, 3.12, 3.13, 3.14
|
| Author |
Dmitry Petrov (dmitry@dvc.org)
|
| Maintainer |
Treeverse (support@dvc.org)
|
Runtime Dependencies
The project declares 40+ runtime dependencies. Key dependency groups:
| Category |
Dependencies
|
| Data management |
dvc-data>=3.18.2,<3.19.0, dvc-objects, dvc-render>=1.0.1,<2
|
| Configuration |
hydra-core>=1.1, omegaconf, configobj>=5.0.9, tomlkit>=0.11.1
|
| UI / Output |
rich>=12, colorama>=0.3.9, tabulate>=0.8.7, tqdm<5,>=4.63.1
|
| Filesystem |
fsspec>=2024.2.0, dvc-http>=2.29.0
|
| Git / SCM |
scmrepo>=3.5.2,<4, dulwich, gto>=1.6.0,<2
|
| Task queue |
celery, kombu, dvc-task>=0.3.0,<1
|
| Parsing / Serialization |
ruamel.yaml>=0.17.11, voluptuous>=0.11.7, flatten-dict<1,>=0.4.1, dpath<3,>=2.1.0
|
| Networking |
requests>=2.22
|
| Utilities |
funcy>=1.14, attrs>=22.2.0, shortuuid>=0.5, psutil>=5.8, packaging>=19
|
| Studio integration |
dvc-studio-client>=0.21,<1, iterative-telemetry>=0.0.7
|
| Graph / Visualization |
networkx>=2.5, grandalf<1,>=0.7, pydot>=1.2.4
|
Optional Dependency Groups
| Extra |
Dependencies
|
all |
Installs all cloud backends: azure, gdrive, gs, hdfs, oss, s3, ssh, webdav, webhdfs
|
s3 |
dvc-s3>=3.2.1,<4
|
gs |
dvc-gs>=3.0.2,<4
|
azure |
dvc-azure>=3.1.0,<4
|
gdrive |
dvc-gdrive>=3,<4
|
hdfs |
dvc-hdfs>=3,<4
|
oss |
dvc-oss>=3,<4
|
ssh |
dvc-ssh>=4,<5
|
ssh_gssapi |
dvc-ssh[gssapi]>=4,<5
|
webdav |
dvc-webdav>=3.0.1,<4
|
webhdfs |
dvc-webhdfs>=3.1,<4
|
webhdfs_kerberos |
dvc-webhdfs[kerberos]>=3.1,<4
|
testing |
pytest-benchmark[histogram]>=5,<6, uv
|
tests |
pytest, pytest-cov, pytest-mock, pytest-docker, pytest-xdist, pytest-timeout, beautifulsoup4, filelock, sqlalchemy, pandas, and more
|
lint |
mypy==1.19.1, type stubs for colorama, psutil, requests, tabulate, tqdm, etc.
|
dev |
Combines all cloud backends, lint, and tests extras
|
Tool Configurations
pytest
| Setting |
Value
|
| Default options |
-ra --cov-config pyproject.toml
|
| Test paths |
tests/
|
| xfail_strict |
true
|
| Custom markers |
needs_internet, studio, vscode
|
| Filter warnings |
Converts ResourceWarning, PytestUnraisableExceptionWarning, PytestMockWarning to errors; ignores specific deprecation warnings from boto, google-cloud, networkx, etc.
|
coverage
| Setting |
Value
|
| Branch coverage |
Enabled
|
| Source paths |
dvc, tests
|
| Excluded lines |
if __name__, TYPE_CHECKING, @overload, pragma: no cover, raise AssertionError, raise NotImplementedError
|
mypy
| Setting |
Value
|
| Files |
dvc/
|
| Key flags |
check_untyped_defs, no_implicit_optional, strict_equality, extra_checks, warn_unreachable
|
| Ignored imports |
30+ third-party modules without type stubs (celery, fsspec, funcy, networkx, ruamel, voluptuous, etc.)
|
ruff
| Setting |
Value
|
| Selected rule sets |
F, E, W, C90, I, N, UP, YTT, ASYNC, S, BLE, B, A, C4, DTZ, T10, EXE, ISC, ICN, LOG, G, INP, PIE, T20, PYI, PT, Q, RSE, RET, SLOT, SIM, TID, TC, ARG, PGH, PLC, PLE, PLR, PLW, TRY, FLY, PERF, FURB, RUF
|
| Ignored rules |
PERF203 (try-except-in-loop), PLC0415 (import-outside-top-level), PLR2004 (magic-value), PLW2901 (redefined-loop-name), S101 (assert), SIM105, SIM108, SIM117, TRY003, TRY300
|
| Per-file overrides |
dvc/commands/**: ignore N806; dvc/testing/**: ignore ARG002; tests/**: ignore S, ARG001, ARG002, TRY002, TRY301, PERF, PLR2004
|
| isort config |
First-party: dvc, dvc_*, tests
|
Related
Page Connections
Double-click a node to navigate. Hold to expand connections.