parameters: (p)
return_statement: return p[:0], p
docstring: Split a pathname into drive/UNC sharepoint and relative path specifiers.
      Returns a 2-tuple (drive_or_unc, path); either part may be empty.
  
      If you assign
          result = splitdrive(p)
      It is always true that:
          result[0] + result[1] == p
  
      If the path contained a drive letter, drive_or_unc will contain everything
      up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")
  
      If the path contained a UNC path, the drive_or_unc will contain the host name
      and share up to but not including the fourth directory separator character.
      e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")
  
      Paths cannot contain both a drive letter and a UNC path.
docstring_summary: Split a pathname into drive/UNC sharepoint and relative path specifiers.
      Returns a 2-tuple (drive_or_unc, path); either part may be empty.
docstring_tokens: Split a pathname into drive / UNC sharepoint and relative path specifiers . Returns a 2 - tuple ( drive_or_unc path ) ; either part may be empty .
function: def splitdrive(p):
      """Split a pathname into drive/UNC sharepoint and relative path specifiers.
      Returns a 2-tuple (drive_or_unc, path); either part may be empty.
  
      If you assign
          result = splitdrive(p)
      It is always true that:
          result[0] + result[1] == p
  
      If the path contained a drive letter, drive_or_unc will contain everything
      up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")
  
      If the path contained a UNC path, the drive_or_unc will contain the host name
      and share up to but not including the fourth directory separator character.
      e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")
  
      Paths cannot contain both a drive letter and a UNC path.
  
      """
      p = os.fspath(p)
      if len(p) >= 2:
          if isinstance(p, bytes):
              sep = b'\\'
              altsep = b'/'
              colon = b':'
          else:
              sep = '\\'
              altsep = '/'
              colon = ':'
          normp = p.replace(altsep, sep)
          if (normp[0:2] == sep*2) and (normp[2:3] != sep):
              # is a UNC path:
              # vvvvvvvvvvvvvvvvvvvv drive letter or UNC path
              # \\machine\mountpoint\directory\etc\...
              #           directory ^^^^^^^^^^^^^^^
              index = normp.find(sep, 2)
              if index == -1:
                  return p[:0], p
              index2 = normp.find(sep, index + 1)
              # a UNC path can't have two slashes in a row
              # (after the initial two)
              if index2 == index + 1:
                  return p[:0], p
              if index2 == -1:
                  index2 = len(p)
              return p[:index2], p[index2:]
          if normp[1:2] == colon:
              return p[:2], p[2:]
      return p[:0], p
function_tokens: def splitdrive ( p ) : p = os . fspath ( p ) if len ( p ) >= 2 : if isinstance ( p , bytes ) : sep = b'\\' altsep = b'/' colon = b':' else : sep = '\\' altsep = '/' colon = ':' normp = p . replace ( altsep , sep ) if ( normp [ 0 : 2 ] == sep * 2 ) and ( normp [ 2 : 3 ] != sep ) : # is a UNC path: # vvvvvvvvvvvvvvvvvvvv drive letter or UNC path # \\machine\mountpoint\directory\etc\... #           directory ^^^^^^^^^^^^^^^ index = normp . find ( sep , 2 ) if index == - 1 : return p [ : 0 ] , p index2 = normp . find ( sep , index + 1 ) # a UNC path can't have two slashes in a row # (after the initial two) if index2 == index + 1 : return p [ : 0 ] , p if index2 == - 1 : index2 = len ( p ) return p [ : index2 ] , p [ index2 : ] if normp [ 1 : 2 ] == colon : return p [ : 2 ] , p [ 2 : ] return p [ : 0 ] , p