Use a set instead of a list for Command._modes.

This commit is contained in:
Ryan Roden-Corrent 2016-09-26 07:50:57 -04:00
parent 14f8ec8754
commit 6aaa138619

View File

@ -100,14 +100,14 @@ class Command:
for m in modes: for m in modes:
if not isinstance(m, usertypes.KeyMode): if not isinstance(m, usertypes.KeyMode):
raise TypeError("Mode {} is no KeyMode member!".format(m)) raise TypeError("Mode {} is no KeyMode member!".format(m))
self._modes = modes self._modes = set(modes)
elif not_modes is not None: elif not_modes is not None:
for m in not_modes: for m in not_modes:
if not isinstance(m, usertypes.KeyMode): if not isinstance(m, usertypes.KeyMode):
raise TypeError("Mode {} is no KeyMode member!".format(m)) raise TypeError("Mode {} is no KeyMode member!".format(m))
self._modes = [m for m in usertypes.KeyMode if m not in not_modes] self._modes = set(usertypes.KeyMode).difference(not_modes)
else: else:
self._modes = list(usertypes.KeyMode) self._modes = set(usertypes.KeyMode)
if scope != 'global' and instance is None: if scope != 'global' and instance is None:
raise ValueError("Setting scope without setting instance makes " raise ValueError("Setting scope without setting instance makes "
"no sense!") "no sense!")
@ -524,7 +524,7 @@ class Command:
mode: The usertypes.KeyMode to check. mode: The usertypes.KeyMode to check.
""" """
if mode not in self._modes: if mode not in self._modes:
mode_names = '/'.join(m.name for m in self._modes) mode_names = '/'.join(sorted(m.name for m in self._modes))
raise cmdexc.PrerequisitesError( raise cmdexc.PrerequisitesError(
"{}: This command is only allowed in {} mode, not {}.".format( "{}: This command is only allowed in {} mode, not {}.".format(
self.name, mode_names, mode.name)) self.name, mode_names, mode.name))