summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-07-04 13:29:19 (GMT)
committerGitHub <noreply@github.com>2022-07-04 13:29:19 (GMT)
commitfbcee570d1e15e5260a456cb71c8b0897dc76237 (patch)
tree0f59827fabc49ed3e88724ed3bbcced7ff4fe8f3
parent670f7f10cf9cd7bdde9e62660d85506823f5bf7c (diff)
downloadcpython-fbcee570d1e15e5260a456cb71c8b0897dc76237.zip
cpython-fbcee570d1e15e5260a456cb71c8b0897dc76237.tar.gz
cpython-fbcee570d1e15e5260a456cb71c8b0897dc76237.tar.bz2
gh-94352: shlex.split() no longer accepts None (#94353)
shlex.split(): Passing None for s argument now raises an exception, rather than reading sys.stdin. The feature was deprecated in Python 3.9.
-rw-r--r--Doc/library/shlex.rst6
-rw-r--r--Doc/whatsnew/3.12.rst5
-rw-r--r--Lib/shlex.py4
-rw-r--r--Lib/test/test_shlex.py5
-rw-r--r--Misc/NEWS.d/next/Library/2022-06-28-00-24-48.gh-issue-94352.JY1Ayt.rst3
5 files changed, 14 insertions, 9 deletions
diff --git a/Doc/library/shlex.rst b/Doc/library/shlex.rst
index aab6a54..0bad518 100644
--- a/Doc/library/shlex.rst
+++ b/Doc/library/shlex.rst
@@ -36,9 +36,9 @@ The :mod:`shlex` module defines the following functions:
instance, passing ``None`` for *s* will read the string to split from
standard input.
- .. deprecated:: 3.9
- Passing ``None`` for *s* will raise an exception in future Python
- versions.
+ .. versionchanged:: 3.12
+ Passing ``None`` for *s* argument now raises an exception, rather than
+ reading :data:`sys.stdin`.
.. function:: join(split_command)
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 620aa91..ed21aba 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -324,6 +324,11 @@ Changes in the Python API
to :term:`filesystem encoding and error handler`.
Argument files should be encoded in UTF-8 instead of ANSI Codepage on Windows.
+* :func:`shlex.split`: Passing ``None`` for *s* argument now raises an
+ exception, rather than reading :data:`sys.stdin`. The feature was deprecated
+ in Python 3.9.
+ (Contributed by Victor Stinner in :gh:`94352`.)
+
Build Changes
=============
diff --git a/Lib/shlex.py b/Lib/shlex.py
index 4801a6c..a91c9b0 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -305,9 +305,7 @@ class shlex:
def split(s, comments=False, posix=True):
"""Split the string *s* using shell-like syntax."""
if s is None:
- import warnings
- warnings.warn("Passing None for 's' to shlex.split() is deprecated.",
- DeprecationWarning, stacklevel=2)
+ raise ValueError("s argument must not be None")
lex = shlex(s, posix=posix)
lex.whitespace_split = True
if not comments:
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
index 3081a78..92598db 100644
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -162,9 +162,8 @@ class ShlexTest(unittest.TestCase):
tok = lex.get_token()
return ret
- @mock.patch('sys.stdin', io.StringIO())
- def testSplitNoneDeprecation(self):
- with self.assertWarns(DeprecationWarning):
+ def testSplitNone(self):
+ with self.assertRaises(ValueError):
shlex.split(None)
def testSplitPosix(self):
diff --git a/Misc/NEWS.d/next/Library/2022-06-28-00-24-48.gh-issue-94352.JY1Ayt.rst b/Misc/NEWS.d/next/Library/2022-06-28-00-24-48.gh-issue-94352.JY1Ayt.rst
new file mode 100644
index 0000000..3a166ab
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-06-28-00-24-48.gh-issue-94352.JY1Ayt.rst
@@ -0,0 +1,3 @@
+:func:`shlex.split`: Passing ``None`` for *s* argument now raises an exception,
+rather than reading :data:`sys.stdin`. The feature was deprecated in Python
+3.9. Patch by Victor Stinner.