mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-05 23:09:32 +01:00
remote: don't use PathInfo.from_posix (#3637)
Using it to load dirs takes around 50 sec compared to 0.4 with simple `replace()`. Path objects are great, but not when you need lots of them. Related to #3635
This commit is contained in:
@@ -33,10 +33,6 @@ class PathInfo(pathlib.PurePath, _BasePath):
|
||||
cls = WindowsPathInfo if os.name == "nt" else PosixPathInfo
|
||||
return cls._from_parts(args)
|
||||
|
||||
@classmethod
|
||||
def from_posix(cls, s):
|
||||
return cls(PosixPathInfo(s))
|
||||
|
||||
def as_posix(self):
|
||||
f = self._flavour
|
||||
# Unlike original implementation [1] that uses `str()` we actually need
|
||||
|
||||
+8
-5
@@ -21,7 +21,7 @@ from dvc.exceptions import (
|
||||
RemoteCacheRequiredError,
|
||||
)
|
||||
from dvc.ignore import DvcIgnore
|
||||
from dvc.path_info import PathInfo, URLInfo
|
||||
from dvc.path_info import PathInfo, URLInfo, WindowsPathInfo
|
||||
from dvc.progress import Tqdm
|
||||
from dvc.remote.slow_link_detection import slow_link_guard
|
||||
from dvc.state import StateNoop
|
||||
@@ -285,10 +285,13 @@ class RemoteBASE(object):
|
||||
)
|
||||
return []
|
||||
|
||||
for info in d:
|
||||
# NOTE: here is a BUG, see comment to .as_posix() below
|
||||
relative_path = PathInfo.from_posix(info[self.PARAM_RELPATH])
|
||||
info[self.PARAM_RELPATH] = relative_path.fspath
|
||||
if self.path_cls == WindowsPathInfo:
|
||||
# only need to convert it for Windows
|
||||
for info in d:
|
||||
# NOTE: here is a BUG, see comment to .as_posix() below
|
||||
info[self.PARAM_RELPATH] = info[self.PARAM_RELPATH].replace(
|
||||
"/", self.path_cls.sep
|
||||
)
|
||||
|
||||
return d
|
||||
|
||||
|
||||
Reference in New Issue
Block a user