]> granicus.if.org Git - python/commitdiff
Patch #1478993: take advantage of BaseException/Exception split in cookielib
authorGeorg Brandl <georg@python.org>
Mon, 8 May 2006 17:48:01 +0000 (17:48 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 8 May 2006 17:48:01 +0000 (17:48 +0000)
Lib/_LWPCookieJar.py
Lib/_MozillaCookieJar.py
Lib/cookielib.py

index 6d5ce185e55b29a3f1341fe03a585fb02a2e8842..76da942a539505127cad08f578580050d0bdf92a 100644 (file)
@@ -12,9 +12,10 @@ libwww-perl, I hope.
 """
 
 import time, re, logging
-from cookielib import (reraise_unmasked_exceptions, FileCookieJar, LoadError,
-     Cookie, MISSING_FILENAME_TEXT, join_header_words, split_header_words,
-     iso2time, time2isoz)
+from cookielib import (_warn_unhandled_exception, FileCookieJar, LoadError,
+                       Cookie, MISSING_FILENAME_TEXT,
+                       join_header_words, split_header_words,
+                       iso2time, time2isoz)
 
 def lwp_cookie_str(cookie):
     """Return string representation of Cookie in an the LWP cookie file format.
@@ -92,7 +93,8 @@ class LWPCookieJar(FileCookieJar):
     def _really_load(self, f, filename, ignore_discard, ignore_expires):
         magic = f.readline()
         if not re.search(self.magic_re, magic):
-            msg = "%s does not seem to contain cookies" % filename
+            msg = ("%r does not look like a Set-Cookie3 (LWP) format "
+                   "file" % filename)
             raise LoadError(msg)
 
         now = time.time()
@@ -159,6 +161,10 @@ class LWPCookieJar(FileCookieJar):
                     if not ignore_expires and c.is_expired(now):
                         continue
                     self.set_cookie(c)
-        except:
-            reraise_unmasked_exceptions((IOError,))
-            raise LoadError("invalid Set-Cookie3 format file %s" % filename)
+
+        except IOError:
+            raise
+        except Exception:
+            _warn_unhandled_exception()
+            raise LoadError("invalid Set-Cookie3 format file %r: %r" %
+                            (filename, line))
index 4f2f3754d830daa59449983617bd3169782ed7be..d301374148123e4f08fc4812defed9e172d5db3b 100644 (file)
@@ -2,8 +2,8 @@
 
 import re, time, logging
 
-from cookielib import (reraise_unmasked_exceptions, FileCookieJar, LoadError,
-     Cookie, MISSING_FILENAME_TEXT)
+from cookielib import (_warn_unhandled_exception, FileCookieJar, LoadError,
+                       Cookie, MISSING_FILENAME_TEXT)
 
 class MozillaCookieJar(FileCookieJar):
     """
@@ -51,7 +51,7 @@ class MozillaCookieJar(FileCookieJar):
         if not re.search(self.magic_re, magic):
             f.close()
             raise LoadError(
-                "%s does not look like a Netscape format cookies file" %
+                "%r does not look like a Netscape format cookies file" %
                 filename)
 
         try:
@@ -104,9 +104,11 @@ class MozillaCookieJar(FileCookieJar):
                     continue
                 self.set_cookie(c)
 
-        except:
-            reraise_unmasked_exceptions((IOError,))
-            raise LoadError("invalid Netscape format file %s: %s" %
+        except IOError:
+            raise
+        except Exception:
+            _warn_unhandled_exception()
+            raise LoadError("invalid Netscape format cookies file %r: %r" %
                             (filename, line))
 
     def save(self, filename=None, ignore_discard=False, ignore_expires=False):
index 5732125d70ded12c3ddc31e9a29a42208c5f8b94..5fdcd11c6169497107aac5233021b810fdf96ccd 100644 (file)
@@ -7,9 +7,9 @@ Docstrings, comments and debug strings in this code refer to the
 attributes of the HTTP cookie system as cookie-attributes, to distinguish
 them clearly from Python attributes.
 
-Class diagram (note that the classes which do not derive from
-FileCookieJar are not distributed with the Python standard library, but
-are available from http://wwwsearch.sf.net/):
+Class diagram (note that BSDDBCookieJar and the MSIE* classes are not
+distributed with the Python standard library, but are available from
+http://wwwsearch.sf.net/):
 
                         CookieJar____
                         /     \      \
@@ -25,7 +25,10 @@ are available from http://wwwsearch.sf.net/):
 
 """
 
-import sys, re, urlparse, copy, time, urllib, logging
+__all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
+           'FileCookieJar', 'LWPCookieJar', 'LoadError', 'MozillaCookieJar']
+
+import re, urlparse, copy, time, urllib, logging
 try:
     import threading as _threading
 except ImportError:
@@ -39,15 +42,10 @@ DEFAULT_HTTP_PORT = str(httplib.HTTP_PORT)
 MISSING_FILENAME_TEXT = ("a filename was not supplied (nor was the CookieJar "
                          "instance initialised with one)")
 
-def reraise_unmasked_exceptions(unmasked=()):
+def _warn_unhandled_exception():
     # There are a few catch-all except: statements in this module, for
-    # catching input that's bad in unexpected ways.
-    # This function re-raises some exceptions we don't want to trap.
-    unmasked = unmasked + (KeyboardInterrupt, SystemExit, MemoryError)
-    etype = sys.exc_info()[0]
-    if issubclass(etype, unmasked):
-        raise
-    # swallowed an exception
+    # catching input that's bad in unexpected ways.  Warn if any
+    # exceptions are caught there.
     import warnings, traceback, StringIO
     f = StringIO.StringIO()
     traceback.print_exc(None, f)
@@ -1555,8 +1553,8 @@ class CookieJar:
         try:
             cookies = self._cookies_from_attrs_set(
                 split_header_words(rfc2965_hdrs), request)
-        except:
-            reraise_unmasked_exceptions()
+        except Exception:
+            _warn_unhandled_exception()
             cookies = []
 
         if ns_hdrs and netscape:
@@ -1564,8 +1562,8 @@ class CookieJar:
                 # RFC 2109 and Netscape cookies
                 ns_cookies = self._cookies_from_attrs_set(
                     parse_ns_headers(ns_hdrs), request)
-            except:
-                reraise_unmasked_exceptions()
+            except Exception:
+                _warn_unhandled_exception()
                 ns_cookies = []
             self._process_rfc2109_cookies(ns_cookies)