code: def pull_release(self, name, version, destfolder=".", force=False):
          
  
          unique_id = name.replace('/', '_')
  
          depdict = {
              'name': name,
              'unique_id': unique_id,
              'required_version': version,
              'required_version_string': str(version)
          }
  
          destdir = os.path.join(destfolder, unique_id)
          if os.path.exists(destdir):
              if not force:
                  raise ExternalError("Output directory exists and force was not specified, aborting",
                                      output_directory=destdir)
  
              shutil.rmtree(destdir)
  
          result = self.update_dependency(None, depdict, destdir)
          if result != "installed":
              raise ArgumentError("Could not find component to satisfy name/version combination")
docs: Download and unpack a released iotile component by name and version range
  
          If the folder that would be created already exists, this command fails unless
          you pass force=True
  
          Args:
              name (string): The name of the component to download
              version (SemanticVersionRange): The valid versions of the component to fetch
              destfolder (string): The folder into which to unpack the result, defaults to
                  the current working directory
              force (bool): Forcibly overwrite whatever is currently in the folder that would
                  be fetched.
  
          Raises:
              ExternalError: If the destination folder exists and force is not specified
              ArgumentError: If the specified component could not be found with the required version