bpo-33262: Deprecate passing None for `s` to shlex.split() (GH-6514)
* bpo-33262: Deprecate passing None for `s` to shlex.split() This reads the string to split from standard input. * Update What's New. * Fix shlex.rst
This commit is contained in:
parent
7c72383f95
commit
975ac326ff
|
@ -36,6 +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.
|
||||
|
||||
.. function:: join(split_command)
|
||||
|
||||
|
|
|
@ -624,6 +624,9 @@ Deprecated
|
|||
by :c:func:`Py_Initialize()` since Python 3.7.
|
||||
(Contributed by Victor Stinner in :issue:`39877`.)
|
||||
|
||||
* Passing ``None`` as the first argument to the :func:`shlex.split` function
|
||||
has been deprecated. (Contributed by Zackery Spytz in :issue:`33262`.)
|
||||
|
||||
|
||||
Removed
|
||||
=======
|
||||
|
|
|
@ -304,6 +304,10 @@ 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)
|
||||
lex = shlex(s, posix=posix)
|
||||
lex.whitespace_split = True
|
||||
if not comments:
|
||||
|
|
|
@ -3,7 +3,7 @@ import itertools
|
|||
import shlex
|
||||
import string
|
||||
import unittest
|
||||
|
||||
from unittest import mock
|
||||
|
||||
|
||||
# The original test data set was from shellwords, by Hartmut Goebel.
|
||||
|
@ -162,6 +162,11 @@ class ShlexTest(unittest.TestCase):
|
|||
tok = lex.get_token()
|
||||
return ret
|
||||
|
||||
@mock.patch('sys.stdin', io.StringIO())
|
||||
def testSplitNoneDeprecation(self):
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
shlex.split(None)
|
||||
|
||||
def testSplitPosix(self):
|
||||
"""Test data splitting with posix parser"""
|
||||
self.splitTest(self.posix_data, comments=True)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Deprecate passing None as an argument for :func:`shlex.split()`'s ``s``
|
||||
parameter. Patch by Zackery Spytz.
|
Loading…
Reference in New Issue