From 4f0b53eddf0d3b3d17eb616ab86c105aa758fdfa Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Sun, 11 May 2025 12:49:06 +0200 Subject: [PATCH 1/9] remove deprecated `java_ver` function and update related documentation --- Doc/deprecations/pending-removal-in-3.15.rst | 2 +- Doc/library/platform.rst | 18 ------ Doc/whatsnew/3.15.rst | 6 ++ Lib/platform.py | 66 +------------------- Lib/test/test_platform.py | 9 --- 5 files changed, 9 insertions(+), 92 deletions(-) diff --git a/Doc/deprecations/pending-removal-in-3.15.rst b/Doc/deprecations/pending-removal-in-3.15.rst index c80588b27b635a..df6f18ee5c2069 100644 --- a/Doc/deprecations/pending-removal-in-3.15.rst +++ b/Doc/deprecations/pending-removal-in-3.15.rst @@ -51,7 +51,7 @@ Pending removal in Python 3.15 * :mod:`platform`: - * :func:`~platform.java_ver` has been deprecated since Python 3.13. + * :func:`!platform.java_ver` has been deprecated since Python 3.13. This function is only useful for Jython support, has a confusing API, and is largely untested. diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst index 5c999054323be5..06de152a742f28 100644 --- a/Doc/library/platform.rst +++ b/Doc/library/platform.rst @@ -188,24 +188,6 @@ Cross platform :attr:`processor` is resolved late instead of immediately. -Java platform -------------- - - -.. function:: java_ver(release='', vendor='', vminfo=('','',''), osinfo=('','','')) - - Version interface for Jython. - - Returns a tuple ``(release, vendor, vminfo, osinfo)`` with *vminfo* being a - tuple ``(vm_name, vm_release, vm_vendor)`` and *osinfo* being a tuple - ``(os_name, os_version, os_arch)``. Values which cannot be determined are set to - the defaults given as parameters (which all default to ``''``). - - .. deprecated-removed:: 3.13 3.15 - It was largely untested, had a confusing API, - and was only useful for Jython support. - - Windows platform ---------------- diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 5a9bf1ae3c97bf..9eab77cda50cd9 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -121,6 +121,12 @@ Deprecated Removed ======= +platform +--------- + +* The deprecated :func:`!platform.java_ver` function. + + sysconfig --------- diff --git a/Lib/platform.py b/Lib/platform.py index 55e211212d4209..9d334592950954 100644 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -31,6 +31,7 @@ # # # +# 1.1.0 - removed deprecated java_ver() # 1.0.9 - added invalidate_caches() function to invalidate cached values # 1.0.8 - changed Windows support to read version from kernel32.dll # 1.0.7 - added DEV_NULL @@ -110,7 +111,7 @@ """ -__version__ = '1.0.9' +__version__ = '1.1.0' import collections import os @@ -528,53 +529,6 @@ def ios_ver(system="", release="", model="", is_simulator=False): return IOSVersionInfo(system, release, model, is_simulator) -def _java_getprop(name, default): - """This private helper is deprecated in 3.13 and will be removed in 3.15""" - from java.lang import System - try: - value = System.getProperty(name) - if value is None: - return default - return value - except AttributeError: - return default - -def java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', '')): - - """ Version interface for Jython. - - Returns a tuple (release, vendor, vminfo, osinfo) with vminfo being - a tuple (vm_name, vm_release, vm_vendor) and osinfo being a - tuple (os_name, os_version, os_arch). - - Values which cannot be determined are set to the defaults - given as parameters (which all default to ''). - - """ - import warnings - warnings._deprecated('java_ver', remove=(3, 15)) - # Import the needed APIs - try: - import java.lang # noqa: F401 - except ImportError: - return release, vendor, vminfo, osinfo - - vendor = _java_getprop('java.vendor', vendor) - release = _java_getprop('java.version', release) - vm_name, vm_release, vm_vendor = vminfo - vm_name = _java_getprop('java.vm.name', vm_name) - vm_vendor = _java_getprop('java.vm.vendor', vm_vendor) - vm_release = _java_getprop('java.vm.version', vm_release) - vminfo = vm_name, vm_release, vm_vendor - os_name, os_version, os_arch = osinfo - os_arch = _java_getprop('java.os.arch', os_arch) - os_name = _java_getprop('java.os.name', os_name) - os_version = _java_getprop('java.os.version', os_version) - osinfo = os_name, os_version, os_arch - - return release, vendor, vminfo, osinfo - - AndroidVer = collections.namedtuple( "AndroidVer", "release api_level manufacturer model device is_emulator") @@ -1034,13 +988,6 @@ def uname(): version = '16bit' system = 'Windows' - elif system[:4] == 'java': - release, vendor, vminfo, osinfo = java_ver() - system = 'Java' - version = ', '.join(vminfo) - if not version: - version = vendor - # System specific extensions if system == 'OpenVMS': # OpenVMS seems to have release and version mixed up @@ -1370,15 +1317,6 @@ def platform(aliased=False, terse=False): platform = _platform(system, release, machine, processor, 'with', libcname+libcversion) - elif system == 'Java': - # Java platforms - r, v, vminfo, (os_name, os_version, os_arch) = java_ver() - if terse or not os_name: - platform = _platform(system, release, version) - else: - platform = _platform(system, release, version, - 'on', - os_name, os_version, os_arch) else: # Generic handler diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 818e807dd3a6fb..3b673a47c8c137 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -383,15 +383,6 @@ def raises_oserror(*a): finally: platform._uname_cache = None - def test_java_ver(self): - import re - msg = re.escape( - "'java_ver' is deprecated and slated for removal in Python 3.15" - ) - with self.assertWarnsRegex(DeprecationWarning, msg): - res = platform.java_ver() - self.assertEqual(len(res), 4) - @unittest.skipUnless(support.MS_WINDOWS, 'This test only makes sense on Windows') def test_win32_ver(self): release1, version1, csd1, ptype1 = 'a', 'b', 'c', 'd' From 373fe6a86ac7a7351074ae222f977c5317fca01d Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Sun, 11 May 2025 12:57:06 +0200 Subject: [PATCH 2/9] remove deprecated `java_ver` function from documentation --- .../next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst diff --git a/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst new file mode 100644 index 00000000000000..c428e22d310af4 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst @@ -0,0 +1 @@ +Remove deprecated function :func:`!platform.java_ver`. From b50dbed5c09a1d17871b99b6f27dddd607144b96 Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Sun, 11 May 2025 13:01:37 +0200 Subject: [PATCH 3/9] deprecate `platform.java_ver` function for removal in Python 3.15 --- Doc/whatsnew/3.13.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst index b3530f75b2fa40..2b2ccfff1b7bd5 100644 --- a/Doc/whatsnew/3.13.rst +++ b/Doc/whatsnew/3.13.rst @@ -1908,7 +1908,7 @@ New Deprecations * :mod:`platform`: - * Deprecate :func:`~platform.java_ver`, + * Deprecate :func:`!platform.java_ver`, to be removed in Python 3.15. This function is only useful for Jython support, has a confusing API, and is largely untested. From cbc4dd466509eb2a8d4f18be9b4752b8b72d1dd6 Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Sun, 11 May 2025 13:31:35 +0200 Subject: [PATCH 4/9] update formatting for deprecated `platform.java_ver` function section in 3.15 release notes --- Doc/whatsnew/3.15.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 9eab77cda50cd9..fbfcd66c8f8d71 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -122,7 +122,7 @@ Removed ======= platform ---------- +-------- * The deprecated :func:`!platform.java_ver` function. From 2c9d038b71c3f9e9a62f1222d1ec2c05197b66a8 Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Tue, 13 May 2025 14:31:56 +0200 Subject: [PATCH 5/9] update removal notice for deprecated `platform.java_ver` function in 3.15 release notes --- Doc/whatsnew/3.15.rst | 3 ++- Lib/platform.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index fbfcd66c8f8d71..ed5daff78b367f 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -124,7 +124,8 @@ Removed platform -------- -* The deprecated :func:`!platform.java_ver` function. +* Removed the deprecated :func:`!platform.java_ver` function. + (Contributed by Alexey Makridenko in :gh:`133888`.) sysconfig diff --git a/Lib/platform.py b/Lib/platform.py index 9d334592950954..077db81264a57c 100644 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -29,9 +29,8 @@ # # History: # -# +# # -# 1.1.0 - removed deprecated java_ver() # 1.0.9 - added invalidate_caches() function to invalidate cached values # 1.0.8 - changed Windows support to read version from kernel32.dll # 1.0.7 - added DEV_NULL From e0c4870476feaa0550929b9d8e9642d4aa4090fa Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Fri, 16 May 2025 13:47:35 +0200 Subject: [PATCH 6/9] clarify removal notice for deprecated `platform.java_ver` function in 3.15 release notes --- Doc/whatsnew/3.15.rst | 4 ++-- .../Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 880df2e28c4374..03b2dd483bf517 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -124,8 +124,8 @@ Removed platform -------- -* Removed the deprecated :func:`!platform.java_ver` function. - (Contributed by Alexey Makridenko in :gh:`133888`.) +* Removed the deprecated :func:`!platform.java_ver` function, which was deprecated since Python 3.13. + (Contributed by Alexey Makridenko in :gh:`133604`.) sysconfig diff --git a/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst index c428e22d310af4..88a8bd0c432a1e 100644 --- a/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst +++ b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst @@ -1 +1 @@ -Remove deprecated function :func:`!platform.java_ver`. +Remove :func:`!platform.java_ver` which was deprecated since Python 3.13. \ No newline at end of file From 054efed17f7808511b74a96d92df0e8ee677abf5 Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Fri, 16 May 2025 13:53:00 +0200 Subject: [PATCH 7/9] add blank line --- .../next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst index 88a8bd0c432a1e..526ac38f09bab3 100644 --- a/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst +++ b/Misc/NEWS.d/next/Library/2025-05-11-12-56-52.gh-issue-133604.kFxhc8.rst @@ -1 +1 @@ -Remove :func:`!platform.java_ver` which was deprecated since Python 3.13. \ No newline at end of file +Remove :func:`!platform.java_ver` which was deprecated since Python 3.13. From 3a709ab9d9231f33f3c236785e36ff555ef22a9a Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Fri, 16 May 2025 13:54:42 +0200 Subject: [PATCH 8/9] reformat removal notice --- Doc/whatsnew/3.15.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 03b2dd483bf517..f091671faa77b8 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -124,7 +124,8 @@ Removed platform -------- -* Removed the deprecated :func:`!platform.java_ver` function, which was deprecated since Python 3.13. +* Removed the :func:`!platform.java_ver` function, + which was deprecated since Python 3.13. (Contributed by Alexey Makridenko in :gh:`133604`.) From d50237c78155eb73737699dc37abba20394fdba9 Mon Sep 17 00:00:00 2001 From: Alexey Makridenko Date: Fri, 16 May 2025 13:58:25 +0200 Subject: [PATCH 9/9] lint fix --- Doc/whatsnew/3.15.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index f091671faa77b8..e7dfd6d14a9e0d 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -124,7 +124,7 @@ Removed platform -------- -* Removed the :func:`!platform.java_ver` function, +* Removed the :func:`!platform.java_ver` function, which was deprecated since Python 3.13. (Contributed by Alexey Makridenko in :gh:`133604`.)