Show More
@@ -2521,6 +2521,7 b' class addset(abstractsmartset):' | |||
|
2521 | 2521 | self._iter = None |
|
2522 | 2522 | self._ascending = ascending |
|
2523 | 2523 | self._genlist = None |
|
2524 | self._asclist = None | |
|
2524 | 2525 | |
|
2525 | 2526 | def __len__(self): |
|
2526 | 2527 | return len(self._list) |
@@ -2560,12 +2561,31 b' class addset(abstractsmartset):' | |||
|
2560 | 2561 | return gen |
|
2561 | 2562 | |
|
2562 | 2563 | def __iter__(self): |
|
2563 |
if self._ |
|
|
2564 |
|
|
|
2565 |
return iter(self._it |
|
|
2564 | if self._ascending is None: | |
|
2565 | if self._genlist: | |
|
2566 | return iter(self._genlist) | |
|
2567 | return iter(self._iterator()) | |
|
2568 | self._trysetasclist() | |
|
2569 | if self._ascending: | |
|
2570 | it = self.fastasc | |
|
2571 | else: | |
|
2572 | it = self.fastdesc | |
|
2573 | if it is None: | |
|
2574 | # consume the gen and try again | |
|
2575 | self._list | |
|
2576 | return iter(self) | |
|
2577 | return it() | |
|
2578 | ||
|
2579 | def _trysetasclist(self): | |
|
2580 | """populate the _asclist attribut if possible and necessary""" | |
|
2581 | if self._genlist is not None and self._asclist is None: | |
|
2582 | self._asclist = sorted(self._genlist) | |
|
2566 | 2583 | |
|
2567 | 2584 | @property |
|
2568 | 2585 | def fastasc(self): |
|
2586 | self._trysetasclist() | |
|
2587 | if self._asclist is not None: | |
|
2588 | return self._asclist.__iter__ | |
|
2569 | 2589 | iter1 = self._r1.fastasc |
|
2570 | 2590 | iter2 = self._r2.fastasc |
|
2571 | 2591 | if None in (iter1, iter2): |
@@ -2574,6 +2594,9 b' class addset(abstractsmartset):' | |||
|
2574 | 2594 | |
|
2575 | 2595 | @property |
|
2576 | 2596 | def fastdesc(self): |
|
2597 | self._trysetasclist() | |
|
2598 | if self._asclist is not None: | |
|
2599 | return self._asclist.__reversed__ | |
|
2577 | 2600 | iter1 = self._r1.fastdesc |
|
2578 | 2601 | iter2 = self._r2.fastdesc |
|
2579 | 2602 | if None in (iter1, iter2): |
@@ -2633,12 +2656,7 b' class addset(abstractsmartset):' | |||
|
2633 | 2656 | For this we use the cached list with all the generated values and if we |
|
2634 | 2657 | know they are ascending or descending we can sort them in a smart way. |
|
2635 | 2658 | """ |
|
2636 |
|
|
|
2637 | self._list.sort(reverse=reverse) | |
|
2638 | self._ascending = not reverse | |
|
2639 | else: | |
|
2640 | if bool(self._ascending) == bool(reverse): | |
|
2641 | self.reverse() | |
|
2659 | self._ascending = not reverse | |
|
2642 | 2660 | |
|
2643 | 2661 | def isascending(self): |
|
2644 | 2662 | return self._ascending is not None and self._ascending |
@@ -2647,8 +2665,9 b' class addset(abstractsmartset):' | |||
|
2647 | 2665 | return self._ascending is not None and not self._ascending |
|
2648 | 2666 | |
|
2649 | 2667 | def reverse(self): |
|
2650 | self._list.reverse() | |
|
2651 | if self._ascending is not None: | |
|
2668 | if self._ascending is None: | |
|
2669 | self._list.reverse() | |
|
2670 | else: | |
|
2652 | 2671 | self._ascending = not self._ascending |
|
2653 | 2672 | |
|
2654 | 2673 | def first(self): |
General Comments 0
You need to be logged in to leave comments.
Login now