%PDF- %PDF-
| Direktori : /lib/python3/dist-packages/fs/ |
| Current File : //lib/python3/dist-packages/fs/_url_tools.py |
import re
import six
import platform
import typing
if typing.TYPE_CHECKING:
from typing import Text
_WINDOWS_PLATFORM = platform.system() == "Windows"
def url_quote(path_snippet):
# type: (Text) -> Text
"""
On Windows, it will separate drive letter and quote windows
path alone. No magic on Unix-alie path, just pythonic
`pathname2url`
Arguments:
path_snippet: a file path, relative or absolute.
"""
if _WINDOWS_PLATFORM and _has_drive_letter(path_snippet):
drive_letter, path = path_snippet.split(":", 1)
if six.PY2:
path = path.encode("utf-8")
path = six.moves.urllib.request.pathname2url(path)
path_snippet = "{}:{}".format(drive_letter, path)
else:
if six.PY2:
path_snippet = path_snippet.encode("utf-8")
path_snippet = six.moves.urllib.request.pathname2url(path_snippet)
return path_snippet
def _has_drive_letter(path_snippet):
# type: (Text) -> bool
"""
The following path will get True
D:/Data
C:\\My Dcouments\\ test
And will get False
/tmp/abc:test
Arguments:
path_snippet: a file path, relative or absolute.
"""
windows_drive_pattern = ".:[/\\\\].*$"
return re.match(windows_drive_pattern, path_snippet) is not None