diff --git a/dvc/system.py b/dvc/system.py index 77f622cbf..4750bb30e 100644 --- a/dvc/system.py +++ b/dvc/system.py @@ -138,15 +138,16 @@ class System(object): import ctypes from ctypes import c_void_p, c_wchar_p, Structure, WinError, POINTER from ctypes.wintypes import DWORD, HANDLE, BOOL + from win32file import ( + FILE_FLAG_BACKUP_SEMANTICS, + FILE_FLAG_OPEN_REPARSE_POINT, + FILE_SHARE_READ, + OPEN_EXISTING, + ) - # NOTE: use this flag to open symlink itself and not the target - # See https://docs.microsoft.com/en-us/windows/desktop/api/ + # NOTE: use FILE_FLAG_OPEN_REPARSE_POINT to open symlink itself and not + # the target See https://docs.microsoft.com/en-us/windows/desktop/api/ # fileapi/nf-fileapi-createfilew#symbolic-link-behavior - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 - - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 - FILE_SHARE_READ = 0x00000001 - OPEN_EXISTING = 3 class FILETIME(Structure): _fields_ = [("dwLowDateTime", DWORD), ("dwHighDateTime", DWORD)] @@ -237,8 +238,7 @@ class System(object): from ctypes.wintypes import DWORD, HANDLE # https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitforsingleobject - WAIT_OBJECT_0 = 0 - WAIT_TIMEOUT = 0x00000102 + from win32event import WAIT_OBJECT_0, WAIT_TIMEOUT func = ctypes.windll.kernel32.WaitForSingleObject func.argtypes = [HANDLE, DWORD] @@ -272,7 +272,7 @@ class System(object): # https://docs.microsoft.com/en-us/windows/desktop/fileio/ # file-attribute-constants - FILE_ATTRIBUTE_REPARSE_POINT = 0x400 + from winnt import FILE_ATTRIBUTE_REPARSE_POINT if os.path.lexists(path): info = System.getdirinfo(path)