code: def match(path, glob):
      
      path_len = len(path)
      glob_len = len(glob)
  
      ss = -1
      ss_glob = glob
      if '**' in glob:
          ss = glob.index('**')
          if '**' in glob[ss + 1:]:
              raise dpath.exceptions.InvalidGlob("Invalid glob. Only one '**' is permitted per glob.")
  
          if path_len >= glob_len:
              # Just right or more stars.
              more_stars = ['*'] * (path_len - glob_len + 1)
              ss_glob = glob[:ss] + more_stars + glob[ss + 1:]
          elif path_len == glob_len - 1:
              # Need one less star.
              ss_glob = glob[:ss] + glob[ss + 1:]
  
      if path_len == len(ss_glob):
          # Python 3 support
          if PY3:
              return all(map(fnmatch.fnmatch, list(map(str, paths_only(path))), list(map(str, ss_glob))))
          else: # Default to Python 2
              return all(map(fnmatch.fnmatch, map(str, paths_only(path)), map(str, ss_glob)))
  
      return False
docs: Match the path with the glob.
  
      Arguments:
  
      path -- A list of keys representing the path.
      glob -- A list of globs to match against the path.