Mercurial > hg
comparison mercurial/smartset.py @ 31019:74f77f1c2215
smartset: add some doctests
Add doctests explaining the set / list behavior. This will make the
following changes more confident.
author | Jun Wu <quark@fb.com> |
---|---|
date | Sat, 18 Feb 2017 16:30:07 -0800 |
parents | 1076f7eba964 |
children | 2d1bf84046f6 |
comparison
equal
deleted
inserted
replaced
31018:cb5888c00410 | 31019:74f77f1c2215 |
---|---|
156 class baseset(abstractsmartset): | 156 class baseset(abstractsmartset): |
157 """Basic data structure that represents a revset and contains the basic | 157 """Basic data structure that represents a revset and contains the basic |
158 operation that it should be able to perform. | 158 operation that it should be able to perform. |
159 | 159 |
160 Every method in this class should be implemented by any smartset class. | 160 Every method in this class should be implemented by any smartset class. |
161 | |
162 This class could be constructed by an (unordered) set, or an (ordered) | |
163 list-like object. If a set is provided, it'll be sorted lazily. | |
164 | |
165 >>> x = [4, 0, 7, 6] | |
166 >>> y = [5, 6, 7, 3] | |
167 | |
168 Construct by a set: | |
169 >>> xs = baseset(set(x)) | |
170 >>> ys = baseset(set(y)) | |
171 >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] | |
172 [[0, 4, 6, 7, 3, 5], [6, 7], [0, 4]] | |
173 >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] | |
174 ['addset', 'filteredset', 'filteredset'] | |
175 | |
176 Construct by a list-like: | |
177 >>> xs = baseset(x) | |
178 >>> ys = baseset(i for i in y) | |
179 >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] | |
180 [[4, 0, 7, 6, 5, 3], [7, 6], [4, 0]] | |
181 >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] | |
182 ['addset', 'filteredset', 'filteredset'] | |
183 | |
184 Populate "_set" fields in the lists so set optimization may be used: | |
185 >>> [1 in xs, 3 in ys] | |
186 [False, True] | |
187 | |
188 Without sort(), results won't be changed: | |
189 >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] | |
190 [[4, 0, 7, 6, 5, 3], [7, 6], [4, 0]] | |
191 >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] | |
192 ['addset', 'filteredset', 'filteredset'] | |
193 | |
194 With sort(): | |
195 >>> xs.sort(reverse=True) | |
196 >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] | |
197 [[7, 6, 4, 0, 5, 3], [7, 6], [4, 0]] | |
198 >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] | |
199 ['addset', 'filteredset', 'filteredset'] | |
200 | |
201 >>> ys.sort() | |
202 >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] | |
203 [[7, 6, 4, 0, 3, 5], [7, 6], [4, 0]] | |
204 >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] | |
205 ['addset', 'filteredset', 'filteredset'] | |
161 """ | 206 """ |
162 def __init__(self, data=(), datarepr=None, istopo=False): | 207 def __init__(self, data=(), datarepr=None, istopo=False): |
163 """ | 208 """ |
164 datarepr: a tuple of (format, obj, ...), a function or an object that | 209 datarepr: a tuple of (format, obj, ...), a function or an object that |
165 provides a printable representation of the given data. | 210 provides a printable representation of the given data. |