code: def venv_metadata_extension(extraction_fce):
      
  
      def inner(self):
          data = extraction_fce(self)
          if virtualenv is None or not self.venv:
              logger.debug("Skipping virtualenv metadata extraction.")
              return data
  
          temp_dir = tempfile.mkdtemp()
          try:
              extractor = virtualenv.VirtualEnv(self.name, temp_dir,
                                                self.name_convertor,
                                                self.base_python_version)
              data.set_from(extractor.get_venv_data, update=True)
          except exc.VirtualenvFailException as e:
              logger.error("{}, skipping virtualenv metadata extraction.".format(
                  e))
          finally:
              shutil.rmtree(temp_dir)
          return data
      return inner
docs: Extracts specific metadata from virtualenv object, merges them with data
      from given extraction method.