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.
This commit is contained in:
Victor Stinner 2022-07-04 15:29:19 +02:00 committed by GitHub
parent 670f7f10cf
commit fbcee570d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 9 deletions

View File

@ -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)

View File

@ -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
=============

View File

@ -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:

View File

@ -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):

View File

@ -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.