# HG changeset patch
# User Florent Hivert <Florent.Hivert@univ-rouen.fr>
# Date 1239807286 -7200
# Node ID b03750263d284c99964625b998d2c9086a13f53b
# Parent 577d69c6e488a1d48c2a8a57d384a11c71582d81
Fixes the pickle problem due to moving some files.
Added a minimal doc header.
diff -r 577d69c6e488 -r b03750263d28 sage/combinat/family.py
a
|
b
|
|
1 | | # Backward compatibility pointer |
2 | | from sage.sets.family import Family |
| 1 | """ |
| 2 | Families |
| 3 | |
| 4 | This is a backward compatibility stub. Use :mod:`sage.sets.family` instead. |
| 5 | """ |
| 6 | |
| 7 | # Backward compatibility pointer |
| 8 | # Needed for unpickling. |
| 9 | from sage.sets.family import (Family, FiniteFamily, LazyFamily, |
| 10 | FiniteFamilyWithHiddenKeys) |
diff -r 577d69c6e488 -r b03750263d28 sage/combinat/finite_class.py
a
|
b
|
|
123 | 123 | [0, 1, 2] |
124 | 124 | """ |
125 | 125 | return range(len(self.l)) |
| 126 | |
| 127 | # Backward compatibility pointer |
| 128 | # Needed for unpickling. |
| 129 | FiniteCombinatorialClass_l = FiniteCombinatorialClass |
diff -r 577d69c6e488 -r b03750263d28 sage/sets/all.py
a
|
b
|
|
2 | 2 | |
3 | 3 | from primes import Primes |
4 | 4 | |
5 | | from family import Family, FiniteFamily, LazyFamily, TrivialFamily |
| 5 | from family import Family |
diff -r 577d69c6e488 -r b03750263d28 sage/sets/family.py
a
|
b
|
|
1 | 1 | """ |
2 | 2 | Families |
| 3 | |
| 4 | A Family is an associative container which models a family |
| 5 | `(f_i)_{i \in I}`. Then, ``f[i]`` returns the element of the family indexed by |
| 6 | ``i``. Whenever available, set and combinatorial class operations (counting, |
| 7 | iteration, listing) on the family are induced from those of the index |
| 8 | set. Families should be created through the :func:`Family` function. |
| 9 | |
| 10 | AUTHORS: |
| 11 | |
| 12 | - Nicolas Thiery (2008-02): initial release |
| 13 | |
| 14 | - Florent Hivert (2008-04): various fixes, cleanups and improvements. |
| 15 | |
3 | 16 | """ |
4 | 17 | #***************************************************************************** |
5 | 18 | # Copyright (C) 2008 Nicolas Thiery <nthiery at users.sf.net>, |
… |
… |
|
291 | 304 | 'b' |
292 | 305 | |
293 | 306 | The factory ``Family`` is supposed to be idempotent. We test this feature here:: |
294 | | |
| 307 | |
| 308 | sage: from sage.sets.family import FiniteFamily, LazyFamily, TrivialFamily |
295 | 309 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
296 | 310 | sage: g = Family(f) |
297 | 311 | sage: f == g |
… |
… |
|
417 | 431 | |
418 | 432 | :: |
419 | 433 | |
| 434 | sage: from sage.sets.family import FiniteFamily |
420 | 435 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
421 | 436 | |
422 | 437 | Individual elements are accessible as in a usual dictionary:: |
… |
… |
|
443 | 458 | """ |
444 | 459 | TESTS:: |
445 | 460 | |
| 461 | sage: from sage.sets.family import FiniteFamily |
446 | 462 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
447 | 463 | sage: f == loads(dumps(f)) |
448 | 464 | True |
… |
… |
|
464 | 480 | """ |
465 | 481 | EXAMPLES:: |
466 | 482 | |
| 483 | sage: from sage.sets.family import FiniteFamily |
467 | 484 | sage: FiniteFamily({3: 'a'}) |
468 | 485 | Finite family {3: 'a'} |
469 | 486 | """ |
… |
… |
|
473 | 490 | """ |
474 | 491 | EXAMPLES:: |
475 | 492 | |
| 493 | sage: from sage.sets.family import FiniteFamily |
476 | 494 | sage: f = FiniteFamily({3: 'a'}) |
477 | 495 | sage: 'a' in f |
478 | 496 | True |
… |
… |
|
487 | 505 | |
488 | 506 | EXAMPLES:: |
489 | 507 | |
| 508 | sage: from sage.sets.family import FiniteFamily |
490 | 509 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
491 | 510 | sage: len(f) |
492 | 511 | 3 |
… |
… |
|
499 | 518 | |
500 | 519 | EXAMPLES:: |
501 | 520 | |
| 521 | sage: from sage.sets.family import FiniteFamily |
502 | 522 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
503 | 523 | sage: f.cardinality() |
504 | 524 | 3 |
… |
… |
|
509 | 529 | """ |
510 | 530 | EXAMPLES:: |
511 | 531 | |
| 532 | sage: from sage.sets.family import FiniteFamily |
512 | 533 | sage: f = FiniteFamily({3: 'a'}) |
513 | 534 | sage: i = iter(f) |
514 | 535 | sage: i.next() |
… |
… |
|
525 | 546 | |
526 | 547 | EXAMPLES:: |
527 | 548 | |
| 549 | sage: from sage.sets.family import FiniteFamily |
528 | 550 | sage: f = FiniteFamily({3: 'a', 4: 'b', 7: 'd'}) |
529 | 551 | sage: f[3] |
530 | 552 | 'a' |
… |
… |
|
536 | 558 | """ |
537 | 559 | TESTS:: |
538 | 560 | |
| 561 | sage: from sage.sets.family import FiniteFamily |
539 | 562 | sage: f = FiniteFamily({3: 'a'}) |
540 | 563 | sage: f.__getstate__() |
541 | 564 | {'dictionary': {3: 'a'}} |
… |
… |
|
546 | 569 | """ |
547 | 570 | TESTS:: |
548 | 571 | |
| 572 | sage: from sage.sets.family import FiniteFamily |
549 | 573 | sage: f = FiniteFamily({3: 'a'}) |
550 | 574 | sage: f.__setstate__({'dictionary': {4:'b'}}) |
551 | 575 | sage: f |
… |
… |
|
666 | 690 | """ |
667 | 691 | TESTS:: |
668 | 692 | |
| 693 | sage: from sage.sets.family import LazyFamily |
669 | 694 | sage: f = LazyFamily([3,4,7], lambda i: 2r*i); f |
670 | 695 | Lazy family (<lambda>(i))_{i in [3, 4, 7]} |
671 | 696 | sage: f == loads(dumps(f)) |
… |
… |
|
690 | 715 | """ |
691 | 716 | EXAMPLES:: |
692 | 717 | |
| 718 | sage: from sage.sets.family import LazyFamily |
693 | 719 | sage: def fun(i): 2*i |
694 | 720 | sage: f = LazyFamily([3,4,7], fun); f |
695 | 721 | Lazy family (fun(i))_{i in [3, 4, 7]} |
… |
… |
|
719 | 745 | |
720 | 746 | EXAMPLES:: |
721 | 747 | |
| 748 | sage: from sage.sets.family import LazyFamily |
722 | 749 | sage: f = LazyFamily([3,4,7], lambda i: 2*i) |
723 | 750 | sage: f.keys() |
724 | 751 | [3, 4, 7] |
… |
… |
|
731 | 758 | |
732 | 759 | EXAMPLES:: |
733 | 760 | |
| 761 | sage: from sage.sets.family import LazyFamily |
734 | 762 | sage: f = LazyFamily([3,4,7], lambda i: 2*i) |
735 | 763 | sage: f.cardinality() |
736 | 764 | 3 |
… |
… |
|
744 | 772 | """ |
745 | 773 | EXAMPLES:: |
746 | 774 | |
| 775 | sage: from sage.sets.family import LazyFamily |
747 | 776 | sage: f = LazyFamily([3,4,7], lambda i: 2*i) |
748 | 777 | sage: [i for i in f] |
749 | 778 | [6, 8, 14] |
… |
… |
|
755 | 784 | """ |
756 | 785 | EXAMPLES:: |
757 | 786 | |
| 787 | sage: from sage.sets.family import LazyFamily |
758 | 788 | sage: f = LazyFamily([3,4,7], lambda i: 2*i) |
759 | 789 | sage: f[3] |
760 | 790 | 6 |
… |
… |
|
770 | 800 | """ |
771 | 801 | EXAMPLES:: |
772 | 802 | |
| 803 | sage: from sage.sets.family import LazyFamily |
773 | 804 | sage: f = LazyFamily([3,4,7], lambda i: 2r*i) |
774 | 805 | sage: d = f.__getstate__() |
775 | 806 | sage: d['set'] |
… |
… |
|
797 | 828 | """ |
798 | 829 | EXAMPLES:: |
799 | 830 | |
| 831 | sage: from sage.sets.family import LazyFamily |
800 | 832 | sage: f = LazyFamily([3,4,7], lambda i: 2r*i) |
801 | 833 | sage: d = f.__getstate__() |
802 | 834 | sage: f = LazyFamily([4,5,6], lambda i: 2r*i) |
… |
… |
|
828 | 860 | """ |
829 | 861 | EXAMPLES:: |
830 | 862 | |
| 863 | sage: from sage.sets.family import TrivialFamily |
831 | 864 | sage: f = TrivialFamily((3,4,7)); f |
832 | 865 | Family (3, 4, 7) |
833 | 866 | sage: f = TrivialFamily([3,4,7]); f |
… |
… |
|
841 | 874 | """ |
842 | 875 | EXAMPLES:: |
843 | 876 | |
| 877 | sage: from sage.sets.family import TrivialFamily |
844 | 878 | sage: f = TrivialFamily([3,4,7]); f |
845 | 879 | Family (3, 4, 7) |
846 | 880 | """ |
… |
… |
|
852 | 886 | |
853 | 887 | EXAMPLES:: |
854 | 888 | |
| 889 | sage: from sage.sets.family import TrivialFamily |
855 | 890 | sage: f = TrivialFamily([3,4,7]) |
856 | 891 | sage: f.keys() |
857 | 892 | [0, 1, 2] |
… |
… |
|
864 | 899 | |
865 | 900 | EXAMPLES:: |
866 | 901 | |
| 902 | sage: from sage.sets.family import TrivialFamily |
867 | 903 | sage: f = TrivialFamily([3,4,7]) |
868 | 904 | sage: f.cardinality() |
869 | 905 | 3 |
… |
… |
|
874 | 910 | """ |
875 | 911 | EXAMPLES:: |
876 | 912 | |
| 913 | sage: from sage.sets.family import TrivialFamily |
877 | 914 | sage: f = TrivialFamily([3,4,7]) |
878 | 915 | sage: [i for i in f] |
879 | 916 | [3, 4, 7] |
… |
… |
|
884 | 921 | """ |
885 | 922 | EXAMPLES:: |
886 | 923 | |
| 924 | sage: from sage.sets.family import TrivialFamily |
887 | 925 | sage: f = TrivialFamily([3,4,7]) |
888 | 926 | sage: f[1] |
889 | 927 | 4 |
… |
… |
|
894 | 932 | """ |
895 | 933 | TESTS:: |
896 | 934 | |
| 935 | sage: from sage.sets.family import TrivialFamily |
897 | 936 | sage: f = TrivialFamily([3,4,7]) |
898 | 937 | sage: f.__getstate__() |
899 | 938 | {'_enumeration': (3, 4, 7)} |
… |
… |
|
904 | 943 | """ |
905 | 944 | TESTS:: |
906 | 945 | |
| 946 | sage: from sage.sets.family import TrivialFamily |
907 | 947 | sage: f = TrivialFamily([3,4,7]) |
908 | 948 | sage: f.__setstate__({'_enumeration': (2, 4, 8)}) |
909 | 949 | sage: f |