evennia/docs/6.x/api/evennia.utils.containers.html
2026-02-15 19:06:04 +01:00

351 lines
No EOL
23 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.containers &#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.create" href="evennia.utils.create.html" />
<link rel="prev" title="evennia.utils.batchprocessors" href="evennia.utils.batchprocessors.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.create.html" title="evennia.utils.create"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.utils.batchprocessors.html" title="evennia.utils.batchprocessors"
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" accesskey="U">evennia.utils</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.containers</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.utils.containers">
<span id="evennia-utils-containers"></span><h1>evennia.utils.containers<a class="headerlink" href="#module-evennia.utils.containers" title="Link to this heading"></a></h1>
<p>Containers</p>
<p>Containers are storage classes usually initialized from a setting. They
represent Singletons and acts as a convenient place to find resources (
available as properties on the singleton)</p>
<p>evennia.GLOBAL_SCRIPTS
evennia.OPTION_CLASSES</p>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.containers.Container">
<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.containers.</span></span><span class="sig-name descname"><span class="pre">Container</span></span><a class="reference internal" href="../_modules/evennia/utils/containers.html#Container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.Container" 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>
<p>Base container class. A container is simply a storage object whose
properties can be acquired as a property on it. This is generally
considered a read-only affair.</p>
<p>The container is initialized by a list of modules containing callables.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.containers.Container.storage_modules">
<span class="sig-name descname"><span class="pre">storage_modules</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">[]</span></em><a class="headerlink" href="#evennia.utils.containers.Container.storage_modules" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.Container.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#Container.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.Container.__init__" title="Link to this definition"></a></dt>
<dd><p>Read data from module.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.Container.load_data">
<span class="sig-name descname"><span class="pre">load_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#Container.load_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.Container.load_data" title="Link to this definition"></a></dt>
<dd><p>Delayed import to avoid eventual circular imports from inside
the storage modules.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.Container.get">
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#Container.get"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.Container.get" title="Link to this definition"></a></dt>
<dd><p>Retrive data by key (in case of not knowing it beforehand).</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>key</strong> (<em>str</em>) The name of the script.</p></li>
<li><p><strong>default</strong> (<em>any</em><em>, </em><em>optional</em>) Value to return if key is not found.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>any (any)</em> The data loaded on this container.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.Container.all">
<span class="sig-name descname"><span class="pre">all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#Container.all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.Container.all" title="Link to this definition"></a></dt>
<dd><p>Get all stored data</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>scripts (list)</em> All global script objects stored on the container.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.utils.containers.OptionContainer">
<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.containers.</span></span><span class="sig-name descname"><span class="pre">OptionContainer</span></span><a class="reference internal" href="../_modules/evennia/utils/containers.html#OptionContainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.OptionContainer" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.containers.Container" title="evennia.utils.containers.Container"><code class="xref py py-class docutils literal notranslate"><span class="pre">Container</span></code></a></p>
<p>Loads and stores the final list of OPTION CLASSES.</p>
<p>Can access these as properties or dictionary-contents.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.utils.containers.OptionContainer.storage_modules">
<span class="sig-name descname"><span class="pre">storage_modules</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.optionclasses']</span></em><a class="headerlink" href="#evennia.utils.containers.OptionContainer.storage_modules" 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.containers.GlobalScriptContainer">
<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.containers.</span></span><span class="sig-name descname"><span class="pre">GlobalScriptContainer</span></span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.utils.containers.Container" title="evennia.utils.containers.Container"><code class="xref py py-class docutils literal notranslate"><span class="pre">Container</span></code></a></p>
<p>Simple Handler object loaded by the Evennia API to contain and manage a
games Global Scripts. This will list global Scripts created on their own
but will also auto-(re)create scripts defined in <strong>settings.GLOBAL_SCRIPTS</strong>.</p>
<p class="rubric">Example</p>
<p>import evennia
evennia.GLOBAL_SCRIPTS.scriptname</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This does not use much of the BaseContainer since its not loading
callables from settings but a custom dict of tuples.</p>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.GlobalScriptContainer.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer.__init__" title="Link to this definition"></a></dt>
<dd><p>Note: We must delay loading of typeclasses since this module may get
initialized before Scripts are actually initialized.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.GlobalScriptContainer.start">
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer.start" title="Link to this definition"></a></dt>
<dd><p>Called last in evennia.__init__ to initialize the container late
(after script typeclasses have finished loading).</p>
<p>We include all global scripts in the handler and
make sure to auto-load time-based scripts.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.GlobalScriptContainer.load_data">
<span class="sig-name descname"><span class="pre">load_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer.load_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer.load_data" title="Link to this definition"></a></dt>
<dd><p>This delayed import avoids trying to load Scripts before they are
initialized.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.GlobalScriptContainer.get">
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer.get"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer.get" title="Link to this definition"></a></dt>
<dd><p>Retrive data by key (in case of not knowing it beforehand). Any
scripts that are in settings.GLOBAL_SCRIPTS that are not found
will be recreated on-demand.</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>key</strong> (<em>str</em>) The name of the script.</p></li>
<li><p><strong>default</strong> (<em>any</em><em>, </em><em>optional</em>) Value to return if key is not found
at all on this container (i.e it cannot be loaded at all).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>any (any)</em> The data loaded on this container.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.utils.containers.GlobalScriptContainer.all">
<span class="sig-name descname"><span class="pre">all</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/containers.html#GlobalScriptContainer.all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.utils.containers.GlobalScriptContainer.all" title="Link to this definition"></a></dt>
<dd><p>Get all global scripts. Note that this will not auto-start
scripts defined in settings.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>list</em> </p>
<dl class="simple">
<dt>All global script objects in game (both managed and unmanaged),</dt><dd><p>sorted alphabetically.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</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.containers</a><ul>
<li><a class="reference internal" href="#evennia.utils.containers.Container"><code class="docutils literal notranslate"><span class="pre">Container</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.containers.Container.storage_modules"><code class="docutils literal notranslate"><span class="pre">Container.storage_modules</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.Container.__init__"><code class="docutils literal notranslate"><span class="pre">Container.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.Container.load_data"><code class="docutils literal notranslate"><span class="pre">Container.load_data()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.Container.get"><code class="docutils literal notranslate"><span class="pre">Container.get()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.Container.all"><code class="docutils literal notranslate"><span class="pre">Container.all()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.containers.OptionContainer"><code class="docutils literal notranslate"><span class="pre">OptionContainer</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.containers.OptionContainer.storage_modules"><code class="docutils literal notranslate"><span class="pre">OptionContainer.storage_modules</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer</span></code></a><ul>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer.__init__"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer.start"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer.start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer.load_data"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer.load_data()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer.get"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer.get()</span></code></a></li>
<li><a class="reference internal" href="#evennia.utils.containers.GlobalScriptContainer.all"><code class="docutils literal notranslate"><span class="pre">GlobalScriptContainer.all()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.utils.batchprocessors.html"
title="previous chapter">evennia.utils.batchprocessors</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.utils.create.html"
title="next chapter">evennia.utils.create</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.containers.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/6.x/index.html">v6.0.0 branch (outdated)</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.create.html" title="evennia.utils.create"
>next</a> |</li>
<li class="right" >
<a href="evennia.utils.batchprocessors.html" title="evennia.utils.batchprocessors"
>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-this"><a href="">evennia.utils.containers</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>