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
|
instance, passing ``None`` for *s* will read the string to split from
|
||||||
standard input.
|
standard input.
|
||||||
|
|
||||||
|
.. deprecated:: 3.9
|
||||||
|
Passing ``None`` for *s* will raise an exception in future Python
|
||||||
|
versions.
|
||||||
|
|
||||||
.. function:: join(split_command)
|
.. function:: join(split_command)
|
||||||
|
|
||||||
|
|
|
@ -624,6 +624,9 @@ Deprecated
|
||||||
by :c:func:`Py_Initialize()` since Python 3.7.
|
by :c:func:`Py_Initialize()` since Python 3.7.
|
||||||
(Contributed by Victor Stinner in :issue:`39877`.)
|
(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
|
Removed
|
||||||
=======
|
=======
|
||||||
|
|
|
@ -304,6 +304,10 @@ class shlex:
|
||||||
|
|
||||||
def split(s, comments=False, posix=True):
|
def split(s, comments=False, posix=True):
|
||||||
"""Split the string *s* using shell-like syntax."""
|
"""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 = shlex(s, posix=posix)
|
||||||
lex.whitespace_split = True
|
lex.whitespace_split = True
|
||||||
if not comments:
|
if not comments:
|
||||||
|
|
|
@ -3,7 +3,7 @@ import itertools
|
||||||
import shlex
|
import shlex
|
||||||
import string
|
import string
|
||||||
import unittest
|
import unittest
|
||||||
|
from unittest import mock
|
||||||
|
|
||||||
|
|
||||||
# The original test data set was from shellwords, by Hartmut Goebel.
|
# The original test data set was from shellwords, by Hartmut Goebel.
|
||||||
|
@ -162,6 +162,11 @@ class ShlexTest(unittest.TestCase):
|
||||||
tok = lex.get_token()
|
tok = lex.get_token()
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@mock.patch('sys.stdin', io.StringIO())
|
||||||
|
def testSplitNoneDeprecation(self):
|
||||||
|
with self.assertWarns(DeprecationWarning):
|
||||||
|
shlex.split(None)
|
||||||
|
|
||||||
def testSplitPosix(self):
|
def testSplitPosix(self):
|
||||||
"""Test data splitting with posix parser"""
|
"""Test data splitting with posix parser"""
|
||||||
self.splitTest(self.posix_data, comments=True)
|
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