1# Copyright 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5class Patcher(object):
6  def GetPatchedFiles(self, version=None):
7    '''Returns patched files as(added_files, deleted_files, modified_files)
8    from the patchset specified by |version|.
9    '''
10    raise NotImplementedError(self.__class__)
11
12  def GetVersion(self):
13    '''Returns patch version. Returns None when nothing is patched by the
14    patcher.
15    '''
16    raise NotImplementedError(self.__class__)
17
18  def Apply(self, paths, file_system, version=None):
19    '''Apply the patch to added/modified files. Returns Future with patched
20    data. Throws FileNotFoundError if |paths| contains deleted files.
21    '''
22    raise NotImplementedError(self.__class__)
23
24  def GetIdentity(self):
25    '''Returns a string that identifies this patch. Typically it would be the
26    codereview server's ID for this patch.
27    '''
28    raise NotImplementedError(self.__class__)
29