[Python-checkins] python/dist/src/Lib UserDict.py, 1.26, 1.27 os.py, 1.74, 1.75 weakref.py, 1.20, 1.21

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Thu Mar 4 03:25:46 EST 2004


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14562/Lib

Modified Files:
	UserDict.py os.py weakref.py 
Log Message:
SF #904720:  dict.update should take a 2-tuple sequence like dict.__init_
(Championed by Bob Ippolito.)

The update() method for mappings now accepts all the same argument forms
as the dict() constructor.  This includes item lists and/or keyword
arguments.



Index: UserDict.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/UserDict.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** UserDict.py	21 Dec 2003 22:19:08 -0000	1.26
--- UserDict.py	4 Mar 2004 08:25:44 -0000	1.27
***************
*** 5,10 ****
          self.data = {}
          if dict is not None:
-             if not hasattr(dict,'keys'):
-                 dict = type({})(dict)   # make mapping from a sequence
              self.update(dict)
          if len(kwargs):
--- 5,8 ----
***************
*** 40,51 ****
      def values(self): return self.data.values()
      def has_key(self, key): return self.data.has_key(key)
!     def update(self, dict):
!         if isinstance(dict, UserDict):
              self.data.update(dict.data)
!         elif isinstance(dict, type(self.data)):
              self.data.update(dict)
          else:
              for k, v in dict.items():
                  self[k] = v
      def get(self, key, failobj=None):
          if not self.has_key(key):
--- 38,53 ----
      def values(self): return self.data.values()
      def has_key(self, key): return self.data.has_key(key)
!     def update(self, dict=None, **kwargs):
!         if dict is None:
!             pass
!         elif isinstance(dict, UserDict):
              self.data.update(dict.data)
!         elif isinstance(dict, type({})) or not hasattr(dict, 'items'):
              self.data.update(dict)
          else:
              for k, v in dict.items():
                  self[k] = v
+         if len(kwargs):
+             self.data.update(kwargs)
      def get(self, key, failobj=None):
          if not self.has_key(key):
***************
*** 137,151 ****
          del self[k]
          return (k, v)
!     def update(self, other):
          # Make progressively weaker assumptions about "other"
!         if hasattr(other, 'iteritems'):  # iteritems saves memory and lookups
              for k, v in other.iteritems():
                  self[k] = v
!         elif hasattr(other, '__iter__'): # iter saves memory
!             for k in other:
!                 self[k] = other[k]
!         else:
              for k in other.keys():
                  self[k] = other[k]
      def get(self, key, default=None):
          try:
--- 139,157 ----
          del self[k]
          return (k, v)
!     def update(self, other=None, **kwargs):
          # Make progressively weaker assumptions about "other"
!         if other is None:
!             pass
!         elif hasattr(other, 'iteritems'):  # iteritems saves memory and lookups
              for k, v in other.iteritems():
                  self[k] = v
!         elif hasattr(other, 'keys'):
              for k in other.keys():
                  self[k] = other[k]
+         else:
+             for k, v in other:
+                 self[k] = v
+         if kwargs:
+             self.update(kwargs)
      def get(self, key, default=None):
          try:

Index: os.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/os.py,v
retrieving revision 1.74
retrieving revision 1.75
diff -C2 -d -r1.74 -r1.75
*** os.py	23 Dec 2003 16:33:28 -0000	1.74
--- os.py	4 Mar 2004 08:25:44 -0000	1.75
***************
*** 434,440 ****
              def get(self, key, failobj=None):
                  return self.data.get(key.upper(), failobj)
-             def update(self, dict):
-                 for k, v in dict.items():
-                     self[k] = v
              def copy(self):
                  return dict(self)
--- 434,437 ----
***************
*** 448,454 ****
                  putenv(key, item)
                  self.data[key] = item
-             def update(self, dict):
-                 for k, v in dict.items():
-                     self[k] = v
              try:
                  unsetenv
--- 445,448 ----

Index: weakref.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/weakref.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** weakref.py	25 May 2003 01:45:11 -0000	1.20
--- weakref.py	4 Mar 2004 08:25:44 -0000	1.21
***************
*** 123,130 ****
              return wr()
  
!     def update(self, dict):
          d = self.data
!         for key, o in dict.items():
!             d[key] = ref(o, self.__makeremove(key))
  
      def values(self):
--- 123,135 ----
              return wr()
  
!     def update(self, dict=None, **kwargs):
          d = self.data
!         if dict is not None:
!             if not hasattr(dict, "items"):
!                 dict = type({})(dict)
!             for key, o in dict.items():
!                 d[key] = ref(o, self.__makeremove(key))
!         if len(kwargs):
!             self.update(kwargs)
  
      def values(self):
***************
*** 240,247 ****
          return self.data.setdefault(ref(key, self._remove),default)
  
!     def update(self, dict):
          d = self.data
!         for key, value in dict.items():
!             d[ref(key, self._remove)] = value
  
  
--- 245,257 ----
          return self.data.setdefault(ref(key, self._remove),default)
  
!     def update(self, dict=None, **kwargs):
          d = self.data
!         if dict is not None:
!             if not hasattr(dict, "items"):
!                 dict = type({})(dict)
!             for key, value in dict.items():
!                 d[ref(key, self._remove)] = value
!         if len(kwargs):
!             self.update(kwargs)
  
  




More information about the Python-checkins mailing list