From 50e92235e7fc7151f591f76b73fb539e34593405 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 14 Jan 2003 16:45:04 +0000 Subject: [PATCH] Explicitly raise an exception in __cmp__ -- this clarifies that cmp() is not supported on sets. (Unfortunately, sorting a list of sets may still return random results because it uses < exclusively, but for sets that inly implements a partial ordering. Oh well.) --- Lib/sets.py | 5 +++++ Misc/NEWS | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Lib/sets.py b/Lib/sets.py index 2605c98fd09..6d2c0320666 100644 --- a/Lib/sets.py +++ b/Lib/sets.py @@ -102,6 +102,11 @@ class BaseSet(object): """ return self._data.iterkeys() + # Three-way comparison is not supported + + def __cmp__(self, other): + raise TypeError, "can't compare sets using cmp()" + # Equality comparisons using the underlying dicts def __eq__(self, other): diff --git a/Misc/NEWS b/Misc/NEWS index 5f415d49baf..29411ec7d87 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -78,6 +78,10 @@ Extension modules Library ------- +- The sets module now raises TypeError in __cmp__, to clarify that + sets are not intended to be three-way-compared; the comparison + operators are overloaded as subset/superset tests. + - Bastion.py and rexec.py are disabled. These modules are not safe in Python 2.2. or 2.3.