Current Dir: /snap/core22/2955/usr/lib/python3.10/

[DIR]  asyncio [ delete | rename ]
[DIR]  collections [ delete | rename ]
[DIR]  concurrent [ delete | rename ]
[DIR]  ctypes [ delete | rename ]
[DIR]  curses [ delete | rename ]
[DIR]  dbm [ delete | rename ]
[DIR]  distutils [ delete | rename ]
[DIR]  email [ delete | rename ]
[DIR]  encodings [ delete | rename ]
[DIR]  html [ delete | rename ]
[DIR]  http [ delete | rename ]
[DIR]  importlib [ delete | rename ]
[DIR]  json [ delete | rename ]
[DIR]  lib-dynload [ delete | rename ]
[DIR]  lib2to3 [ delete | rename ]
[DIR]  logging [ delete | rename ]
[DIR]  multiprocessing [ delete | rename ]
[DIR]  pydoc_data [ delete | rename ]
[DIR]  sqlite3 [ delete | rename ]
[DIR]  test [ delete | rename ]
[DIR]  unittest [ delete | rename ]
[DIR]  urllib [ delete | rename ]
[DIR]  venv [ delete | rename ]
[DIR]  wsgiref [ delete | rename ]
[DIR]  xml [ delete | rename ]
[DIR]  xmlrpc [ delete | rename ]
[DIR]  zoneinfo [ delete | rename ]
[DIR]  __pycache__ [ delete | rename ]
[FILE] abc.py [ edit | delete | rename ]
[FILE] aifc.py [ edit | delete | rename ]
[FILE] antigravity.py [ edit | delete | rename ]
[FILE] argparse.py [ edit | delete | rename ]
[FILE] ast.py [ edit | delete | rename ]
[FILE] asynchat.py [ edit | delete | rename ]
[FILE] asyncore.py [ edit | delete | rename ]
[FILE] base64.py [ edit | delete | rename ]
[FILE] bdb.py [ edit | delete | rename ]
[FILE] binhex.py [ edit | delete | rename ]
[FILE] bisect.py [ edit | delete | rename ]
[FILE] bz2.py [ edit | delete | rename ]
[FILE] calendar.py [ edit | delete | rename ]
[FILE] cgi.py [ edit | delete | rename ]
[FILE] cgitb.py [ edit | delete | rename ]
[FILE] chunk.py [ edit | delete | rename ]
[FILE] cmd.py [ edit | delete | rename ]
[FILE] code.py [ edit | delete | rename ]
[FILE] codecs.py [ edit | delete | rename ]
[FILE] codeop.py [ edit | delete | rename ]
[FILE] colorsys.py [ edit | delete | rename ]
[FILE] compileall.py [ edit | delete | rename ]
[FILE] configparser.py [ edit | delete | rename ]
[FILE] contextlib.py [ edit | delete | rename ]
[FILE] contextvars.py [ edit | delete | rename ]
[FILE] copy.py [ edit | delete | rename ]
[FILE] copyreg.py [ edit | delete | rename ]
[FILE] cProfile.py [ edit | delete | rename ]
[FILE] crypt.py [ edit | delete | rename ]
[FILE] csv.py [ edit | delete | rename ]
[FILE] dataclasses.py [ edit | delete | rename ]
[FILE] datetime.py [ edit | delete | rename ]
[FILE] decimal.py [ edit | delete | rename ]
[FILE] difflib.py [ edit | delete | rename ]
[FILE] dis.py [ edit | delete | rename ]
[FILE] doctest.py [ edit | delete | rename ]
[FILE] enum.py [ edit | delete | rename ]
[FILE] filecmp.py [ edit | delete | rename ]
[FILE] fileinput.py [ edit | delete | rename ]
[FILE] fnmatch.py [ edit | delete | rename ]
[FILE] fractions.py [ edit | delete | rename ]
[FILE] ftplib.py [ edit | delete | rename ]
[FILE] functools.py [ edit | delete | rename ]
[FILE] genericpath.py [ edit | delete | rename ]
[FILE] getopt.py [ edit | delete | rename ]
[FILE] getpass.py [ edit | delete | rename ]
[FILE] gettext.py [ edit | delete | rename ]
[FILE] glob.py [ edit | delete | rename ]
[FILE] graphlib.py [ edit | delete | rename ]
[FILE] gzip.py [ edit | delete | rename ]
[FILE] hashlib.py [ edit | delete | rename ]
[FILE] heapq.py [ edit | delete | rename ]
[FILE] hmac.py [ edit | delete | rename ]
[FILE] imaplib.py [ edit | delete | rename ]
[FILE] imghdr.py [ edit | delete | rename ]
[FILE] imp.py [ edit | delete | rename ]
[FILE] inspect.py [ edit | delete | rename ]
[FILE] io.py [ edit | delete | rename ]
[FILE] ipaddress.py [ edit | delete | rename ]
[FILE] keyword.py [ edit | delete | rename ]
[FILE] LICENSE.txt [ edit | delete | rename ]
[FILE] linecache.py [ edit | delete | rename ]
[FILE] locale.py [ edit | delete | rename ]
[FILE] lzma.py [ edit | delete | rename ]
[FILE] mailbox.py [ edit | delete | rename ]
[FILE] mailcap.py [ edit | delete | rename ]
[FILE] mimetypes.py [ edit | delete | rename ]
[FILE] modulefinder.py [ edit | delete | rename ]
[FILE] netrc.py [ edit | delete | rename ]
[FILE] nntplib.py [ edit | delete | rename ]
[FILE] ntpath.py [ edit | delete | rename ]
[FILE] nturl2path.py [ edit | delete | rename ]
[FILE] numbers.py [ edit | delete | rename ]
[FILE] opcode.py [ edit | delete | rename ]
[FILE] operator.py [ edit | delete | rename ]
[FILE] optparse.py [ edit | delete | rename ]
[FILE] os.py [ edit | delete | rename ]
[FILE] pathlib.py [ edit | delete | rename ]
[FILE] pdb.py [ edit | delete | rename ]
[FILE] pickle.py [ edit | delete | rename ]
[FILE] pickletools.py [ edit | delete | rename ]
[FILE] pipes.py [ edit | delete | rename ]
[FILE] pkgutil.py [ edit | delete | rename ]
[FILE] platform.py [ edit | delete | rename ]
[FILE] plistlib.py [ edit | delete | rename ]
[FILE] poplib.py [ edit | delete | rename ]
[FILE] posixpath.py [ edit | delete | rename ]
[FILE] pprint.py [ edit | delete | rename ]
[FILE] profile.py [ edit | delete | rename ]
[FILE] pstats.py [ edit | delete | rename ]
[FILE] pty.py [ edit | delete | rename ]
[FILE] pyclbr.py [ edit | delete | rename ]
[FILE] pydoc.py [ edit | delete | rename ]
[FILE] py_compile.py [ edit | delete | rename ]
[FILE] queue.py [ edit | delete | rename ]
[FILE] quopri.py [ edit | delete | rename ]
[FILE] random.py [ edit | delete | rename ]
[FILE] re.py [ edit | delete | rename ]
[FILE] reprlib.py [ edit | delete | rename ]
[FILE] rlcompleter.py [ edit | delete | rename ]
[FILE] runpy.py [ edit | delete | rename ]
[FILE] sched.py [ edit | delete | rename ]
[FILE] secrets.py [ edit | delete | rename ]
[FILE] selectors.py [ edit | delete | rename ]
[FILE] shelve.py [ edit | delete | rename ]
[FILE] shlex.py [ edit | delete | rename ]
[FILE] shutil.py [ edit | delete | rename ]
[FILE] signal.py [ edit | delete | rename ]
[FILE] site.py [ edit | delete | rename ]
[FILE] sitecustomize.py [ edit | delete | rename ]
[FILE] smtpd.py [ edit | delete | rename ]
[FILE] smtplib.py [ edit | delete | rename ]
[FILE] sndhdr.py [ edit | delete | rename ]
[FILE] socket.py [ edit | delete | rename ]
[FILE] socketserver.py [ edit | delete | rename ]
[FILE] sre_compile.py [ edit | delete | rename ]
[FILE] sre_constants.py [ edit | delete | rename ]
[FILE] sre_parse.py [ edit | delete | rename ]
[FILE] ssl.py [ edit | delete | rename ]
[FILE] stat.py [ edit | delete | rename ]
[FILE] statistics.py [ edit | delete | rename ]
[FILE] string.py [ edit | delete | rename ]
[FILE] stringprep.py [ edit | delete | rename ]
[FILE] struct.py [ edit | delete | rename ]
[FILE] subprocess.py [ edit | delete | rename ]
[FILE] sunau.py [ edit | delete | rename ]
[FILE] symtable.py [ edit | delete | rename ]
[FILE] sysconfig.py [ edit | delete | rename ]
[FILE] tabnanny.py [ edit | delete | rename ]
[FILE] tarfile.py [ edit | delete | rename ]
[FILE] telnetlib.py [ edit | delete | rename ]
[FILE] tempfile.py [ edit | delete | rename ]
[FILE] textwrap.py [ edit | delete | rename ]
[FILE] this.py [ edit | delete | rename ]
[FILE] threading.py [ edit | delete | rename ]
[FILE] timeit.py [ edit | delete | rename ]
[FILE] token.py [ edit | delete | rename ]
[FILE] tokenize.py [ edit | delete | rename ]
[FILE] trace.py [ edit | delete | rename ]
[FILE] traceback.py [ edit | delete | rename ]
[FILE] tracemalloc.py [ edit | delete | rename ]
[FILE] tty.py [ edit | delete | rename ]
[FILE] turtle.py [ edit | delete | rename ]
[FILE] types.py [ edit | delete | rename ]
[FILE] typing.py [ edit | delete | rename ]
[FILE] uu.py [ edit | delete | rename ]
[FILE] uuid.py [ edit | delete | rename ]
[FILE] warnings.py [ edit | delete | rename ]
[FILE] wave.py [ edit | delete | rename ]
[FILE] weakref.py [ edit | delete | rename ]
[FILE] webbrowser.py [ edit | delete | rename ]
[FILE] xdrlib.py [ edit | delete | rename ]
[FILE] zipapp.py [ edit | delete | rename ]
[FILE] zipfile.py [ edit | delete | rename ]
[FILE] zipimport.py [ edit | delete | rename ]
[FILE] _aix_support.py [ edit | delete | rename ]
[FILE] _bootsubprocess.py [ edit | delete | rename ]
[FILE] _collections_abc.py [ edit | delete | rename ]
[FILE] _compat_pickle.py [ edit | delete | rename ]
[FILE] _compression.py [ edit | delete | rename ]
[FILE] _distutils_system_mod.py [ edit | delete | rename ]
[FILE] _markupbase.py [ edit | delete | rename ]
[FILE] _osx_support.py [ edit | delete | rename ]
[FILE] _pydecimal.py [ edit | delete | rename ]
[FILE] _pyio.py [ edit | delete | rename ]
[FILE] _py_abc.py [ edit | delete | rename ]
[FILE] _sitebuiltins.py [ edit | delete | rename ]
[FILE] _strptime.py [ edit | delete | rename ]
[FILE] _sysconfigdata__linux_x86_64-linux-gnu.py [ edit | delete | rename ]
[FILE] _sysconfigdata__x86_64-linux-gnu.py [ edit | delete | rename ]
[FILE] _threading_local.py [ edit | delete | rename ]
[FILE] _weakrefset.py [ edit | delete | rename ]
[FILE] __future__.py [ edit | delete | rename ]
[FILE] __phello__.foo.py [ edit | delete | rename ]

Viewing: /snap/core22/2955/usr/lib/python3.10/nturl2path.py

"""Convert a NT pathname to a file URL and vice versa.

This module only exists to provide OS-specific code
for urllib.requests, thus do not use directly.
"""
# Testing is done through test_urllib.

def url2pathname(url):
    """OS-specific conversion from a relative URL of the 'file' scheme
    to a file system path; not recommended for general use."""
    # e.g.
    #   ///C|/foo/bar/spam.foo
    # and
    #   ///C:/foo/bar/spam.foo
    # become
    #   C:\foo\bar\spam.foo
    import string, urllib.parse
    # Windows itself uses ":" even in URLs.
    url = url.replace(':', '|')
    if not '|' in url:
        # No drive specifier, just convert slashes
        if url[:4] == '////':
            # path is something like ////host/path/on/remote/host
            # convert this to \\host\path\on\remote\host
            # (notice halving of slashes at the start of the path)
            url = url[2:]
        components = url.split('/')
        # make sure not to convert quoted slashes :-)
        return urllib.parse.unquote('\\'.join(components))
    comp = url.split('|')
    if len(comp) != 2 or comp[0][-1] not in string.ascii_letters:
        error = 'Bad URL: ' + url
        raise OSError(error)
    drive = comp[0][-1].upper()
    components = comp[1].split('/')
    path = drive + ':'
    for comp in components:
        if comp:
            path = path + '\\' + urllib.parse.unquote(comp)
    # Issue #11474 - handing url such as |c/|
    if path.endswith(':') and url.endswith('/'):
        path += '\\'
    return path

def pathname2url(p):
    """OS-specific conversion from a file system path to a relative URL
    of the 'file' scheme; not recommended for general use."""
    # e.g.
    #   C:\foo\bar\spam.foo
    # becomes
    #   ///C:/foo/bar/spam.foo
    import urllib.parse
    # First, clean up some special forms. We are going to sacrifice
    # the additional information anyway
    if p[:4] == '\\\\?\\':
        p = p[4:]
        if p[:4].upper() == 'UNC\\':
            p = '\\' + p[4:]
        elif p[1:2] != ':':
            raise OSError('Bad path: ' + p)
    if not ':' in p:
        # No drive specifier, just convert slashes and quote the name
        if p[:2] == '\\\\':
        # path is something like \\host\path\on\remote\host
        # convert this to ////host/path/on/remote/host
        # (notice doubling of slashes at the start of the path)
            p = '\\\\' + p
        components = p.split('\\')
        return urllib.parse.quote('/'.join(components))
    comp = p.split(':', maxsplit=2)
    if len(comp) != 2 or len(comp[0]) > 1:
        error = 'Bad path: ' + p
        raise OSError(error)

    drive = urllib.parse.quote(comp[0].upper())
    components = comp[1].split('\\')
    path = '///' + drive + ':'
    for comp in components:
        if comp:
            path = path + '/' + urllib.parse.quote(comp)
    return path

Upload File: