~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

Functional get_record_stream interface tests covering full interface.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
from bzrlib.textmerge import TextMerge
42
42
 
43
43
 
 
44
class ContentFactory(object):
 
45
    """Abstract interface for insertion and retrieval from a VersionedFile.
 
46
    
 
47
    :ivar sha1: None, or the sha1 of the content fulltext.
 
48
    :ivar storage_kind: The native storage kind of this factory. One of
 
49
        'mpdiff', 'knit-annotated-ft', 'knit-annotated-delta', 'knit-ft',
 
50
        'knit-delta', 'fulltext', 'knit-annotated-ft-gz',
 
51
        'knit-annotated-delta-gz', 'knit-ft-gz', 'knit-delta-gz'.
 
52
    :ivar key: The key of this content. Each key is a tuple with a single
 
53
        string in it.
 
54
    :ivar parents: A tuple of parent keys for self.key. If the object has
 
55
        no parent information, None (as opposed to () for an empty list of
 
56
        parents).
 
57
        """
 
58
 
 
59
    def __init__(self):
 
60
        """Create a ContentFactory."""
 
61
        self.sha1 = None
 
62
        self.storage_kind = None
 
63
        self.key = None
 
64
        self.parents = None
 
65
 
 
66
 
44
67
class VersionedFile(object):
45
68
    """Versioned text file storage.
46
69
    
63
86
        """Copy this versioned file to name on transport."""
64
87
        raise NotImplementedError(self.copy_to)
65
88
 
66
 
    def versions(self):
67
 
        """Return a unsorted list of versions."""
68
 
        raise NotImplementedError(self.versions)
 
89
    def get_record_stream(self, versions, ordering, include_delta_closure):
 
90
        """Get a stream of records for versions.
 
91
 
 
92
        :param versions: The versions to include. Each version is a tuple
 
93
            (version,).
 
94
        :param ordering: Either 'unordered' or 'topological'. A topologically
 
95
            sorted stream has compression parents strictly before their
 
96
            children.
 
97
        :param include_delta_closure: If True then the closure across any
 
98
            compression parents will be included (in the opaque data).
 
99
        :return: An iterator of ContentFactory objects, each of which is only
 
100
            valid until the iterator is advanced.
 
101
        """
 
102
        raise NotImplementedError(self.get_record_stream)
69
103
 
70
104
    @deprecated_method(one_four)
71
105
    def has_ghost(self, version_id):