@log_calls
  def untrack(self, scope, untrack_path_list, mode, recursive=False):
    if Mode.PARTIAL not in [self.get_scope_mode(scope), mode]:
      raise InvalidOperation("scope %s is not in %s tracking mode; cannot untrack files" % (scope, Mode.PARTIAL))
    # make sure this scope is in partial tracking mode first
    self.update_scope_mode(scope, Mode.PARTIAL)
    path_candidates = []
    for local_path in self.checkout_state.fingerprints.fingerprints.iterkeys():
      path = strip_prefix(scope + '/', local_path)
      if path is not None:
        path_candidates.append(path)
    for path in expand_wildcards(untrack_path_list, path_candidates, recursive=recursive):
      with self._yield_fingerprint(scope, path) as (fp, local_path):
        if fp is None or fp.state == FileState.Untracked:
          log.warn("Warning: scope %s path %s is already %s", scope, path, FileState.Untracked)
        else:
          fp.state = FileState.Untracked
    # write back trackinglist status
    self._write_checkout_state()
dataset/ETHPy150Open bloomreach/zinc/zinc.py/WorkingDir.untrack/original