#

# Index of the `cache` module

- m `sqlobject.cache` ... - This implements the instance caching in SQLObject. Caching is relatively aggressive. All objects are retained so long as they are in memory, by keeping weak references to objects. We also keep other objects in a cache that doesn't allow them to be garbage collected (unless caching is turned off).
  - a `__package__` ...
  - C `CacheFactory` ... - CacheFactory caches object creation. Each object should be referenced by a single hashable ID (note tuples of hashable values are also hashable).
    - f `cull` ... - Runs through the cache and expires objects
    - f `getAll` ... - Return all the objects in the cache.
    - f `finishPut` ... - Releases the lock that is retained when .get() is called and returns None.
    - f `created` ... - Inserts and object into the cache. Should be used when no one else knows about the object yet, so there cannot be any object already in the cache. After a database INSERT is an example of this situation.
    - f `clear` ... - Removes everything from the cache. Warning! This can cause duplicate objects in memory.
    - f `expireAll` ... - Expires all objects, moving them all into the expired/weakref cache.
    - f `tryGet` ... - This returns None, or the object in cache.
    - f `get` ... - This method can cause deadlocks! tryGet is safer
    - f `expire` ... - Expires a single object. Typically called after a delete. Doesn't even keep a weakref. (@@: bad name?)
    - f `put` ... - Puts an object into the cache. Should only be called after .get(), so that duplicate objects don't end up in the cache.
    - f `allIDs` ... - Returns the IDs of all objects in the cache.
    - f `__init__` ... - Every cullFrequency times that an item is retrieved from this cache, the cull method is called.
  - C `CacheSet` ... - A CacheSet is used to collect and maintain a series of caches. In SQLObject, there is one CacheSet per connection, and one Cache in the CacheSet for each class, since IDs are not unique across classes. It contains methods similar to Cache, but that take a `cls` argument.
    - f `finishPut` ...
    - f `weakrefAll` ... - Move all objects in the cls (or if not given, then in all classes) to the weakref dictionary, where they can be collected.
    - f `clear` ...
    - f `get` ...
    - f `allSubCachesByClassNames` ...