parameters: (self, url, data=None)
return_statement: return addinfourl(f, headers, url)
docstring: Use "data" URL.
docstring_summary: Use "data" URL.
docstring_tokens: Use data URL .
function: def open_data(self, url, data=None):
          """Use "data" URL."""
          if not isinstance(url, str):
              raise URLError('data error: proxy support for data protocol currently not implemented')
          # ignore POSTed data
          #
          # syntax of data URLs:
          # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
          # mediatype := [ type "/" subtype ] *( ";" parameter )
          # data      := *urlchar
          # parameter := attribute "=" value
          try:
              [type, data] = url.split(',', 1)
          except ValueError:
              raise OSError('data error', 'bad data URL')
          if not type:
              type = 'text/plain;charset=US-ASCII'
          semi = type.rfind(';')
          if semi >= 0 and '=' not in type[semi:]:
              encoding = type[semi+1:]
              type = type[:semi]
          else:
              encoding = ''
          msg = []
          msg.append('Date: %s'%time.strftime('%a, %d %b %Y %H:%M:%S GMT',
                                              time.gmtime(time.time())))
          msg.append('Content-type: %s' % type)
          if encoding == 'base64':
              # XXX is this encoding/decoding ok?
              data = base64.decodebytes(data.encode('ascii')).decode('latin-1')
          else:
              data = unquote(data)
          msg.append('Content-Length: %d' % len(data))
          msg.append('')
          msg.append(data)
          msg = '\n'.join(msg)
          headers = email.message_from_string(msg)
          f = io.StringIO(msg)
          #f.fileno = None     # needed for addinfourl
          return addinfourl(f, headers, url)
function_tokens: def open_data ( self , url , data = None ) : if not isinstance ( url , str ) : raise URLError ( 'data error: proxy support for data protocol currently not implemented' ) # ignore POSTed data # # syntax of data URLs: # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data # mediatype := [ type "/" subtype ] *( ";" parameter ) # data      := *urlchar # parameter := attribute "=" value try : [ type , data ] = url . split ( ',' , 1 ) except ValueError : raise OSError ( 'data error' , 'bad data URL' ) if not type : type = 'text/plain;charset=US-ASCII' semi = type . rfind ( ';' ) if semi >= 0 and '=' not in type [ semi : ] : encoding = type [ semi + 1 : ] type = type [ : semi ] else : encoding = '' msg = [ ] msg . append ( 'Date: %s' % time . strftime ( '%a, %d %b %Y %H:%M:%S GMT' , time . gmtime ( time . time ( ) ) ) ) msg . append ( 'Content-type: %s' % type ) if encoding == 'base64' : # XXX is this encoding/decoding ok? data = base64 . decodebytes ( data . encode ( 'ascii' ) ) . decode ( 'latin-1' ) else : data = unquote ( data ) msg . append ( 'Content-Length: %d' % len ( data ) ) msg . append ( '' ) msg . append ( data ) msg = '\n' . join ( msg ) headers = email . message_from_string ( msg ) f = io . StringIO ( msg ) #f.fileno = None     # needed for addinfourl return addinfourl ( f , headers , url )