X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/blobdiff_plain/ce2bfb34b695e06c2407ece59ea5bbe5a633a2ef..2a8260a1c4307b9810387b081793947588f8870b:/wizard/sset.py diff --git a/wizard/sset.py b/wizard/sset.py index a5c37d4..b2364db 100644 --- a/wizard/sset.py +++ b/wizard/sset.py @@ -1,12 +1,26 @@ import os.path +def make(seen_file): + """ + Return a :class:`SerialisedSet` if given any non-empty string. + If given an empty string, return a :class:`DummySerialisedSet`. + """ + if seen_file: + return SerializedSet(seen_file) + else: + return DummySerializedSet() + class ISerializedSet(object): - def put(self, name): + """A unique unordered collection of strings.""" + def add(self, name): + """Adds a value into the set.""" raise NotImplementedError class SerializedSet(ISerializedSet): - """This set also records itself to a file, so that it - is persisted over multiple sessions.""" + """ + This set also records itself to a file, so that it + is persisted over multiple sessions. + """ def __init__(self, file): self.set = set() if os.path.isfile(file): @@ -16,14 +30,18 @@ class SerializedSet(ISerializedSet): def __contains__(self, name): return name in self.set def add(self, name): + """Adds a value into the set.""" self.set.add(name) self.file.write(name + "\n") self.file.flush() class DummySerializedSet(ISerializedSet): - """Dummy object that doesn't actually cache anything and - claims that everything needs to be done""" + """ + Dummy object that doesn't actually cache anything and + claims that everything needs to be done. + """ def __contains__(self, name): return False def add(self, name): + """Doesn't do anything.""" pass