# Buggy code
def load(repo, fname):
    fname, tag = Stage._get_path_tag(fname)

    # it raises the proper exceptions by priority:
    # 1. when the file doesn't exists
    # 2. filename is not a DVC-file
    # 3. path doesn't represent a regular file
    Stage._check_file_exists(repo, fname)
    Stage._check_dvc_filename(fname)
    Stage._check_isfile(repo, fname)

    with repo.tree.open(fname) as fd:
        d = load_stage_fd(fd, fname)
    # Making a deepcopy since the original structure
    # looses keys in deps and outs load
    state = copy.deepcopy(d)

    Stage.validate(d, fname=os.path.relpath(fname))
    path = os.path.abspath(fname)

    stage = Stage(
        repo=repo,
        path=path,
        wdir=os.path.abspath(
            os.path.join(os.path.dirname(path), d.get(Stage.PARAM_WDIR, "."))
        ),
        cmd=d.get(Stage.PARAM_CMD),
        md5=d.get(Stage.PARAM_MD5),
        locked=d.get(Stage.PARAM_LOCKED, False),
        tag=tag,
        state=state,
    )

    stage.deps = dependency.loadd_from(stage, d.get(Stage.PARAM_DEPS, []))
    stage.outs = output.loadd_from(stage, d.get(Stage.PARAM_OUTS, []))

    return stage


# Traceback (ValueError)
ERROR: failed to pull data from the cloud - path is on mount 'F:', start on mount 'C:'
Traceback (most recent call last):
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\command\data_sync.py", line 46, in
do_run recursive=self.args.recursive,
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\repo\pull.py", line 24, in pull
recursive=recursive,
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\repo\fetch.py", line 27, in fetch
used, jobs, remote=remote, show_checksums=show_checksums
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\data_cloud.py", line 144, in pull
show_checksums=show_checksums,
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 493, in pull
download=True,
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 459, in _process
download=download,
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 358, in status
local_exists = self.cache_exists(md5s)
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 232, in cache_exists
return list(filter(lambda md5: not self.changed_cache_file(md5), md5s))
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 232, in <lambda>
return list(filter(lambda md5: not self.changed_cache_file(md5), md5s))
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\base.py", line 518, in changed_cache_file
actual = self.get_checksum(cache_info)
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\base.py", line 275, in get_checksum
checksum = self.get_file_checksum(path_info)
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\remote\local\__init__.py", line 208, in get_file_checksum
return file_md5(path_info.path)[0]
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\site-packages\dvc\utils\__init__.py", line 48, in file_md5                      logger.info(msg.format(os.path.relpath(fname)))
File "c:\users\srg\appdata\local\continuum\anaconda3\envs\tf-keras\lib\ntpath.py", line 584, in relpath
path_drive, start_drive))                                                                                                                        ValueError: path is on mount 'F:', start on mount 'C:'

# Fixed code
def load(repo, fname):
    fname, tag = Stage._get_path_tag(fname)

    # it raises the proper exceptions by priority:
    # 1. when the file doesn't exists
    # 2. filename is not a DVC-file
    # 3. path doesn't represent a regular file
    Stage._check_file_exists(repo, fname)
    Stage._check_dvc_filename(fname)
    Stage._check_isfile(repo, fname)

    with repo.tree.open(fname) as fd:
        d = load_stage_fd(fd, fname)
    # Making a deepcopy since the original structure
    # looses keys in deps and outs load
    state = copy.deepcopy(d)

    Stage.validate(d, fname=relpath(fname))
    path = os.path.abspath(fname)

    stage = Stage(
        repo=repo,
        path=path,
        wdir=os.path.abspath(
            os.path.join(os.path.dirname(path), d.get(Stage.PARAM_WDIR, "."))
        ),
        cmd=d.get(Stage.PARAM_CMD),
        md5=d.get(Stage.PARAM_MD5),
        locked=d.get(Stage.PARAM_LOCKED, False),
        tag=tag,
        state=state,
    )

    stage.deps = dependency.loadd_from(stage, d.get(Stage.PARAM_DEPS, []))
    stage.outs = output.loadd_from(stage, d.get(Stage.PARAM_OUTS, []))

    return stage