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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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