Mercurial > p > roundup > code
annotate roundup/anypy/cmp_.py @ 7658:d30e534b078a
clarify doc on dispatcher_email config setting.
An issue was brought up on the mailing list.
https://sourceforge.net/p/roundup/mailman/message/43383465/
The description of dispatcher_email sounds like it should be sent
email on issue creation. That's not it's role. Try to make it's role
more obvious.
Fix config.ini and reference.txt description.
Add the newissuecopy.py detector to send email on the creation of an
issue
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 10 Oct 2023 20:33:22 -0400 |
| parents | b0c459d1e2c2 |
| children | dec7de56f253 |
| rev | line source |
|---|---|
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
1 try: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
2 None < 0 |
| 6047 | 3 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
4 def NoneAndDictComparable(v): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
5 return v |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
6 except TypeError: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
7 # comparator to allow comparisons against None and dict |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
8 # comparisons (these were allowed in Python 2, but aren't allowed |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
9 # in Python 3 any more) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
10 class NoneAndDictComparable(object): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
11 def __init__(self, value): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
12 self.value = value |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
13 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
14 def __cmp__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
15 if not isinstance(other, self.__class__): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
16 raise TypeError('not comparable') |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
17 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
18 if self.value == other.value: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
19 return 0 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
20 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
21 elif self.value is None: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
22 return -1 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
23 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
24 elif other.value is None: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
25 return 1 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
26 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
27 elif type(self.value) == tuple and type(other.value) == tuple: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
28 for lhs, rhs in zip(self.value, other.value): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
29 lhsCmp = NoneAndDictComparable(lhs) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
30 rhsCmp = NoneAndDictComparable(rhs) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
31 result = lhsCmp.__cmp__(rhsCmp) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
32 if result != 0: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
33 return result |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
34 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
35 return len(self.value) - len(other.value) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
36 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
37 elif type(self.value) == dict and type(other.value) == dict: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
38 diff = len(self.value) - len(other.value) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
39 if diff == 0: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
40 lhsItems = tuple(sorted(self.value.items(), |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
41 key=NoneAndDictComparable)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
42 rhsItems = tuple(sorted(other.value.items(), |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
43 key=NoneAndDictComparable)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
44 return -1 if NoneAndDictComparable(lhsItems) < NoneAndDictComparable(rhsItems) else 1 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
45 else: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
46 return diff |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
47 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
48 elif self.value < other.value: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
49 return -1 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
50 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
51 else: |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
52 return 1 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
53 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
54 def __eq__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
55 return self.__cmp__(other) == 0 |
| 6047 | 56 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
57 def __ne__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
58 return self.__cmp__(other) != 0 |
| 6047 | 59 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
60 def __lt__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
61 return self.__cmp__(other) < 0 |
| 6047 | 62 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
63 def __le__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
64 return self.__cmp__(other) <= 0 |
| 6047 | 65 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
66 def __ge__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
67 return self.__cmp__(other) >= 0 |
| 6047 | 68 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
69 def __gt__(self, other): |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
70 return self.__cmp__(other) > 0 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
71 |
| 6047 | 72 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
73 def _test(): |
|
7550
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
74 import sys |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
75 _py3 = sys.version_info[0] > 2 |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
76 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
77 Comp = NoneAndDictComparable |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
78 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
79 assert Comp(None) < Comp(0) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
80 assert Comp(None) < Comp('') |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
81 assert Comp(None) < Comp({}) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
82 assert Comp((0, None)) < Comp((0, 0)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
83 assert not Comp(0) < Comp(None) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
84 assert not Comp('') < Comp(None) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
85 assert not Comp({}) < Comp(None) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
86 assert not Comp((0, 0)) < Comp((0, None)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
87 |
|
7550
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
88 try: |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
89 not Comp("") < Comp((0, None)) |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
90 if _py3: |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
91 assert False, "Incompatible types are reporting comparable." |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
92 except TypeError: |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
93 pass |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
94 |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
95 assert Comp((0, 0)) < Comp((0, 0, None)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
96 assert Comp((0, None, None)) < Comp((0, 0, 0)) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
97 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
98 assert Comp(0) < Comp(1) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
99 assert Comp(1) > Comp(0) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
100 assert not Comp(1) < Comp(0) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
101 assert not Comp(0) > Comp(0) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
102 |
|
7550
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
103 assert Comp(0) <= Comp(1) |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
104 assert Comp(1) >= Comp(0) |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
105 assert not Comp(1) <= Comp(0) |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
106 assert Comp(0) >= Comp(0) |
|
706f3be6ffbb
Add tests for <= >= and check exception is raised for python3.
John Rouillard <rouilj@ieee.org>
parents:
6047
diff
changeset
|
107 |
| 6047 | 108 assert Comp({0: None}) < Comp({0: 0}) |
| 109 assert Comp({0: 0}) < Comp({0: 1}) | |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
110 |
| 6047 | 111 assert Comp({0: 0}) == Comp({0: 0}) |
| 112 assert Comp({0: 0}) != Comp({0: 1}) | |
| 113 assert Comp({0: 0, 1: 1}) > Comp({0: 1}) | |
| 114 assert Comp({0: 0, 1: 1}) < Comp({0: 0, 2: 2}) | |
| 115 | |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
116 |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
117 if __name__ == '__main__': |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
diff
changeset
|
118 _test() |
