Return a new sorted sequence of spans given a sequence of spans. The primary sort is on start. The secondary sort is on length. If two spans have the same start, the longer span will sort first. For example: >>> spans = [Span([5, 6, 7, 8, 9, 10]), Span([1, 2
(cls, spans)
| 233 | |
| 234 | @classmethod |
| 235 | def sort(cls, spans): |
| 236 | """ |
| 237 | Return a new sorted sequence of spans given a sequence of spans. |
| 238 | The primary sort is on start. The secondary sort is on length. |
| 239 | If two spans have the same start, the longer span will sort first. |
| 240 | |
| 241 | For example: |
| 242 | >>> spans = [Span([5, 6, 7, 8, 9, 10]), Span([1, 2]), Span([3, 4, 5]), Span([3, 4, 5, 6]), Span([8, 9, 10])] |
| 243 | >>> Span.sort(spans) |
| 244 | [Span(1, 2), Span(3, 6), Span(3, 5), Span(5, 10), Span(8, 10)] |
| 245 | |
| 246 | >>> spans = [Span([1, 2]), Span([3, 4, 5]), Span([3, 4, 5, 6]), Span([8, 9, 10])] |
| 247 | >>> Span.sort(spans) |
| 248 | [Span(1, 2), Span(3, 6), Span(3, 5), Span(8, 10)] |
| 249 | |
| 250 | >>> spans = [Span([1, 2]), Span([4, 5]), Span([7, 8]), Span([11, 12])] |
| 251 | >>> Span.sort(spans) |
| 252 | [Span(1, 2), Span(4, 5), Span(7, 8), Span(11, 12)] |
| 253 | |
| 254 | >>> spans = [Span([1, 2]), Span([7, 8]), Span([5, 6]), Span([12, 13])] |
| 255 | >>> Span.sort(spans) |
| 256 | [Span(1, 2), Span(5, 6), Span(7, 8), Span(12, 13)] |
| 257 | |
| 258 | """ |
| 259 | key = lambda s: (s.start, -len(s),) |
| 260 | return sorted(spans, key=key) |
| 261 | |
| 262 | def magnitude(self): |
| 263 | """ |
no outgoing calls