<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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,))