Mercurial > hg > tvii
annotate tvii/unique.py @ 52:0b3daccfc36c
[documentation] link to lore python lib
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 23 Sep 2017 11:18:15 -0700 |
parents | 4b20694b8a16 |
children |
rev | line source |
---|---|
50
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
1 class NotUnique(Exception): |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
2 """exception for a set of items that are not unique""" |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
3 |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
4 msg_tmpl = "Not unique: {items}" |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
5 |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
6 def __init__(self, multiples): |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
7 self.multiples = multiples |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
8 message = self.msg_tmpl.format(items=', '.join([str(item) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
9 for item in multiples])) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
10 Exception.__init__(self, message) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
11 |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
12 |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
13 def unique(items): |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
14 """asserts that a `items` is a set of one""" |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
15 |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
16 types = set(items) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
17 unique = types.pop() |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
18 if types: |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
19 types.add(unique) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
20 raise NotUnique(types) |
4b20694b8a16
add module + test for uniqueness
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
21 return unique |