Kaydet (Commit) 4b219ce8 authored tarafından Stéphane Wirtel's avatar Stéphane Wirtel Kaydeden (comit) Miss Islington (bot)

bpo-36043: FileCookieJar supports os.PathLike (GH-11945)



https://bugs.python.org/issue36043
üst bda918bf
...@@ -71,6 +71,10 @@ The following classes are provided: ...@@ -71,6 +71,10 @@ The following classes are provided:
:meth:`load` or :meth:`revert` method is called. Subclasses of this class are :meth:`load` or :meth:`revert` method is called. Subclasses of this class are
documented in section :ref:`file-cookie-jar-classes`. documented in section :ref:`file-cookie-jar-classes`.
.. versionchanged:: 3.8
The filename parameter supports a :term:`path-like object`.
.. class:: CookiePolicy() .. class:: CookiePolicy()
...@@ -341,6 +345,9 @@ writing. ...@@ -341,6 +345,9 @@ writing.
compatible with the libwww-perl library's ``Set-Cookie3`` file format. This is 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. 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: .. _cookie-policy-objects:
......
...@@ -28,6 +28,7 @@ http://wwwsearch.sf.net/): ...@@ -28,6 +28,7 @@ http://wwwsearch.sf.net/):
__all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy', __all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar'] 'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar']
import os
import copy import copy
import datetime import datetime
import re import re
...@@ -1762,10 +1763,7 @@ class FileCookieJar(CookieJar): ...@@ -1762,10 +1763,7 @@ class FileCookieJar(CookieJar):
""" """
CookieJar.__init__(self, policy) CookieJar.__init__(self, policy)
if filename is not None: if filename is not None:
try: filename = os.fspath(filename)
filename+""
except:
raise ValueError("filename must be string-like")
self.filename = filename self.filename = filename
self.delayload = bool(delayload) self.delayload = bool(delayload)
......
...@@ -6,6 +6,7 @@ import test.support ...@@ -6,6 +6,7 @@ import test.support
import time import time
import unittest import unittest
import urllib.request import urllib.request
import pathlib
from http.cookiejar import (time2isoz, http2time, iso2time, time2netscape, from http.cookiejar import (time2isoz, http2time, iso2time, time2netscape,
parse_ns_headers, join_header_words, split_header_words, Cookie, parse_ns_headers, join_header_words, split_header_words, Cookie,
...@@ -313,6 +314,30 @@ def _interact(cookiejar, url, set_cookie_hdrs, hdr_name): ...@@ -313,6 +314,30 @@ def _interact(cookiejar, url, set_cookie_hdrs, hdr_name):
class FileCookieJarTests(unittest.TestCase): 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): def test_lwp_valueless_cookie(self):
# cookies with no value should be saved and loaded consistently # cookies with no value should be saved and loaded consistently
filename = test.support.TESTFN filename = test.support.TESTFN
......
:class:`FileCookieJar` supports :term:`path-like object`. Contributed by Stéphane Wirtel
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment