evennia/docs/1.0-dev/api/evennia.utils.idmapper.html
2020-06-13 12:23:41 +02:00

786 lines
No EOL
60 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>evennia.utils.idmapper package &#8212; Evennia 1.0-dev documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.utils.idmapper">
<span id="evennia-utils-idmapper-package"></span><h1>evennia.utils.idmapper package<a class="headerlink" href="#module-evennia.utils.idmapper" title="Permalink to this headline"></a></h1>
<p>The idmapper holds the main database caching mechanism.</p>
<div class="section" id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
</div>
<div class="section" id="module-evennia.utils.idmapper.manager">
<span id="evennia-utils-idmapper-manager-module"></span><h2>evennia.utils.idmapper.manager module<a class="headerlink" href="#module-evennia.utils.idmapper.manager" title="Permalink to this headline"></a></h2>
<p>IDmapper extension to the default manager.</p>
<dl class="class">
<dt id="evennia.utils.idmapper.manager.SharedMemoryManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.manager.</code><code class="sig-name descname">SharedMemoryManager</code><a class="reference internal" href="../_modules/evennia/utils/idmapper/manager.html#SharedMemoryManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.manager.SharedMemoryManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.manager.Manager</span></code></p>
<dl class="method">
<dt id="evennia.utils.idmapper.manager.SharedMemoryManager.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/manager.html#SharedMemoryManager.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.manager.SharedMemoryManager.get" title="Permalink to this definition"></a></dt>
<dd><p>Data entity lookup.</p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.utils.idmapper.models">
<span id="evennia-utils-idmapper-models-module"></span><h2>evennia.utils.idmapper.models module<a class="headerlink" href="#module-evennia.utils.idmapper.models" title="Permalink to this headline"></a></h2>
<p>Django ID mapper</p>
<p>Modified for Evennia by making sure that no model references
leave caching unexpectedly (no use of WeakRefs).</p>
<p>Also adds <cite>cache_size()</cite> for monitoring the size of the cache.</p>
<dl class="class">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">SharedMemoryModel</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.base.Model</span></code></p>
<p>Base class for idmapped objects. Inherit from <cite>this</cite>.</p>
<dl class="class">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.Meta">
<em class="property">class </em><code class="sig-name descname">Meta</code><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.Meta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.Meta.abstract">
<code class="sig-name descname">abstract</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta.abstract" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel._flush_cached_by_key">
<em class="property">classmethod </em><code class="sig-name descname">_flush_cached_by_key</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">force=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel._flush_cached_by_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel._flush_cached_by_key" title="Permalink to this definition"></a></dt>
<dd><p>Remove the cached reference.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel._get_cache_key">
<em class="property">classmethod </em><code class="sig-name descname">_get_cache_key</code><span class="sig-paren">(</span><em class="sig-param">args</em>, <em class="sig-param">kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel._get_cache_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel._get_cache_key" title="Permalink to this definition"></a></dt>
<dd><p>This method is used by the caching subsystem to infer the PK
value from the constructor arguments. It is used to decide if
an instance has to be built or is already in the cache.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for SharedMemoryModel&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.at_idmapper_flush">
<code class="sig-name descname">at_idmapper_flush</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.at_idmapper_flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.at_idmapper_flush" title="Permalink to this definition"></a></dt>
<dd><p>This is called when the idmapper cache is flushed and
allows customized actions when this happens.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>If True, flush this object as normal. If</dt><dd><p>False, dont flush and expect this object to handle
the flushing on its own.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>do_flush (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.cache_instance">
<em class="property">classmethod </em><code class="sig-name descname">cache_instance</code><span class="sig-paren">(</span><em class="sig-param">instance</em>, <em class="sig-param">new=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.cache_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.cache_instance" title="Permalink to this definition"></a></dt>
<dd><p>Method to store an instance in the cache.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>instance</strong> (<em>Class instance</em>) the instance to cache.</p></li>
<li><p><strong>new</strong> (<em>bool</em><em>, </em><em>optional</em>) this is the first time this instance is
cached (i.e. this is not an update operation like after a
db save).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.delete"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.delete" title="Permalink to this definition"></a></dt>
<dd><p>Delete the object, clearing cache.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.flush_cached_instance">
<em class="property">classmethod </em><code class="sig-name descname">flush_cached_instance</code><span class="sig-paren">(</span><em class="sig-param">instance</em>, <em class="sig-param">force=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_cached_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_cached_instance" title="Permalink to this definition"></a></dt>
<dd><p>Method to flush an instance from the cache. The instance will
always be flushed from the cache, since this is most likely
called from delete(), and we want to make sure we dont cache
dead objects.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.flush_from_cache">
<code class="sig-name descname">flush_from_cache</code><span class="sig-paren">(</span><em class="sig-param">force=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_from_cache"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_from_cache" title="Permalink to this definition"></a></dt>
<dd><p>Flush this instance from the instance cache. Use
<cite>force</cite> to override the result of at_idmapper_flush() for the object.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.flush_instance_cache">
<em class="property">classmethod </em><code class="sig-name descname">flush_instance_cache</code><span class="sig-paren">(</span><em class="sig-param">force=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_instance_cache"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_instance_cache" title="Permalink to this definition"></a></dt>
<dd><p>This will clean safe objects from the cache. Use <cite>force</cite>
keyword to remove all objects, safe or not.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.get_all_cached_instances">
<em class="property">classmethod </em><code class="sig-name descname">get_all_cached_instances</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.get_all_cached_instances"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_all_cached_instances" title="Permalink to this definition"></a></dt>
<dd><p>Return the objects so far cached by idmapper for this class.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.get_cached_instance">
<em class="property">classmethod </em><code class="sig-name descname">get_cached_instance</code><span class="sig-paren">(</span><em class="sig-param">id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.get_cached_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_cached_instance" title="Permalink to this definition"></a></dt>
<dd><p>Method to retrieve a cached instance by pk value. Returns None
when not found (which will always be the case when caching is
disabled for this class). Please note that the lookup will be
done even when instance caching is disabled.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.objects">
<code class="sig-name descname">objects</code><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.utils.idmapper.models.SharedMemoryModel'</em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.save">
<code class="sig-name descname">save</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.save" title="Permalink to this definition"></a></dt>
<dd><p>Central database save operation.</p>
<p class="rubric">Notes</p>
<p>Arguments as per Django documentation.
Calls <cite>self.at_&lt;fieldname&gt;_postsave(new)</cite>
(this is a wrapper set by oobhandler:
self._oob_at_&lt;fieldname&gt;_postsave())</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.SharedMemoryModel.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.models.SharedMemoryModelBase">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">SharedMemoryModelBase</code><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModelBase"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModelBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.base.ModelBase</span></code></p>
<dl class="method">
<dt id="evennia.utils.idmapper.models.SharedMemoryModelBase._prepare">
<code class="sig-name descname">_prepare</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModelBase._prepare"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModelBase._prepare" title="Permalink to this definition"></a></dt>
<dd><p>Prepare the cache, making sure that proxies of the same db base
share the same cache.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">WeakSharedMemoryModel</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel" title="evennia.utils.idmapper.models.SharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.SharedMemoryModel</span></code></a></p>
<p>Uses a WeakValue dictionary for caching instead of a regular one</p>
<dl class="class">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta">
<em class="property">class </em><code class="sig-name descname">Meta</code><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModel.Meta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta.abstract">
<code class="sig-name descname">abstract</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta.abstract" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for WeakSharedMemoryModel&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.utils.idmapper.models.WeakSharedMemoryModel'</em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModel.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'WeakSharedMemoryModelBase'</em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModelBase">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">WeakSharedMemoryModelBase</code><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModelBase"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModelBase" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModelBase" title="evennia.utils.idmapper.models.SharedMemoryModelBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.SharedMemoryModelBase</span></code></a></p>
<p>Uses a WeakValue dictionary for caching instead of a regular one.</p>
<dl class="method">
<dt id="evennia.utils.idmapper.models.WeakSharedMemoryModelBase._prepare">
<code class="sig-name descname">_prepare</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModelBase._prepare"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModelBase._prepare" title="Permalink to this definition"></a></dt>
<dd><p>Prepare the cache, making sure that proxies of the same db base
share the same cache.</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models._DA">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">_DA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.utils.idmapper.models._DA" title="Permalink to this definition"></a></dt>
<dd><p>Implement delattr(self, name).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models._GA">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">_GA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.utils.idmapper.models._GA" title="Permalink to this definition"></a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models._SA">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">_SA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.utils.idmapper.models._SA" title="Permalink to this definition"></a></dt>
<dd><p>Implement setattr(self, name, value).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models.cache_size">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">cache_size</code><span class="sig-paren">(</span><em class="sig-param">mb=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#cache_size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.cache_size" title="Permalink to this definition"></a></dt>
<dd><p>Calculate statistics about the cache.</p>
<p>Note: we cannot get reliable memory statistics from the cache -
whereas we could do <cite>getsizof</cite> each object in cache, the result is
highly imprecise and for a large number of objects the result is
many times larger than the actual memory usage of the entire server;
Python is clearly reusing memory behind the scenes that we cannot
catch in an easy way here. Ideas are appreciated. /Griatch</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>total_num, …}</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>total_num, {objclass</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models.conditional_flush">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">conditional_flush</code><span class="sig-paren">(</span><em class="sig-param">max_rmem</em>, <em class="sig-param">force=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#conditional_flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.conditional_flush" title="Permalink to this definition"></a></dt>
<dd><p>Flush the cache if the estimated memory usage exceeds <cite>max_rmem</cite>.</p>
<p>The flusher has a timeout to avoid flushing over and over
in particular situations (this means that for some setups
the memory usage will exceed the requirement and a server with
more memory is probably required for the given game).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>max_rmem</strong> (<em>int</em>) memory-usage estimation-treshold after which
cache is flushed.</p></li>
<li><p><strong>force</strong> (<em>bool</em><em>, </em><em>optional</em>) forces a flush, regardless of timeout.
Defaults to <cite>False</cite>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models.flush_cache">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">flush_cache</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#flush_cache"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.flush_cache" title="Permalink to this definition"></a></dt>
<dd><p>Flush idmapper cache. When doing so the cache will fire the
at_idmapper_flush hook to allow the object to optionally handle
its own flushing.</p>
<p>Uses a signal so we make sure to catch cascades.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models.flush_cached_instance">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">flush_cached_instance</code><span class="sig-paren">(</span><em class="sig-param">sender</em>, <em class="sig-param">instance</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#flush_cached_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.flush_cached_instance" title="Permalink to this definition"></a></dt>
<dd><p>Flush the idmapper cache only for a given instance.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.utils.idmapper.models.update_cached_instance">
<code class="sig-prename descclassname">evennia.utils.idmapper.models.</code><code class="sig-name descname">update_cached_instance</code><span class="sig-paren">(</span><em class="sig-param">sender</em>, <em class="sig-param">instance</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#update_cached_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.models.update_cached_instance" title="Permalink to this definition"></a></dt>
<dd><p>Re-cache the given instance in the idmapper cache.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.utils.idmapper.tests">
<span id="evennia-utils-idmapper-tests-module"></span><h2>evennia.utils.idmapper.tests module<a class="headerlink" href="#module-evennia.utils.idmapper.tests" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.utils.idmapper.tests.Article">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.tests.</code><code class="sig-name descname">Article</code><span class="sig-paren">(</span><em class="sig-param">id</em>, <em class="sig-param">name</em>, <em class="sig-param">category</em>, <em class="sig-param">category2</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#Article"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.Article" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel" title="evennia.utils.idmapper.models.SharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.SharedMemoryModel</span></code></a></p>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.Article.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.Article.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Article._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for Article&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Article._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.category">
<code class="sig-name descname">category</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.category" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Child.parent</span></code> is a <code class="docutils literal notranslate"><span class="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.category2">
<code class="sig-name descname">category2</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.category2" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Child.parent</span></code> is a <code class="docutils literal notranslate"><span class="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.category2_id">
<code class="sig-name descname">category2_id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.category2_id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.category_id">
<code class="sig-name descname">category_id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.category_id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.name">
<code class="sig-name descname">name</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.name" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.utils.idmapper.tests.Article'</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Article.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Article.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.tests.Category">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.tests.</code><code class="sig-name descname">Category</code><span class="sig-paren">(</span><em class="sig-param">id</em>, <em class="sig-param">name</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#Category"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.Category" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel" title="evennia.utils.idmapper.models.SharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.SharedMemoryModel</span></code></a></p>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.Category.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.Category.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Category._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for Category&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Category._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.article_set">
<code class="sig-name descname">article_set</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.article_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.name">
<code class="sig-name descname">name</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.name" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.utils.idmapper.tests.Category'</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.regulararticle_set">
<code class="sig-name descname">regulararticle_set</code><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.regulararticle_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.Category.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.utils.idmapper.tests.Category.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.tests.RegularArticle">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.tests.</code><code class="sig-name descname">RegularArticle</code><span class="sig-paren">(</span><em class="sig-param">id</em>, <em class="sig-param">name</em>, <em class="sig-param">category</em>, <em class="sig-param">category2</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#RegularArticle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.base.Model</span></code></p>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.RegularArticle.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.RegularArticle.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for RegularArticle&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.category">
<code class="sig-name descname">category</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.category" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Child.parent</span></code> is a <code class="docutils literal notranslate"><span class="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.category2">
<code class="sig-name descname">category2</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.category2" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Child.parent</span></code> is a <code class="docutils literal notranslate"><span class="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.category2_id">
<code class="sig-name descname">category2_id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.category2_id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.category_id">
<code class="sig-name descname">category_id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.category_id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.name">
<code class="sig-name descname">name</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.name" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularArticle.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;django.db.models.manager.Manager object&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularArticle.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.tests.RegularCategory">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.tests.</code><code class="sig-name descname">RegularCategory</code><span class="sig-paren">(</span><em class="sig-param">id</em>, <em class="sig-param">name</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#RegularCategory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.base.Model</span></code></p>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.RegularCategory.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.utils.idmapper.tests.RegularCategory.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for RegularCategory&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory.article_set">
<code class="sig-name descname">article_set</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.article_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory.name">
<code class="sig-name descname">name</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.name" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;django.db.models.manager.Manager object&gt;</em><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.utils.idmapper.tests.RegularCategory.regulararticle_set">
<code class="sig-name descname">regulararticle_set</code><a class="headerlink" href="#evennia.utils.idmapper.tests.RegularCategory.regulararticle_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.idmapper.tests.</code><code class="sig-name descname">SharedMemorysTest</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.test.testcases.TestCase</span></code></p>
<dl class="method">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest.setUp">
<code class="sig-name descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest.setUp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest.setUp" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up the test fixture before exercising it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest.testMixedReferences">
<code class="sig-name descname">testMixedReferences</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest.testMixedReferences"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest.testMixedReferences" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest.testObjectDeletion">
<code class="sig-name descname">testObjectDeletion</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest.testObjectDeletion"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest.testObjectDeletion" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest.testRegularReferences">
<code class="sig-name descname">testRegularReferences</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest.testRegularReferences"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest.testRegularReferences" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.utils.idmapper.tests.SharedMemorysTest.testSharedMemoryReferences">
<code class="sig-name descname">testSharedMemoryReferences</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/tests.html#SharedMemorysTest.testSharedMemoryReferences"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.idmapper.tests.SharedMemorysTest.testSharedMemoryReferences" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<p><h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.utils.idmapper package</a><ul>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-evennia.utils.idmapper.manager">evennia.utils.idmapper.manager module</a></li>
<li><a class="reference internal" href="#module-evennia.utils.idmapper.models">evennia.utils.idmapper.models module</a></li>
<li><a class="reference internal" href="#module-evennia.utils.idmapper.tests">evennia.utils.idmapper.tests module</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.utils.idmapper.rst.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div>
<h3>Versions</h3>
<ul>
<li><a href="evennia.utils.idmapper.html">1.0-dev (develop branch)</a></li>
<li><a href="../../0.9.1/api/evennia.utils.idmapper.html">0.9.1 (master branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2020, The Evennia developer community.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.4.4</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="../_sources/api/evennia.utils.idmapper.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>