bpo-36043: FileCookieJar supports os.PathLike (GH-11945)
https://bugs.python.org/issue36043
This commit is contained in:
parent
bda918bf65
commit
4b219ce81e
|
@ -71,6 +71,10 @@ The following classes are provided:
|
|||
:meth:`load` or :meth:`revert` method is called. Subclasses of this class are
|
||||
documented in section :ref:`file-cookie-jar-classes`.
|
||||
|
||||
.. versionchanged:: 3.8
|
||||
|
||||
The filename parameter supports a :term:`path-like object`.
|
||||
|
||||
|
||||
.. class:: CookiePolicy()
|
||||
|
||||
|
@ -341,6 +345,9 @@ writing.
|
|||
compatible with the libwww-perl library's ``Set-Cookie3`` file format. This is
|
||||
convenient if you want to store cookies in a human-readable file.
|
||||
|
||||
.. versionchanged:: 3.8
|
||||
|
||||
The filename parameter supports a :term:`path-like object`.
|
||||
|
||||
.. _cookie-policy-objects:
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ http://wwwsearch.sf.net/):
|
|||
__all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
|
||||
'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar']
|
||||
|
||||
import os
|
||||
import copy
|
||||
import datetime
|
||||
import re
|
||||
|
@ -1762,10 +1763,7 @@ class FileCookieJar(CookieJar):
|
|||
"""
|
||||
CookieJar.__init__(self, policy)
|
||||
if filename is not None:
|
||||
try:
|
||||
filename+""
|
||||
except:
|
||||
raise ValueError("filename must be string-like")
|
||||
filename = os.fspath(filename)
|
||||
self.filename = filename
|
||||
self.delayload = bool(delayload)
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import test.support
|
|||
import time
|
||||
import unittest
|
||||
import urllib.request
|
||||
import pathlib
|
||||
|
||||
from http.cookiejar import (time2isoz, http2time, iso2time, time2netscape,
|
||||
parse_ns_headers, join_header_words, split_header_words, Cookie,
|
||||
|
@ -313,6 +314,30 @@ def _interact(cookiejar, url, set_cookie_hdrs, hdr_name):
|
|||
|
||||
|
||||
class FileCookieJarTests(unittest.TestCase):
|
||||
def test_constructor_with_str(self):
|
||||
filename = test.support.TESTFN
|
||||
c = LWPCookieJar(filename)
|
||||
self.assertEqual(c.filename, filename)
|
||||
|
||||
def test_constructor_with_path_like(self):
|
||||
filename = pathlib.Path(test.support.TESTFN)
|
||||
c = LWPCookieJar(filename)
|
||||
self.assertEqual(c.filename, os.fspath(filename))
|
||||
|
||||
def test_constructor_with_none(self):
|
||||
c = LWPCookieJar(None)
|
||||
self.assertIsNone(c.filename)
|
||||
|
||||
def test_constructor_with_other_types(self):
|
||||
class A:
|
||||
pass
|
||||
|
||||
for type_ in (int, float, A):
|
||||
with self.subTest(filename=type_):
|
||||
with self.assertRaises(TypeError):
|
||||
instance = type_()
|
||||
c = LWPCookieJar(filename=instance)
|
||||
|
||||
def test_lwp_valueless_cookie(self):
|
||||
# cookies with no value should be saved and loaded consistently
|
||||
filename = test.support.TESTFN
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
:class:`FileCookieJar` supports :term:`path-like object`. Contributed by Stéphane Wirtel
|
Loading…
Reference in New Issue