mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
309 lines
9.2 KiB
TOML
309 lines
9.2 KiB
TOML
[build-system]
|
|
build-backend = "setuptools.build_meta"
|
|
requires = ["setuptools>=61", "setuptools_scm[toml]>=7"]
|
|
|
|
[project]
|
|
name = "dvc"
|
|
description = "Git for data scientists - manage your code and data together"
|
|
readme = "README.rst"
|
|
keywords = [
|
|
"ai",
|
|
"collaboration",
|
|
"data-science",
|
|
"data-version-control",
|
|
"developer-tools",
|
|
"git",
|
|
"machine-learning",
|
|
"reproducibility",
|
|
]
|
|
license = { text = "Apache License 2.0" }
|
|
maintainers = [{ name = "Iterative", email = "[email protected]" }]
|
|
authors = [{ name = "Dmitry Petrov", email = "[email protected]" }]
|
|
requires-python = ">=3.8"
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
]
|
|
dynamic = ["version"]
|
|
dependencies = [
|
|
"colorama>=0.3.9",
|
|
"configobj>=5.0.6",
|
|
"distro>=1.3",
|
|
"dpath<3,>=2.1.0",
|
|
"dvc-data>=1.2.1,<1.3.0",
|
|
"dvc-http>=2.29.0",
|
|
"dvc-render>=0.3.1,<1",
|
|
"dvc-studio-client>=0.9.2,<1",
|
|
"dvc-task>=0.2.1,<1",
|
|
"flatten_dict<1,>=0.4.1",
|
|
"flufl.lock>=5",
|
|
"funcy>=1.14",
|
|
"grandalf<1,>=0.7",
|
|
"hydra-core>=1.1",
|
|
"iterative-telemetry>=0.0.7",
|
|
"networkx>=2.5",
|
|
"packaging>=19",
|
|
"pathspec>=0.10.3",
|
|
"platformdirs<4,>=3.1.1",
|
|
"psutil>=5.8",
|
|
"pydot>=1.2.4",
|
|
"pygtrie>=2.3.2",
|
|
"pyparsing>=2.4.7",
|
|
"requests>=2.22",
|
|
"rich>=12",
|
|
"ruamel.yaml>=0.17.11",
|
|
"scmrepo>=1.0.0,<2",
|
|
"shortuuid>=0.5",
|
|
"shtab<2,>=1.3.4",
|
|
"tabulate>=0.8.7",
|
|
"tomlkit>=0.11.1",
|
|
"tqdm<5,>=4.63.1",
|
|
"voluptuous>=0.11.7",
|
|
"zc.lockfile>=1.2.1",
|
|
]
|
|
[project.optional-dependencies]
|
|
all = ["dvc[azure,gdrive,gs,hdfs,oss,s3,ssh,webdav,webhdfs]"]
|
|
azure = ["dvc-azure>=2.21.2"]
|
|
dev = ["dvc[azure,gdrive,gs,hdfs,lint,oss,s3,ssh,terraform,tests,webdav,webhdfs]"]
|
|
gdrive = ["dvc-gdrive==2.19.2"]
|
|
gs = ["dvc-gs==2.22.1"]
|
|
hdfs = ["dvc-hdfs==2.19"]
|
|
lint = [
|
|
"mypy==1.3.0",
|
|
"pylint==2.17.4",
|
|
"types-colorama",
|
|
"types-psutil",
|
|
"types-requests",
|
|
"types-tabulate",
|
|
"types-toml",
|
|
"types-tqdm",
|
|
]
|
|
oss = ["dvc-oss==2.19"]
|
|
s3 = ["dvc-s3==2.22.0"]
|
|
ssh = ["dvc-ssh>=2.22.1,<3"]
|
|
ssh_gssapi = ["dvc-ssh[gssapi]>=2.22.1,<3"]
|
|
terraform = ["tpi[ssh]>=2.1"]
|
|
testing = [
|
|
"pytest-test-utils",
|
|
"pytest-benchmark[histogram]",
|
|
"pytest-virtualenv",
|
|
]
|
|
tests = [
|
|
"dvc[testing]",
|
|
"beautifulsoup4>=4.4",
|
|
"dvc-ssh",
|
|
"filelock",
|
|
"flaky",
|
|
"pytest<8,>=7",
|
|
"pytest-cov",
|
|
"pytest-docker>=1,<2",
|
|
"pytest-lazy-fixture",
|
|
"pytest-mock",
|
|
"pytest-test-utils",
|
|
"pytest-timeout>=2",
|
|
"pytest-xdist>=3.2",
|
|
'pywin32>=225; sys_platform == "win32"', # optional test dependency
|
|
'tzdata; sys_platform == "win32"', # for testing with celery
|
|
]
|
|
webdav = ["dvc-webdav==2.19.1"]
|
|
webhdfs = ["dvc-webhdfs==2.19"]
|
|
webhdfs_kerberos = ["dvc-webhdfs[kerberos]==2.19"]
|
|
[project.urls]
|
|
Documentation = "https://dvc.org/doc"
|
|
Issues = "https://github.com/iterative/dvc/issues"
|
|
Source = "https://github.com/iterative/dvc"
|
|
[project.scripts]
|
|
dvc = "dvc.cli:main"
|
|
[project.entry-points."fsspec.specs"]
|
|
dvc = "dvc.api:DVCFileSystem"
|
|
[project.entry-points."pytest11"]
|
|
dvc-testing = "dvc.testing.plugin"
|
|
|
|
[tool.setuptools]
|
|
license-files = ["LICENSE"]
|
|
|
|
[tool.setuptools.packages.find]
|
|
exclude = ["tests", "tests.*"]
|
|
namespaces = false
|
|
|
|
[tool.setuptools_scm]
|
|
write_to = "dvc/_dvc_version.py"
|
|
|
|
[tool.isort]
|
|
known_first_party = ["dvc", "dvc_data", "dvc_objects", "dvc_render", "dvc_task", "tests"]
|
|
profile = "black"
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "-ra --cov-config pyproject.toml --dist worksteal"
|
|
filterwarnings = [
|
|
"error::ResourceWarning",
|
|
"error::pytest.PytestUnraisableExceptionWarning",
|
|
"error::pytest_mock.PytestMockWarning",
|
|
# remove when aiobotocore supports botocore>=1.29.13
|
|
"ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning",
|
|
# also relates to botocore, but looks like it's not going to be fixed
|
|
# https://github.com/boto/botocore/issues/2744
|
|
"ignore:'urllib3.contrib.pyopenssl' module is deprecated:DeprecationWarning",
|
|
# ruamel.yaml: https://sourceforge.net/p/ruamel-yaml/tickets/452/
|
|
# google.cloud: https://github.com/googleapis/python-storage/issues/1000
|
|
# google.logging: https://github.com/googleapis/python-logging/issues/730
|
|
# Also happens with `zc.lockfile`.
|
|
"ignore:Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning",
|
|
# see https://github.com/celery/kombu/issues/1339
|
|
# and https://github.com/celery/celery/issues/7528
|
|
# drop when celery==5.3 && kombu==5.3 releases
|
|
"ignore:SelectableGroups dict interface is deprecated:DeprecationWarning",
|
|
# tpi imports pkg_resources
|
|
"ignore:pkg_resources is deprecated as an API:DeprecationWarning",
|
|
# see https://github.com/networkx/networkx/issues/5723.
|
|
"ignore:nx.nx_pydot.* depends on the pydot package, which has.*known issues and is not actively maintained:DeprecationWarning",
|
|
# remove when new version of pytest-cov gets released
|
|
# https://github.com/pytest-dev/pytest-cov/issues/557
|
|
"ignore:The --rsyncdir command line argument and rsyncdirs config variable are deprecated:DeprecationWarning",
|
|
]
|
|
log_level = "debug"
|
|
markers = [
|
|
"needs_internet: Might need network access for the tests",
|
|
"studio: Tests verifying contract between DVC and Studio",
|
|
"vscode: Tests verifying contract between DVC and VSCode plugin",
|
|
]
|
|
testpaths = ["tests"]
|
|
xfail_strict = true
|
|
|
|
[tool.coverage.run]
|
|
branch = true
|
|
source = ["dvc", "tests"]
|
|
|
|
[tool.coverage.paths]
|
|
source = ["dvc"]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
"if typing.TYPE_CHECKING:",
|
|
"@overload",
|
|
"pragma: no cover",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
]
|
|
show_missing = true
|
|
|
|
[tool.mypy]
|
|
check_untyped_defs = true
|
|
files = ["dvc"]
|
|
no_implicit_optional = true
|
|
pretty = true
|
|
show_column_numbers = true
|
|
show_error_codes = true
|
|
show_error_context = true
|
|
show_traceback = true
|
|
strict_equality = true
|
|
strict_concatenate = true
|
|
warn_no_return = true
|
|
warn_redundant_casts = true
|
|
warn_unreachable = true
|
|
warn_unused_configs = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
ignore_missing_imports = true
|
|
module = [
|
|
"celery.*",
|
|
"configobj.*",
|
|
"dpath.*",
|
|
"distro",
|
|
"dvc_http",
|
|
"dvc_render.*",
|
|
"dvc_ssh",
|
|
"dvc_studio_client.*",
|
|
"flatten_dict",
|
|
"fsspec.*",
|
|
"funcy.*", # https://github.com/Suor/funcy/issues/106,
|
|
"grandalf.*",
|
|
"ipdb",
|
|
"iterative_telemetry",
|
|
"kombu.*",
|
|
"networkx.*", # https://github.com/networkx/networkx/issues/3988
|
|
"pygtrie.*",
|
|
"pyinstrument",
|
|
"pyparsing",
|
|
"pytest_benchmark.*",
|
|
"pytest_docker.plugin",
|
|
"pytest_virtualenv.*",
|
|
"ruamel.*",
|
|
"ruamel.yaml.*",
|
|
"shortuuid",
|
|
"shtab",
|
|
"tpi.*",
|
|
"viztracer",
|
|
"voluptuous",
|
|
"yappi",
|
|
"zc.*",
|
|
]
|
|
|
|
[tool.codespell]
|
|
ignore-words-list = "ba,datas,fo,uptodate,cachable,falsy"
|
|
|
|
[tool.pylint.message_control]
|
|
disable = [
|
|
"cyclic-import", "design", "duplicate-code", "fixme", "format", "import-outside-toplevel", "invalid-name",
|
|
"missing-class-docstring", "missing-function-docstring", "missing-module-docstring", "multiple-imports",
|
|
"raise-missing-from", "refactoring", "spelling",
|
|
"ungrouped-imports", "unused-wildcard-import", "wrong-import-order", "wrong-import-position",
|
|
]
|
|
enable = ["c-extension-no-member", "no-else-return"]
|
|
|
|
[tool.pylint.typecheck]
|
|
generated-members = ["argparse.Namespace", "logger.trace", "logging.TRACE", "pytest.lazy_fixture", "sys.getwindowsversion"]
|
|
signature-mutators = ["funcy.decorators.decorator"]
|
|
|
|
[tool.pylint.variables]
|
|
dummy-variables-rgx = "_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)"
|
|
ignored-argument-names = "_.*|args|kwargs"
|
|
|
|
[tool.ruff]
|
|
# external flake8 codes that should be preserved
|
|
external = ["B301", "C901", "E302", "W601"]
|
|
ignore = ["N818", "S101", "PT004", "PT007", "PT019", "SIM105", "SIM108", "SIM110", "SIM117", "TRY003", "TRY200", "TRY300", "TRY301", "PLR2004", "PLW2901", "RUF005"]
|
|
select = ["F", "E", "W", "C90", "N", "UP", "YTT", "S", "BLE", "B", "A", "C4", "T10", "EXE", "ISC", "ICN", "G", "INP", "PIE", "T20", "PT", "Q", "RET501", "RET504", "SIM", "TID", "TCH", "ARG", "PGH", "PLC", "PLE", "PLR", "PLW", "TRY", "RUF"]
|
|
show-source = true
|
|
|
|
[tool.ruff.flake8-pytest-style]
|
|
fixture-parentheses = false
|
|
mark-parentheses = false
|
|
parametrize-names-type = "csv"
|
|
raises-extend-require-match-for = ["dvc.exceptions.DvcException", "dvc.scm.SCMError", "scmrepo.exceptions.SCMError"]
|
|
|
|
[tool.ruff.flake8-tidy-imports]
|
|
[tool.ruff.flake8-tidy-imports.banned-api]
|
|
"funcy.cached_property" = {msg = "use `from dvc.utils.objects import cached_property` instead."}
|
|
|
|
[tool.ruff.flake8-type-checking]
|
|
strict = true
|
|
|
|
[tool.ruff.flake8-unused-arguments]
|
|
ignore-variadic-names = true
|
|
|
|
[tool.ruff.isort]
|
|
known-first-party = ["dvc", "dvc_data", "dvc_objects", "dvc_render", "dvc_task", "tests"]
|
|
|
|
[tool.ruff.pep8-naming]
|
|
ignore-names = ["M", "SCM"]
|
|
|
|
[tool.ruff.per-file-ignores]
|
|
"dvc/commands/**" = ["N806"]
|
|
"dvc/testing/**" = ["ARG002"]
|
|
"dvc/testing/benchmarks/**" = ["ARG001"]
|
|
"scripts/**" = ["T201", "INP001", "TRY002"]
|
|
|
|
[tool.ruff.pylint]
|
|
max-args = 10
|
|
|
|
[tool.bandit]
|
|
exclude_dirs = ["tests", "scripts", "dvc/repo/experiments/utils.py"]
|
|
skips = ["B101"]
|