mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
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.
This commit is contained in:
parent
322d553143
commit
d4b920c8bd
3 changed files with 29 additions and 29 deletions
|
@ -78,9 +78,9 @@ def _reduce(self):
|
||||||
# don't have this restriction.) Codes are positive ints; 0 is
|
# don't have this restriction.) Codes are positive ints; 0 is
|
||||||
# reserved.
|
# reserved.
|
||||||
|
|
||||||
extension_registry = {} # key -> code
|
_extension_registry = {} # key -> code
|
||||||
inverted_registry = {} # code -> key
|
_inverted_registry = {} # code -> key
|
||||||
extension_cache = {} # code -> object
|
_extension_cache = {} # code -> object
|
||||||
# Don't ever rebind those names: cPickle grabs a reference to them when
|
# Don't ever rebind those names: cPickle grabs a reference to them when
|
||||||
# it's initialized, and won't see a rebinding.
|
# it's initialized, and won't see a rebinding.
|
||||||
|
|
||||||
|
@ -90,32 +90,32 @@ def add_extension(module, name, code):
|
||||||
if not 1 <= code < 0x7fffffff:
|
if not 1 <= code < 0x7fffffff:
|
||||||
raise ValueError, "code out of range"
|
raise ValueError, "code out of range"
|
||||||
key = (module, name)
|
key = (module, name)
|
||||||
if (extension_registry.get(key) == code and
|
if (_extension_registry.get(key) == code and
|
||||||
inverted_registry.get(code) == key):
|
_inverted_registry.get(code) == key):
|
||||||
return # Redundant registrations are benign
|
return # Redundant registrations are benign
|
||||||
if key in extension_registry:
|
if key in _extension_registry:
|
||||||
raise ValueError("key %s is already registered with code %s" %
|
raise ValueError("key %s is already registered with code %s" %
|
||||||
(key, extension_registry[key]))
|
(key, _extension_registry[key]))
|
||||||
if code in inverted_registry:
|
if code in _inverted_registry:
|
||||||
raise ValueError("code %s is already in use for key %s" %
|
raise ValueError("code %s is already in use for key %s" %
|
||||||
(code, inverted_registry[code]))
|
(code, _inverted_registry[code]))
|
||||||
extension_registry[key] = code
|
_extension_registry[key] = code
|
||||||
inverted_registry[code] = key
|
_inverted_registry[code] = key
|
||||||
|
|
||||||
def remove_extension(module, name, code):
|
def remove_extension(module, name, code):
|
||||||
"""Unregister an extension code. For testing only."""
|
"""Unregister an extension code. For testing only."""
|
||||||
key = (module, name)
|
key = (module, name)
|
||||||
if (extension_registry.get(key) != code or
|
if (_extension_registry.get(key) != code or
|
||||||
inverted_registry.get(code) != key):
|
_inverted_registry.get(code) != key):
|
||||||
raise ValueError("key %s is not registered with code %s" %
|
raise ValueError("key %s is not registered with code %s" %
|
||||||
(key, code))
|
(key, code))
|
||||||
del extension_registry[key]
|
del _extension_registry[key]
|
||||||
del inverted_registry[code]
|
del _inverted_registry[code]
|
||||||
if code in extension_cache:
|
if code in _extension_cache:
|
||||||
del extension_cache[code]
|
del _extension_cache[code]
|
||||||
|
|
||||||
def clear_extension_cache():
|
def clear_extension_cache():
|
||||||
extension_cache.clear()
|
_extension_cache.clear()
|
||||||
|
|
||||||
# Standard extension code assignments
|
# Standard extension code assignments
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ __version__ = "$Revision$" # Code version
|
||||||
|
|
||||||
from types import *
|
from types import *
|
||||||
from copy_reg import dispatch_table, _reconstructor
|
from copy_reg import dispatch_table, _reconstructor
|
||||||
from copy_reg import extension_registry, inverted_registry, extension_cache
|
from copy_reg import _extension_registry, _inverted_registry, _extension_cache
|
||||||
import marshal
|
import marshal
|
||||||
import sys
|
import sys
|
||||||
import struct
|
import struct
|
||||||
|
@ -845,7 +845,7 @@ class Pickler:
|
||||||
(obj, module, name))
|
(obj, module, name))
|
||||||
|
|
||||||
if self.proto >= 2:
|
if self.proto >= 2:
|
||||||
code = extension_registry.get((module, name))
|
code = _extension_registry.get((module, name))
|
||||||
if code:
|
if code:
|
||||||
assert code > 0
|
assert code > 0
|
||||||
if code <= 0xff:
|
if code <= 0xff:
|
||||||
|
@ -1238,15 +1238,15 @@ class Unpickler:
|
||||||
|
|
||||||
def get_extension(self, code):
|
def get_extension(self, code):
|
||||||
nil = []
|
nil = []
|
||||||
obj = extension_cache.get(code, nil)
|
obj = _extension_cache.get(code, nil)
|
||||||
if obj is not nil:
|
if obj is not nil:
|
||||||
self.append(obj)
|
self.append(obj)
|
||||||
return
|
return
|
||||||
key = inverted_registry.get(code)
|
key = _inverted_registry.get(code)
|
||||||
if not key:
|
if not key:
|
||||||
raise ValueError("unregistered extension code %d" % code)
|
raise ValueError("unregistered extension code %d" % code)
|
||||||
obj = self.find_class(*key)
|
obj = self.find_class(*key)
|
||||||
extension_cache[code] = obj
|
_extension_cache[code] = obj
|
||||||
self.append(obj)
|
self.append(obj)
|
||||||
|
|
||||||
def find_class(self, module, name):
|
def find_class(self, module, name):
|
||||||
|
|
|
@ -102,11 +102,11 @@ static PyObject *empty_tuple;
|
||||||
static PyObject *dispatch_table;
|
static PyObject *dispatch_table;
|
||||||
|
|
||||||
/* For EXT[124] opcodes. */
|
/* For EXT[124] opcodes. */
|
||||||
/* copy_reg.extension_registry, {(module_name, function_name): code} */
|
/* copy_reg._extension_registry, {(module_name, function_name): code} */
|
||||||
static PyObject *extension_registry;
|
static PyObject *extension_registry;
|
||||||
/* copy_reg.inverted_registry, {code: (module_name, function_name)} */
|
/* copy_reg._inverted_registry, {code: (module_name, function_name)} */
|
||||||
static PyObject *inverted_registry;
|
static PyObject *inverted_registry;
|
||||||
/* copy_reg.extension_cache, {code: object} */
|
/* copy_reg._extension_cache, {code: object} */
|
||||||
static PyObject *extension_cache;
|
static PyObject *extension_cache;
|
||||||
|
|
||||||
static PyObject *__class___str, *__getinitargs___str, *__dict___str,
|
static PyObject *__class___str, *__getinitargs___str, *__dict___str,
|
||||||
|
@ -5092,15 +5092,15 @@ init_stuff(PyObject *module_dict)
|
||||||
if (!dispatch_table) return -1;
|
if (!dispatch_table) return -1;
|
||||||
|
|
||||||
extension_registry = PyObject_GetAttrString(copy_reg,
|
extension_registry = PyObject_GetAttrString(copy_reg,
|
||||||
"extension_registry");
|
"_extension_registry");
|
||||||
if (!extension_registry) return -1;
|
if (!extension_registry) return -1;
|
||||||
|
|
||||||
inverted_registry = PyObject_GetAttrString(copy_reg,
|
inverted_registry = PyObject_GetAttrString(copy_reg,
|
||||||
"inverted_registry");
|
"_inverted_registry");
|
||||||
if (!inverted_registry) return -1;
|
if (!inverted_registry) return -1;
|
||||||
|
|
||||||
extension_cache = PyObject_GetAttrString(copy_reg,
|
extension_cache = PyObject_GetAttrString(copy_reg,
|
||||||
"extension_cache");
|
"_extension_cache");
|
||||||
if (!extension_cache) return -1;
|
if (!extension_cache) return -1;
|
||||||
|
|
||||||
Py_DECREF(copy_reg);
|
Py_DECREF(copy_reg);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue