code: def prepare_metadata(self):
          # type: () -> None
          
          assert self.source_dir
  
          with indent_log():
              if self.use_pep517:
                  self.prepare_pep517_metadata()
              else:
                  self.run_egg_info()
  
          if not self.req:
              if isinstance(parse_version(self.metadata["Version"]), Version):
                  op = "=="
              else:
                  op = "==="
              self.req = Requirement(
                  "".join([
                      self.metadata["Name"],
                      op,
                      self.metadata["Version"],
                  ])
              )
              self._correct_build_location()
          else:
              metadata_name = canonicalize_name(self.metadata["Name"])
              if canonicalize_name(self.req.name) != metadata_name:
                  logger.warning(
                      'Generating metadata for package %s '
                      'produced metadata for project name %s. Fix your '
                      '#egg=%s fragments.',
                      self.name, metadata_name, self.name
                  )
                  self.req = Requirement(metadata_name)
docs: Ensure that project metadata is available.
  
          Under PEP 517, call the backend hook to prepare the metadata.
          Under legacy processing, call setup.py egg-info.