code: def gen_xml_files_from_docx(fp: BinaryIO) -> Iterator[str]:
      
      try:
          z = zipfile.ZipFile(fp)
          filelist = z.namelist()
          for filename in filelist:
              if DOCX_HEADER_FILE_REGEX.match(filename):
                  yield z.read(filename).decode("utf8")
          yield z.read(DOCX_DOC_FILE)
          for filename in filelist:
              if DOCX_FOOTER_FILE_REGEX.match(filename):
                  yield z.read(filename).decode("utf8")
      except zipfile.BadZipFile:
          # Clarify the error:
          raise zipfile.BadZipFile("File is not a zip file - encrypted DOCX?")
docs: Generate XML files (as strings) from a DOCX file.
  
      Args:
          fp: :class:`BinaryIO` object for reading the ``.DOCX`` file
  
      Yields:
          the string contents of each individual XML file within the ``.DOCX``
          file
  
      Raises:
          zipfile.BadZipFile: if the zip is unreadable (encrypted?)