[Python-checkins] r68813 - in python/trunk: Lib/numbers.py Lib/test/test_fractions.py Misc/NEWS
raymond.hettinger
python-checkins at python.org
Tue Jan 20 21:34:19 CET 2009
Author: raymond.hettinger
Date: Tue Jan 20 21:34:19 2009
New Revision: 68813
Log:
Issue 4998: __slots__ on Fractions was useless.
Modified:
python/trunk/Lib/numbers.py
python/trunk/Lib/test/test_fractions.py
python/trunk/Misc/NEWS
Modified: python/trunk/Lib/numbers.py
==============================================================================
--- python/trunk/Lib/numbers.py (original)
+++ python/trunk/Lib/numbers.py Tue Jan 20 21:34:19 2009
@@ -17,6 +17,7 @@
caring what kind, use isinstance(x, Number).
"""
__metaclass__ = ABCMeta
+ __slots__ = ()
# Concrete numeric types must provide their own hash implementation
__hash__ = None
@@ -41,6 +42,8 @@
type as described below.
"""
+ __slots__ = ()
+
@abstractmethod
def __complex__(self):
"""Return a builtin complex instance. Called for complex(self)."""
@@ -172,6 +175,8 @@
Real also provides defaults for the derived operations.
"""
+ __slots__ = ()
+
@abstractmethod
def __float__(self):
"""Any Real can be converted to a native float object.
@@ -265,6 +270,8 @@
class Rational(Real):
""".numerator and .denominator should be in lowest terms."""
+ __slots__ = ()
+
@abstractproperty
def numerator(self):
raise NotImplementedError
@@ -288,6 +295,8 @@
class Integral(Rational):
"""Integral adds a conversion to long and the bit-string operations."""
+ __slots__ = ()
+
@abstractmethod
def __long__(self):
"""long(self)"""
Modified: python/trunk/Lib/test/test_fractions.py
==============================================================================
--- python/trunk/Lib/test/test_fractions.py (original)
+++ python/trunk/Lib/test/test_fractions.py Tue Jan 20 21:34:19 2009
@@ -394,6 +394,11 @@
self.assertEqual(id(r), id(copy(r)))
self.assertEqual(id(r), id(deepcopy(r)))
+ def test_slots(self):
+ # Issue 4998
+ r = F(13, 7)
+ self.assertRaises(AttributeError, setattr, r, 'a', 10)
+
def test_main():
run_unittest(FractionTest, GcdTest)
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Tue Jan 20 21:34:19 2009
@@ -145,6 +145,10 @@
Library
-------
+- Issue #4998: The memory saving effect of __slots__ had been lost on Fractions
+ which inherited from numbers.py which did not have __slots__ defined. The
+ numbers heirarchy now has its own __slots__ declarations.
+
- Issue #3321: _multiprocessing.Connection() doesn't check handle; added checks
for *nix machines for negative handles and large int handles. Without this check
it is possible to segfault the interpreter.
More information about the Python-checkins
mailing list