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