Mercurial > hg > tvii
diff tvii/unique.py @ 50:4b20694b8a16
add module + test for uniqueness
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 17 Sep 2017 14:28:36 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tvii/unique.py Sun Sep 17 14:28:36 2017 -0700 @@ -0,0 +1,21 @@ +class NotUnique(Exception): + """exception for a set of items that are not unique""" + + msg_tmpl = "Not unique: {items}" + + def __init__(self, multiples): + self.multiples = multiples + message = self.msg_tmpl.format(items=', '.join([str(item) + for item in multiples])) + Exception.__init__(self, message) + + +def unique(items): + """asserts that a `items` is a set of one""" + + types = set(items) + unique = types.pop() + if types: + types.add(unique) + raise NotUnique(types) + return unique