What is zc.intid?¶
zc.intid provides an API to create integer ids for any object. Objects can later be looked up by their id as well. This functionality is commonly used in situations where dealing with objects is undesirable, such as in search indices or any code that needs an easy hash of an object.
This is similar to the
zope.intid package, but with the
advantage of inducing fewer ZODB conflict errors, since object ids are
not used as part of the stored data. The id for an object is stored in
an attribute of the object itself, with the attribute name being
configured by the construction of the id utility.
This does require that the object being registered “play nice” with this approach. At a minimum, the attributes used to store ids on objects should
- persist with the rest of the object’s state, and
- not be modified by the object.
Events generated on the assignment and removal of ids are generated by
unregester() methods rather than
by the callers of those methods.
zc.intid may be installed using pip:
pip install zc.intid
For information on configuring zc.intid, see Configuring.