code: def parse(self, fp, headersonly=False):
          
          fp = TextIOWrapper(fp, encoding='ascii', errors='surrogateescape')
          with fp:
              return self.parser.parse(fp, headersonly)
docs: Create a message structure from the data in a binary file.
  
          Reads all the data from the file and returns the root of the message
          structure.  Optional headersonly is a flag specifying whether to stop
          parsing after reading the headers or not.  The default is False,
          meaning it parses the entire contents of the file.