summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-01-16 10:02:51 (GMT)
committerGitHub <noreply@github.com>2020-01-16 10:02:51 (GMT)
commit4691a2f2a2b8174a6c958ce6976ed5f3354c9504 (patch)
tree2d39ff21b819f1da2940d94b574190e89a9cf079
parent210c19e3c5b86535a73487fa737752de8eb1d866 (diff)
downloadcpython-4691a2f2a2b8174a6c958ce6976ed5f3354c9504.zip
cpython-4691a2f2a2b8174a6c958ce6976ed5f3354c9504.tar.gz
cpython-4691a2f2a2b8174a6c958ce6976ed5f3354c9504.tar.bz2
bpo-39350: Remove deprecated fractions.gcd() (GH-18021)
Remove fractions.gcd() function, deprecated since Python 3.5 (bpo-22486): use math.gcd() instead.
-rw-r--r--Doc/library/fractions.rst12
-rw-r--r--Doc/whatsnew/3.9.rst4
-rw-r--r--Lib/fractions.py24
-rw-r--r--Lib/test/test_fractions.py27
-rw-r--r--Misc/NEWS.d/next/Library/2020-01-16-09-15-40.bpo-39350.ZQx0uY.rst2
5 files changed, 9 insertions, 60 deletions
diff --git a/Doc/library/fractions.rst b/Doc/library/fractions.rst
index 58e7126..d3a4276 100644
--- a/Doc/library/fractions.rst
+++ b/Doc/library/fractions.rst
@@ -172,18 +172,6 @@ another rational number, or from a string.
method can also be accessed through the :func:`round` function.
-.. function:: gcd(a, b)
-
- Return the greatest common divisor of the integers *a* and *b*. If either
- *a* or *b* is nonzero, then the absolute value of ``gcd(a, b)`` is the
- largest integer that divides both *a* and *b*. ``gcd(a,b)`` has the same
- sign as *b* if *b* is nonzero; otherwise it takes the sign of *a*. ``gcd(0,
- 0)`` returns ``0``.
-
- .. deprecated:: 3.5
- Use :func:`math.gcd` instead.
-
-
.. seealso::
Module :mod:`numbers`
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 47e8a37..8ca7556 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -416,6 +416,10 @@ Removed
:func:`base64.decodebytes` instead.
(Contributed by Victor Stinner in :issue:`39351`.)
+* ``fractions.gcd()`` function has been removed, it was deprecated since Python
+ 3.5 (:issue:`22486`): use :func:`math.gcd` instead.
+ (Contributed by Victor Stinner in :issue:`39350`.)
+
Porting to Python 3.9
=====================
diff --git a/Lib/fractions.py b/Lib/fractions.py
index 2e7047a..501f4b7 100644
--- a/Lib/fractions.py
+++ b/Lib/fractions.py
@@ -10,31 +10,9 @@ import operator
import re
import sys
-__all__ = ['Fraction', 'gcd']
+__all__ = ['Fraction']
-
-def gcd(a, b):
- """Calculate the Greatest Common Divisor of a and b.
-
- Unless b==0, the result will have the same sign as b (so that when
- b is divided by it, the result comes out positive).
- """
- import warnings
- warnings.warn('fractions.gcd() is deprecated. Use math.gcd() instead.',
- DeprecationWarning, 2)
- if type(a) is int is type(b):
- if (b or a) < 0:
- return -math.gcd(a, b)
- return math.gcd(a, b)
- return _gcd(a, b)
-
-def _gcd(a, b):
- # Supports non-integers for backward compatibility.
- while b:
- a, b = b, a%b
- return a
-
# Constants related to the hash implementation; hash(x) is based
# on the reduction of x modulo the prime _PyHASH_MODULUS.
_PyHASH_MODULUS = sys.hash_info.modulus
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
index 18ab28c..7cf7899 100644
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -12,7 +12,7 @@ import warnings
from copy import copy, deepcopy
from pickle import dumps, loads
F = fractions.Fraction
-gcd = fractions.gcd
+
class DummyFloat(object):
"""Dummy float class for testing comparisons with Fractions"""
@@ -81,30 +81,6 @@ class DummyRational(object):
class DummyFraction(fractions.Fraction):
"""Dummy Fraction subclass for copy and deepcopy testing."""
-class GcdTest(unittest.TestCase):
-
- def testMisc(self):
- # fractions.gcd() is deprecated
- with self.assertWarnsRegex(DeprecationWarning, r'fractions\.gcd'):
- gcd(1, 1)
- with warnings.catch_warnings():
- warnings.filterwarnings('ignore', r'fractions\.gcd',
- DeprecationWarning)
- self.assertEqual(0, gcd(0, 0))
- self.assertEqual(1, gcd(1, 0))
- self.assertEqual(-1, gcd(-1, 0))
- self.assertEqual(1, gcd(0, 1))
- self.assertEqual(-1, gcd(0, -1))
- self.assertEqual(1, gcd(7, 1))
- self.assertEqual(-1, gcd(7, -1))
- self.assertEqual(1, gcd(-23, 15))
- self.assertEqual(12, gcd(120, 84))
- self.assertEqual(-12, gcd(84, -120))
- self.assertEqual(gcd(120.0, 84), 12.0)
- self.assertEqual(gcd(120, 84.0), 12.0)
- self.assertEqual(gcd(F(120), F(84)), F(12))
- self.assertEqual(gcd(F(120, 77), F(84, 55)), F(12, 385))
-
def _components(r):
return (r.numerator, r.denominator)
@@ -690,5 +666,6 @@ class FractionTest(unittest.TestCase):
r = F(13, 7)
self.assertRaises(AttributeError, setattr, r, 'a', 10)
+
if __name__ == '__main__':
unittest.main()
diff --git a/Misc/NEWS.d/next/Library/2020-01-16-09-15-40.bpo-39350.ZQx0uY.rst b/Misc/NEWS.d/next/Library/2020-01-16-09-15-40.bpo-39350.ZQx0uY.rst
new file mode 100644
index 0000000..264e52f
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-01-16-09-15-40.bpo-39350.ZQx0uY.rst
@@ -0,0 +1,2 @@
+Remove ``fractions.gcd()`` function, deprecated since Python 3.5
+(:issue:`22486`): use :func:`math.gcd` instead.