From 2f3742b0d8dbe025f2f9e496938a6d344e6881ad Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Wed, 13 May 2015 12:32:20 +0300 Subject: [PATCH] Issue #1322: platform.dist() and platform.linux_distribution() functions are now deprecated. Initial patch by Vajrasky Kok. --- Doc/library/platform.rst | 4 ++++ Doc/whatsnew/3.5.rst | 5 +++++ Lib/platform.py | 19 ++++++++++++++++--- Lib/test/test_platform.py | 24 +++++++++++++++++++----- Misc/NEWS | 3 +++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst index e27f2ad8b0e..679cc6b23ca 100644 --- a/Doc/library/platform.rst +++ b/Doc/library/platform.rst @@ -247,6 +247,8 @@ Unix Platforms This is another name for :func:`linux_distribution`. + .. deprecated-removed:: 3.5 3.7 + .. function:: linux_distribution(distname='', version='', id='', supported_dists=('SuSE','debian','redhat','mandrake',...), full_distribution_name=1) Tries to determine the name of the Linux OS distribution name. @@ -263,6 +265,8 @@ Unix Platforms parameters. ``id`` is the item in parentheses after the version number. It is usually the version codename. + .. deprecated-removed:: 3.5 3.7 + .. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=2048) Tries to determine the libc version against which the file executable (defaults diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index a29ff106360..b7883652b5d 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -700,6 +700,11 @@ Deprecated Python modules, functions and methods :meth:`~string.Formatter.format` method of the :class:`string.Formatter` class has been deprecated. +* :func:`platform.dist` and :func:`platform.linux_distribution` functions are + now deprecated and will be removed in Python 3.7. Linux distributions use + too many different ways of describing themselves, so the functionality is + left to a package. + (Contributed by Vajrasky Kok and Berker Peksag in :issue:`1322`.) Deprecated functions and types of the C API ------------------------------------------- diff --git a/Lib/platform.py b/Lib/platform.py index b1c659ebbf4..52a009a3699 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -297,6 +297,15 @@ def linux_distribution(distname='', version='', id='', supported_dists=_supported_dists, full_distribution_name=1): + import warnings + warnings.warn("dist() and linux_distribution() functions are deprecated " + "in Python 3.5 and will be removed in Python 3.7", + PendingDeprecationWarning, stacklevel=2) + return _linux_distribution(distname, version, id, supported_dists, + full_distribution_name) + +def _linux_distribution(distname, version, id, supported_dists, + full_distribution_name): """ Tries to determine the name of the Linux OS distribution name. @@ -363,9 +372,13 @@ def dist(distname='', version='', id='', args given as parameters. """ - return linux_distribution(distname, version, id, - supported_dists=supported_dists, - full_distribution_name=0) + import warnings + warnings.warn("dist() and linux_distribution() functions are deprecated " + "in Python 3.5 and will be removed in Python 3.7", + PendingDeprecationWarning, stacklevel=2) + return _linux_distribution(distname, version, id, + supported_dists=supported_dists, + full_distribution_name=0) def popen(cmd, mode='r', bufsize=-1): diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index ededbdba421..f4ce36d35d0 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -311,10 +311,24 @@ class PlatformTest(unittest.TestCase): self.assertEqual(version, '19') self.assertEqual(distid, 'Schr\xf6dinger\u2019s Cat') -def test_main(): - support.run_unittest( - PlatformTest - ) + +class DeprecationTest(unittest.TestCase): + + def test_dist_deprecation(self): + with self.assertWarns(PendingDeprecationWarning) as cm: + platform.dist() + self.assertEqual(str(cm.warning), + 'dist() and linux_distribution() functions are ' + 'deprecated in Python 3.5 and will be removed in ' + 'Python 3.7') + + def test_linux_distribution_deprecation(self): + with self.assertWarns(PendingDeprecationWarning) as cm: + platform.linux_distribution() + self.assertEqual(str(cm.warning), + 'dist() and linux_distribution() functions are ' + 'deprecated in Python 3.5 and will be removed in ' + 'Python 3.7') if __name__ == '__main__': - test_main() + unittest.main() diff --git a/Misc/NEWS b/Misc/NEWS index 77e6f1d6553..b15d70f10df 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -45,6 +45,9 @@ Core and Builtins Library ------- +- Issue #1322: platform.dist() and platform.linux_distribution() functions are + now deprecated. Initial patch by Vajrasky Kok. + - Issue #22486: Added the math.gcd() function. The fractions.gcd() function now is deprecated. Based on patch by Mark Dickinson.