When the MutableSet mixin isn't available, we fall back on just
deriving from object. This means that comparisons between membership
sets like __le__ as well as operators like __or__ aren't available,
but it seems unlikely those will be used for manipulating the AFS
protection database.
Signed-off-by: Evan Broder <broder@mit.edu>
import collections
from afs import _pts
-class PTRelationSet(collections.MutableSet):
+try:
+ SetMixin = collections.MutableSet
+except AttributeError:
+ SetMixin = object
+
+class PTRelationSet(SetMixin):
"""Collection class for the groups/members of a PTEntry.
This class, which acts like a set, is actually a view of the
self._discard(elt)
+ def remove(self, elt):
+ """Remove an entity from a group; it must already be a member.
+
+ If the entity is not a member, raise a KeyError.
+ """
+ if elt not in self:
+ raise KeyError(elt)
+
+ self.discard(elt)
+
class PTEntry(object):
"""An entry in the AFS protection database.