: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()
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:
__all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar']
+import os
import copy
import datetime
import re
"""
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)
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,
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