evennia/docs/latest/api/evennia.utils.idmapper.models.html
Evennia docbuilder action 243d596662 Updated HTML docs.
2025-08-15 18:14:21 +00:00

437 lines
No EOL
39 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 lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>evennia.utils.idmapper.models &#8212; Evennia latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
<link rel="stylesheet" type="text/css" href="../_static/nature.css?v=279e0f84" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e4a91a55" />
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.utils.idmapper.tests" href="evennia.utils.idmapper.tests.html" />
<link rel="prev" title="evennia.utils.idmapper.manager" href="evennia.utils.idmapper.manager.html" />
</head><body>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.utils.idmapper.tests.html" title="evennia.utils.idmapper.tests"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.utils.idmapper.manager.html" title="evennia.utils.idmapper.manager"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.utils.html" >evennia.utils</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.utils.idmapper.html" accesskey="U">evennia.utils.idmapper</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.idmapper.models</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.utils.idmapper.models">
<span id="evennia-utils-idmapper-models"></span><h1>evennia.utils.idmapper.models<a class="headerlink" href="#module-evennia.utils.idmapper.models" title="Link to this heading"></a></h1>
<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 <strong>cache_size()</strong> for monitoring the size of the cache.</p>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModelBase">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">SharedMemoryModelBase</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bases</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModelBase"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModelBase" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.models.html#evennia.typeclasses.models.ModelBase" title="django.db.models.base.ModelBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">ModelBase</span></code></a></p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">SharedMemoryModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Model</span></code></p>
<p>Base class for idmapped objects. Inherit from <strong>this</strong>.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.Meta">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Meta</span></span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.Meta"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta" title="Link 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="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.Meta.abstract">
<span class="sig-name descname"><span class="pre">abstract</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta.abstract" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.get_cached_instance">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_cached_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span></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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_cached_instance" title="Link 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="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.cache_instance">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">cache_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">instance</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.cache_instance"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.cache_instance" title="Link 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<span class="colon">:</span></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="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.get_all_cached_instances">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_all_cached_instances</span></span><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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_all_cached_instances" title="Link to this definition"></a></dt>
<dd><p>Return the objects so far cached by idmapper for this class.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.flush_cached_instance">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">flush_cached_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">instance</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">force</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_cached_instance" title="Link 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="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.flush_instance_cache">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">flush_instance_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">force</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_instance_cache" title="Link to this definition"></a></dt>
<dd><p>This will clean safe objects from the cache. Use <strong>force</strong>
keyword to remove all objects, safe or not.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.at_idmapper_flush">
<span class="sig-name descname"><span class="pre">at_idmapper_flush</span></span><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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.at_idmapper_flush" title="Link 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<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>do_flush (bool)</em> </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>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.flush_from_cache">
<span class="sig-name descname"><span class="pre">flush_from_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">force</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></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"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_from_cache" title="Link to this definition"></a></dt>
<dd><p>Flush this instance from the instance cache. Use
<strong>force</strong> to override the result of at_idmapper_flush() for the object.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.delete">
<span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.delete" title="Link to this definition"></a></dt>
<dd><p>Delete the object, clearing cache.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.save">
<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.save" title="Link to this definition"></a></dt>
<dd><p>Central database save operation.</p>
<p class="rubric">Notes</p>
<p>Arguments as per Django documentation.
Calls <strong>self.at_&lt;fieldname&gt;_postsave(new)</strong>
(this is a wrapper set by oobhandler:
self._oob_at_&lt;fieldname&gt;_postsave())</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.utils.idmapper.models.SharedMemoryModel'</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.SharedMemoryModel.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'SharedMemoryModelBase'</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.SharedMemoryModel.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModelBase">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">WeakSharedMemoryModelBase</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bases</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModelBase"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModelBase" title="Link 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">SharedMemoryModelBase</span></code></a></p>
<p>Uses a WeakValue dictionary for caching instead of a regular one.</p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModel">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">WeakSharedMemoryModel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel" title="Link 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">SharedMemoryModel</span></code></a></p>
<p>Uses a WeakValue dictionary for caching instead of a regular one</p>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">Meta</span></span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#WeakSharedMemoryModel.Meta"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta" title="Link 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="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta.abstract">
<span class="sig-name descname"><span class="pre">abstract</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta.abstract" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModel.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.utils.idmapper.models.WeakSharedMemoryModel'</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.WeakSharedMemoryModel.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'WeakSharedMemoryModelBase'</span></em><a class="headerlink" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.flush_cache">
<span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">flush_cache</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#flush_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.flush_cache" title="Link 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="py function">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.flush_cached_instance">
<span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">flush_cached_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sender</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">instance</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#flush_cached_instance"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.flush_cached_instance" title="Link to this definition"></a></dt>
<dd><p>Flush the idmapper cache only for a given instance.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.update_cached_instance">
<span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">update_cached_instance</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sender</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">instance</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#update_cached_instance"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.update_cached_instance" title="Link to this definition"></a></dt>
<dd><p>Re-cache the given instance in the idmapper cache.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.conditional_flush">
<span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">conditional_flush</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">max_rmem</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">force</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#conditional_flush"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.conditional_flush" title="Link to this definition"></a></dt>
<dd><p>Flush the cache if the estimated memory usage exceeds <strong>max_rmem</strong>.</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<span class="colon">:</span></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 <strong>False</strong>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.utils.idmapper.models.cache_size">
<span class="sig-prename descclassname"><span class="pre">evennia.utils.idmapper.models.</span></span><span class="sig-name descname"><span class="pre">cache_size</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mb</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/idmapper/models.html#cache_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.idmapper.models.cache_size" title="Link 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 <strong>getsizof</strong> 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<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>total_num, {objclass</em> total_num, …}</p>
</dd>
</dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo of Evennia"/>
</a></p>
<search 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" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.utils.idmapper.models</a><ul>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModelBase"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModelBase</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.objects"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.Meta</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.Meta.abstract"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.Meta.abstract</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_cached_instance"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.get_cached_instance()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.cache_instance"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.cache_instance()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.get_all_cached_instances"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.get_all_cached_instances()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_cached_instance"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.flush_cached_instance()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_instance_cache"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.flush_instance_cache()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.at_idmapper_flush"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.at_idmapper_flush()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.flush_from_cache"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.flush_from_cache()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.delete"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.delete()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.save"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.save()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.path"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.SharedMemoryModel.typename"><code class="docutils literal notranslate"><span class="pre">SharedMemoryModel.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModelBase"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModelBase</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModel</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModel.Meta</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.Meta.abstract"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModel.Meta.abstract</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.path"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModel.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.WeakSharedMemoryModel.typename"><code class="docutils literal notranslate"><span class="pre">WeakSharedMemoryModel.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.flush_cache"><code class="docutils literal notranslate"><span class="pre">flush_cache()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.flush_cached_instance"><code class="docutils literal notranslate"><span class="pre">flush_cached_instance()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.update_cached_instance"><code class="docutils literal notranslate"><span class="pre">update_cached_instance()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.conditional_flush"><code class="docutils literal notranslate"><span class="pre">conditional_flush()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.idmapper.models.cache_size"><code class="docutils literal notranslate"><span class="pre">cache_size()</span></code></a></li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.utils.idmapper.manager.html"
title="previous chapter">evennia.utils.idmapper.manager</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.utils.idmapper.tests.html"
title="next chapter">evennia.utils.idmapper.tests</a></p>
</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.models.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li>
<a href="https://www.evennia.com/docs/latest/index.html">latest (main branch)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/5.x/index.html">v5.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/4.x/index.html">v4.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/3.x/index.html">v3.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/2.x/index.html">v2.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/1.x/index.html">v1.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/0.x/index.html">v0.9.5 branch (outdated)</a>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.utils.idmapper.tests.html" title="evennia.utils.idmapper.tests"
>next</a> |</li>
<li class="right" >
<a href="evennia.utils.idmapper.manager.html" title="evennia.utils.idmapper.manager"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.utils.html" >evennia.utils</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.utils.idmapper.html" >evennia.utils.idmapper</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.idmapper.models</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>