216216# Import our required modules
217217#
218218import string
219- from UserDict import UserDict
220219
221220try :
222221 from cPickle import dumps , loads
@@ -406,7 +405,7 @@ def _getdate(future=0, weekdayname=_weekdayname, monthname=_monthname):
406405# pickled for network transit.
407406#
408407
409- class Morsel (UserDict ):
408+ class Morsel (dict ):
410409 # RFC 2109 lists these attributes as reserved:
411410 # path comment domain
412411 # max-age secure version
@@ -425,35 +424,33 @@ class Morsel(UserDict):
425424 "secure" : "secure" ,
426425 "version" : "Version" ,
427426 }
428- _reserved_keys = _reserved .keys ()
429427
430428 def __init__ (self ):
431429 # Set defaults
432430 self .key = self .value = self .coded_value = None
433- UserDict .__init__ (self )
434431
435432 # Set default attributes
436- for K in self ._reserved_keys :
437- UserDict .__setitem__ (self , K , "" )
433+ for K in self ._reserved :
434+ dict .__setitem__ (self , K , "" )
438435 # end __init__
439436
440437 def __setitem__ (self , K , V ):
441438 K = K .lower ()
442- if not K in self ._reserved_keys :
439+ if not K in self ._reserved :
443440 raise CookieError ("Invalid Attribute %s" % K )
444- UserDict .__setitem__ (self , K , V )
441+ dict .__setitem__ (self , K , V )
445442 # end __setitem__
446443
447444 def isReservedKey (self , K ):
448- return K .lower () in self ._reserved_keys
445+ return K .lower () in self ._reserved
449446 # end isReservedKey
450447
451448 def set (self , key , val , coded_val ,
452449 LegalChars = _LegalChars ,
453450 idmap = string ._idmap , translate = string .translate ):
454451 # First we verify that the key isn't a reserved word
455452 # Second we make sure it only contains legal characters
456- if key .lower () in self ._reserved_keys :
453+ if key .lower () in self ._reserved :
457454 raise CookieError ("Attempt to set a reserved key: %s" % key )
458455 if "" != translate (key , idmap , LegalChars ):
459456 raise CookieError ("Illegal key value: %s" % key )
@@ -495,7 +492,7 @@ def OutputString(self, attrs=None):
495492
496493 # Now add any defined attributes
497494 if attrs is None :
498- attrs = self ._reserved_keys
495+ attrs = self ._reserved
499496 items = self .items ()
500497 items .sort ()
501498 for K ,V in items :
@@ -546,7 +543,7 @@ def OutputString(self, attrs=None):
546543# Using this class is almost just like using a dictionary.
547544# See this module's docstring for example usage.
548545#
549- class BaseCookie (UserDict ):
546+ class BaseCookie (dict ):
550547 # A container class for a set of Morsels
551548 #
552549
@@ -571,15 +568,14 @@ def value_encode(self, val):
571568 # end value_encode
572569
573570 def __init__ (self , input = None ):
574- UserDict .__init__ (self )
575571 if input : self .load (input )
576572 # end __init__
577573
578574 def __set (self , key , real_value , coded_value ):
579575 """Private method for setting a cookie's value"""
580576 M = self .get (key , Morsel ())
581577 M .set (key , real_value , coded_value )
582- UserDict .__setitem__ (self , key , M )
578+ dict .__setitem__ (self , key , M )
583579 # end __set
584580
585581 def __setitem__ (self , key , value ):
@@ -651,7 +647,7 @@ def __ParseString(self, str, patt=_CookiePattern):
651647 # (Does anyone care?)
652648 if M :
653649 M [ K [1 :] ] = V
654- elif K .lower () in Morsel ._reserved_keys :
650+ elif K .lower () in Morsel ._reserved :
655651 if M :
656652 M [ K ] = _unquote (V )
657653 else :
0 commit comments