Skip to content

Commit c88772e

Browse files
Issue #29192: Removed deprecated features in the http.cookies module.
1 parent 3e03eaa commit c88772e

5 files changed

Lines changed: 22 additions & 57 deletions

File tree

Doc/library/http.cookies.rst

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -148,39 +148,31 @@ Morsel Objects
148148
:meth:`~Morsel.__eq__` now takes :attr:`~Morsel.key` and :attr:`~Morsel.value`
149149
into account.
150150

151+
.. versionchanged:: 3.7
152+
Attributes :attr:`~Morsel.key`, :attr:`~Morsel.value` and
153+
:attr:`~Morsel.coded_value` are read-only. Use :meth:`~Morsel.set` for
154+
setting them.
155+
151156

152157
.. attribute:: Morsel.value
153158

154159
The value of the cookie.
155160

156-
.. deprecated:: 3.5
157-
assigning to ``value``; use :meth:`~Morsel.set` instead.
158-
159161

160162
.. attribute:: Morsel.coded_value
161163

162164
The encoded value of the cookie --- this is what should be sent.
163165

164-
.. deprecated:: 3.5
165-
assigning to ``coded_value``; use :meth:`~Morsel.set` instead.
166-
167166

168167
.. attribute:: Morsel.key
169168

170169
The name of the cookie.
171170

172-
.. deprecated:: 3.5
173-
assigning to ``key``; use :meth:`~Morsel.set` instead.
174-
175171

176172
.. method:: Morsel.set(key, value, coded_value)
177173

178174
Set the *key*, *value* and *coded_value* attributes.
179175

180-
.. deprecated:: 3.5
181-
The undocumented *LegalChars* parameter is ignored and will be removed in
182-
a future version.
183-
184176

185177
.. method:: Morsel.isReservedKey(K)
186178

Doc/whatsnew/3.7.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,10 @@ Changes in the Python API
153153
* A format string argument for :meth:`string.Formatter.format`
154154
is now :ref:`positional-only <positional-only_parameter>`.
155155
(Contributed by Serhiy Storchaka in :issue:`29193`.)
156+
157+
* Attributes :attr:`~http.cookies.Morsel.key`,
158+
:attr:`~http.cookies.Morsel.value` and
159+
:attr:`~http.cookies.Morsel.coded_value` of class
160+
:class:`http.cookies.Morsel` are now read-only.
161+
Use the :meth:`~http.cookies.Morsel.set` method for setting them.
162+
(Contributed by Serhiy Storchaka in :issue:`29192`.)

Lib/http/cookies.py

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,6 @@
138138
_semispacejoin = '; '.join
139139
_spacejoin = ' '.join
140140

141-
def _warn_deprecated_setter(setter):
142-
import warnings
143-
msg = ('The .%s setter is deprecated. The attribute will be read-only in '
144-
'future releases. Please use the set() method instead.' % setter)
145-
warnings.warn(msg, DeprecationWarning, stacklevel=3)
146-
147141
#
148142
# Define an exception visible to External modules
149143
#
@@ -303,29 +297,14 @@ def __init__(self):
303297
def key(self):
304298
return self._key
305299

306-
@key.setter
307-
def key(self, key):
308-
_warn_deprecated_setter('key')
309-
self._key = key
310-
311300
@property
312301
def value(self):
313302
return self._value
314303

315-
@value.setter
316-
def value(self, value):
317-
_warn_deprecated_setter('value')
318-
self._value = value
319-
320304
@property
321305
def coded_value(self):
322306
return self._coded_value
323307

324-
@coded_value.setter
325-
def coded_value(self, coded_value):
326-
_warn_deprecated_setter('coded_value')
327-
self._coded_value = coded_value
328-
329308
def __setitem__(self, K, V):
330309
K = K.lower()
331310
if not K in self._reserved:
@@ -366,14 +345,7 @@ def update(self, values):
366345
def isReservedKey(self, K):
367346
return K.lower() in self._reserved
368347

369-
def set(self, key, val, coded_val, LegalChars=_LegalChars):
370-
if LegalChars != _LegalChars:
371-
import warnings
372-
warnings.warn(
373-
'LegalChars parameter is deprecated, ignored and will '
374-
'be removed in future versions.', DeprecationWarning,
375-
stacklevel=2)
376-
348+
def set(self, key, val, coded_val):
377349
if key.lower() in self._reserved:
378350
raise CookieError('Attempt to set a reserved key %r' % (key,))
379351
if not _is_legal_key(key):

Lib/test/test_http_cookies.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@
99

1010
class CookieTests(unittest.TestCase):
1111

12-
def setUp(self):
13-
self._warnings_manager = check_warnings()
14-
self._warnings_manager.__enter__()
15-
warnings.filterwarnings("ignore", ".* class is insecure.*",
16-
DeprecationWarning)
17-
18-
def tearDown(self):
19-
self._warnings_manager.__exit__(None, None, None)
20-
2112
def test_basic(self):
2213
cases = [
2314
{'data': 'chips=ahoy; vienna=finger',
@@ -256,6 +247,9 @@ def test_setter(self):
256247
# Check output and js_output.
257248
M['path'] = '/foo' # Try a reserved key as well
258249
M.set(i, "%s_val" % i, "%s_coded_val" % i)
250+
self.assertEqual(M.key, i)
251+
self.assertEqual(M.value, "%s_val" % i)
252+
self.assertEqual(M.coded_value, "%s_coded_val" % i)
259253
self.assertEqual(
260254
M.output(),
261255
"Set-Cookie: %s=%s; Path=/foo" % (i, "%s_coded_val" % i))
@@ -272,16 +266,14 @@ def test_setter(self):
272266
self.assertRaises(cookies.CookieError,
273267
M.set, i, '%s_value' % i, '%s_value' % i)
274268

275-
def test_deprecation(self):
269+
def test_set_properties(self):
276270
morsel = cookies.Morsel()
277-
with self.assertWarnsRegex(DeprecationWarning, r'\bkey\b'):
271+
with self.assertRaises(AttributeError):
278272
morsel.key = ''
279-
with self.assertWarnsRegex(DeprecationWarning, r'\bvalue\b'):
273+
with self.assertRaises(AttributeError):
280274
morsel.value = ''
281-
with self.assertWarnsRegex(DeprecationWarning, r'\bcoded_value\b'):
275+
with self.assertRaises(AttributeError):
282276
morsel.coded_value = ''
283-
with self.assertWarnsRegex(DeprecationWarning, r'\bLegalChars\b'):
284-
morsel.set('key', 'value', 'coded_value', LegalChars='.*')
285277

286278
def test_eq(self):
287279
base_case = ('key', 'value', '"value"')

Misc/NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ Core and Builtins
212212
Library
213213
-------
214214

215+
- Issue #29192: Removed deprecated features in the http.cookies module.
216+
215217
- Issue #29193: A format string argument for string.Formatter.format()
216218
is now positional-only.
217219

0 commit comments

Comments
 (0)