docs: def open(self, url, mode='r', stdio=True):
          """
          opens a URL, no scheme is assumed to be a file
          no path will use stdin or stdout depending on mode, unless stdio is False
          """
          # doesn't need to use config, because the object is already created
          res = urlsplit(url)
  
          if not res.scheme:
              if not res.path or res.path == '-':
                  if not stdio:
                      raise IOError("unable to open '%s'" % (url,))
  
                  if 'w' in mode:
                      return sys.stdout
                  return sys.stdin
  
              return open(res.path, mode)
  
          if res.scheme in ('https', 'http', 'ftp'):
              req = requests.get(res.geturl(), stream=True)
              # TODO error check
              return req.raw
              #return urllib2.urlopen(res.geturl())
  
          raise IOError("unable to open '%s'" % (url,))