dvc/repo/pull.py
from dvc.exceptions import CheckoutError
from dvc.log import logger
from dvc.repo import locked
from dvc.utils import glob_targets
logger = logger.getChild(__name__)
@locked
def pull( # noqa: PLR0913
self,
targets=None,
jobs=None,
remote=None,
all_branches=False,
with_deps=False,
all_tags=False,
force=False,
recursive=False,
all_commits=False,
run_cache=False,
glob=False,
allow_missing=False,
):
if isinstance(targets, str):
targets = [targets]
expanded_targets = glob_targets(targets, glob=glob)
processed_files_count = self.fetch(
expanded_targets,
jobs,
remote=remote,
all_branches=all_branches,
all_tags=all_tags,
all_commits=all_commits,
with_deps=with_deps,
recursive=recursive,
run_cache=run_cache,
)
try:
stats = self.checkout(
targets=expanded_targets,
with_deps=with_deps,
force=force,
recursive=recursive,
allow_missing=allow_missing,
)
except CheckoutError as exc:
exc.stats["fetched"] = processed_files_count
raise
stats["fetched"] = processed_files_count
return stats