[Python-checkins] peps: PEP 416
victor.stinner
python-checkins at python.org
Thu Mar 1 13:06:04 CET 2012
http://hg.python.org/peps/rev/1cb1bad760c6
changeset: 4102:1cb1bad760c6
user: Victor Stinner <vstinner at wyplay.com>
date: Thu Mar 01 13:06:07 2012 +0100
summary:
PEP 416
* Rephrase the first Rationale paragraph
* Add 2 more use cases: cache and sandbox
* Fix a typo
files:
pep-0416.txt | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/pep-0416.txt b/pep-0416.txt
--- a/pep-0416.txt
+++ b/pep-0416.txt
@@ -19,16 +19,20 @@
Rationale
=========
-A frozendict mapping cannot be changed, but its values can be mutable (not
-hashable). A frozendict is hashable and so immutable if all values are hashable
-(immutable).
+A frozendict is a read-only mapping: a key cannot be added nor removed, and a
+key is always mapped to the same value. However, frozendict values can be
+mutable (not hashable). A frozendict is hashable and so immutable if and only
+if all values are hashable (immutable).
Use cases of frozendict:
+ * frozendict can be used to implement a cache
* hashable frozendict can be used as a key of a mapping or as a member of set
* frozendict helps optimization because the mapping is constant
* frozendict avoids the need of a lock when the frozendict is shared
by multiple threads or processes, especially hashable frozendict
+ * frozendict helps to implement a security sandbox with read-only objects,
+ e.g. freeze __builtins__ mapping
Constraints
@@ -47,7 +51,7 @@
"Py_hash_t hash;" field
* frozendict.__hash__() is implemented using hash(frozenset(self.items())) and
caches the result in its private hash attribute
- * Register frozendict has a collections.abc.Mapping
+ * Register frozendict as a collections.abc.Mapping
* frozendict can be used with PyDict_GetItem(), but PyDict_SetItem() and
PyDict_DelItem() raise a TypeError
--
Repository URL: http://hg.python.org/peps
More information about the Python-checkins
mailing list