[Python-checkins] python/dist/src/Lib pickle.py,1.143,1.144 copy_reg.py,1.14,1.15

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Mon, 03 Feb 2003 17:54:51 -0800


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1:/tmp/cvs-serv3141/Lib

Modified Files:
	pickle.py copy_reg.py 
Log Message:
Rename the extension registry variables to have leading underscores --
this clarifies that they are part of an internal API (albeit shared
between pickle.py, copy_reg.py and cPickle.c).

I'd like to do the same for copy_reg.dispatch_table, but worry that it
might be used by existing code.  This risk doesn't exist for the
extension registry.


Index: pickle.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/pickle.py,v
retrieving revision 1.143
retrieving revision 1.144
diff -C2 -d -r1.143 -r1.144
*** pickle.py	3 Feb 2003 19:46:54 -0000	1.143
--- pickle.py	4 Feb 2003 01:54:48 -0000	1.144
***************
*** 29,33 ****
  from types import *
  from copy_reg import dispatch_table, _reconstructor
! from copy_reg import extension_registry, inverted_registry, extension_cache
  import marshal
  import sys
--- 29,33 ----
  from types import *
  from copy_reg import dispatch_table, _reconstructor
! from copy_reg import _extension_registry, _inverted_registry, _extension_cache
  import marshal
  import sys
***************
*** 846,850 ****
  
          if self.proto >= 2:
!             code = extension_registry.get((module, name))
              if code:
                  assert code > 0
--- 846,850 ----
  
          if self.proto >= 2:
!             code = _extension_registry.get((module, name))
              if code:
                  assert code > 0
***************
*** 1239,1251 ****
      def get_extension(self, code):
          nil = []
!         obj = extension_cache.get(code, nil)
          if obj is not nil:
              self.append(obj)
              return
!         key = inverted_registry.get(code)
          if not key:
              raise ValueError("unregistered extension code %d" % code)
          obj = self.find_class(*key)
!         extension_cache[code] = obj
          self.append(obj)
  
--- 1239,1251 ----
      def get_extension(self, code):
          nil = []
!         obj = _extension_cache.get(code, nil)
          if obj is not nil:
              self.append(obj)
              return
!         key = _inverted_registry.get(code)
          if not key:
              raise ValueError("unregistered extension code %d" % code)
          obj = self.find_class(*key)
!         _extension_cache[code] = obj
          self.append(obj)
  

Index: copy_reg.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/copy_reg.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** copy_reg.py	4 Feb 2003 00:21:06 -0000	1.14
--- copy_reg.py	4 Feb 2003 01:54:49 -0000	1.15
***************
*** 79,85 ****
  # reserved.
  
! extension_registry = {}                 # key -> code
! inverted_registry = {}                  # code -> key
! extension_cache = {}                    # code -> object
  # Don't ever rebind those names:  cPickle grabs a reference to them when
  # it's initialized, and won't see a rebinding.
--- 79,85 ----
  # reserved.
  
! _extension_registry = {}                # key -> code
! _inverted_registry = {}                 # code -> key
! _extension_cache = {}                   # code -> object
  # Don't ever rebind those names:  cPickle grabs a reference to them when
  # it's initialized, and won't see a rebinding.
***************
*** 91,120 ****
          raise ValueError, "code out of range"
      key = (module, name)
!     if (extension_registry.get(key) == code and
!         inverted_registry.get(code) == key):
          return # Redundant registrations are benign
!     if key in extension_registry:
          raise ValueError("key %s is already registered with code %s" %
!                          (key, extension_registry[key]))
!     if code in inverted_registry:
          raise ValueError("code %s is already in use for key %s" %
!                          (code, inverted_registry[code]))
!     extension_registry[key] = code
!     inverted_registry[code] = key
  
  def remove_extension(module, name, code):
      """Unregister an extension code.  For testing only."""
      key = (module, name)
!     if (extension_registry.get(key) != code or
!         inverted_registry.get(code) != key):
          raise ValueError("key %s is not registered with code %s" %
                           (key, code))
!     del extension_registry[key]
!     del inverted_registry[code]
!     if code in extension_cache:
!         del extension_cache[code]
  
  def clear_extension_cache():
!     extension_cache.clear()
  
  # Standard extension code assignments
--- 91,120 ----
          raise ValueError, "code out of range"
      key = (module, name)
!     if (_extension_registry.get(key) == code and
!         _inverted_registry.get(code) == key):
          return # Redundant registrations are benign
!     if key in _extension_registry:
          raise ValueError("key %s is already registered with code %s" %
!                          (key, _extension_registry[key]))
!     if code in _inverted_registry:
          raise ValueError("code %s is already in use for key %s" %
!                          (code, _inverted_registry[code]))
!     _extension_registry[key] = code
!     _inverted_registry[code] = key
  
  def remove_extension(module, name, code):
      """Unregister an extension code.  For testing only."""
      key = (module, name)
!     if (_extension_registry.get(key) != code or
!         _inverted_registry.get(code) != key):
          raise ValueError("key %s is not registered with code %s" %
                           (key, code))
!     del _extension_registry[key]
!     del _inverted_registry[code]
!     if code in _extension_cache:
!         del _extension_cache[code]
  
  def clear_extension_cache():
!     _extension_cache.clear()
  
  # Standard extension code assignments