gh-116349: Deprecate `platform.java_ver` function (#116471)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Nikita Sobolev 2024-03-08 11:14:17 +03:00 committed by GitHub
parent 4d952737e6
commit 0b647141d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 26 additions and 4 deletions

View File

@ -196,6 +196,10 @@ Java Platform
``(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
----------------

View File

@ -814,6 +814,10 @@ Deprecated
* The undocumented and unused ``tarfile`` attribute of :class:`tarfile.TarFile`
is deprecated and scheduled for removal in Python 3.16.
* :func:`platform.java_ver` is deprecated and will be removed in 3.15.
It was largely untested, had a confusing API,
and was only useful for Jython support.
(Contributed by Nikita Sobolev in :gh:`116349`.)
Pending Removal in Python 3.14
------------------------------
@ -973,6 +977,11 @@ Pending Removal in Python 3.15
They will be removed in Python 3.15.
(Contributed by Victor Stinner in :gh:`105096`.)
* :func:`platform.java_ver` is deprecated and will be removed in 3.15.
It was largely untested, had a confusing API,
and was only useful for Jython support.
(Contributed by Nikita Sobolev in :gh:`116349`.)
Pending Removal in Python 3.16
------------------------------

View File

@ -503,7 +503,7 @@ def mac_ver(release='', versioninfo=('', '', ''), machine=''):
return release, versioninfo, machine
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)
@ -525,6 +525,8 @@ def java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', '')):
given as parameters (which all default to '').
"""
import warnings
warnings._deprecated('java_ver', remove=(3, 15))
# Import the needed APIs
try:
import java.lang

View File

@ -318,9 +318,13 @@ class PlatformTest(unittest.TestCase):
platform._uname_cache = None
def test_java_ver(self):
res = platform.java_ver()
if sys.platform == 'java': # Is never actually checked in CI
self.assertTrue(all(res))
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)
def test_win32_ver(self):
res = platform.win32_ver()

View File

@ -0,0 +1,3 @@
:func:`platform.java_ver` is deprecated and will be removed in 3.15.
It was largely untested, had a confusing API,
and was only useful for Jython support.