evennia/docs/2.x/api/evennia.contrib.base_systems.components.holder.html
Evennia docbuilder action e535f5782a Updated HTML docs.
2023-10-19 20:22:27 +00:00

360 lines
No EOL
26 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>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.contrib.base_systems.components.holder &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.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="shortcut 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.contrib.base_systems.components.signals" href="evennia.contrib.base_systems.components.signals.html" />
<link rel="prev" title="evennia.contrib.base_systems.components.dbfield" href="evennia.contrib.base_systems.components.dbfield.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<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.contrib.base_systems.components.signals.html" title="evennia.contrib.base_systems.components.signals"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.dbfield.html" title="evennia.contrib.base_systems.components.dbfield"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</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.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.components.html" accesskey="U">evennia.contrib.base_systems.components</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.components.holder</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<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>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.components.dbfield.html"
title="previous chapter">evennia.contrib.base_systems.components.dbfield</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.contrib.base_systems.components.signals.html"
title="next chapter">evennia.contrib.base_systems.components.signals</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.contrib.base_systems.components.holder.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="evennia.contrib.base_systems.components.holder.html">2.x (main branch)</a></li>
<ul>
<li><a href="../1.3.0/index.html">1.3.0 (v1.3.0 branch)</a></li>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.contrib.base_systems.components.holder">
<span id="evennia-contrib-base-systems-components-holder"></span><h1>evennia.contrib.base_systems.components.holder<a class="headerlink" href="#module-evennia.contrib.base_systems.components.holder" title="Permalink to this headline"></a></h1>
<p>Components - ChrisLR 2022</p>
<p>This file contains the classes that allow a typeclass to use components.</p>
<dl class="py class">
<dt id="evennia.contrib.base_systems.components.holder.ComponentProperty">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><code class="sig-name descname">ComponentProperty</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">component_name</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentProperty"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentProperty" 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>
<p>This allows you to register a component on a typeclass.
Components registered with this property are automatically added
to any instance of this typeclass.</p>
<p>Defaults can be overridden for this typeclass by passing kwargs</p>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentProperty.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">component_name</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentProperty.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentProperty.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initializes the descriptor</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>component_name</strong> (<em>str</em>) The name of the component</p></li>
<li><p><strong>**kwargs</strong> (<em>any</em>) Key=Values overriding default values of the component</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><code class="sig-name descname">ComponentHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler" 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>
<p>This is the handler that will be added to any typeclass that inherits from ComponentHolder.
It lets you add or remove components and will load components as needed.
It stores the list of registered components on the host .db with component_names as key.</p>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">host</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">component</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.add" title="Permalink to this definition"></a></dt>
<dd><p>Method to add a Component to a host.
It caches the loaded component and appends its name to the hosts component name list.
It will also call the components at_added method, passing its host.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>component</strong> (<em>object</em>) The loaded component instance to add.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.add_default">
<code class="sig-name descname">add_default</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.add_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.add_default" title="Permalink to this definition"></a></dt>
<dd><p>Method to add a Component initialized to default values on a host.
It will retrieve the proper component and instanciate it with default_create.
It will cache this new component and add it to its list.
It will also call the components at_added method, passing its host.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> (<em>str</em>) The name of the component class to add.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.remove">
<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">component</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.remove" title="Permalink to this definition"></a></dt>
<dd><p>Method to remove a component instance from a host.
It removes the component from the cache and listing.
It will call the components at_removed method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>component</strong> (<em>object</em>) The component instance to remove.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.remove_by_name">
<code class="sig-name descname">remove_by_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.remove_by_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.remove_by_name" title="Permalink to this definition"></a></dt>
<dd><p>Method to remove a component instance from a host.
It removes the component from the cache and listing.
It will call the components at_removed method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> (<em>str</em>) The name of the component to remove.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Method to retrieve a cached Component instance by its name.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> (<em>str</em>) The name of the component to retrieve.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.has">
<code class="sig-name descname">has</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.has"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.has" title="Permalink to this definition"></a></dt>
<dd><p>Method to check if a component is registered and ready.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> (<em>str</em>) The name of the component.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.initialize">
<code class="sig-name descname">initialize</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.initialize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.initialize" title="Permalink to this definition"></a></dt>
<dd><p>Method that loads and caches each component currently registered on the host.
It retrieves the names from the registered listing and calls load on each
prototype class that can be found from this listing.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHandler.db_names">
<em class="property">property </em><code class="sig-name descname">db_names</code><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHandler.db_names" title="Permalink to this definition"></a></dt>
<dd><p>Property shortcut to retrieve the registered component names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>component_names (iterable)</em> The name of each component that is registered</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><code class="sig-name descname">ComponentHolderMixin</code><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin" 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>
<p>Mixin to add component support to a typeclass</p>
<p>Components are set on objects using the component.name as an object attribute.
All registered components are initialized on the typeclass.
They will be of None value if not present in the class components or runtime components.</p>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_init">
<code class="sig-name descname">at_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_init" title="Permalink to this definition"></a></dt>
<dd><p>Method that initializes the ComponentHandler.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_puppet">
<code class="sig-name descname">at_post_puppet</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_post_puppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_puppet" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_unpuppet">
<code class="sig-name descname">at_post_unpuppet</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_post_unpuppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_unpuppet" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.basetype_setup">
<code class="sig-name descname">basetype_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.basetype_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.basetype_setup" title="Permalink to this definition"></a></dt>
<dd><p>Method that initializes the ComponentHandler, creates and registers all
components that were set on the typeclass using ComponentProperty.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.basetype_posthook_setup">
<code class="sig-name descname">basetype_posthook_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.basetype_posthook_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.basetype_posthook_setup" title="Permalink to this definition"></a></dt>
<dd><p>Method that add component related tags that were set using ComponentProperty.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.components">
<em class="property">property </em><code class="sig-name descname">components</code><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.components" title="Permalink to this definition"></a></dt>
<dd><p>Property getter to retrieve the component_handler.
:returns: <em>ComponentHandler</em> This Hosts ComponentHandler</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.cmp">
<em class="property">property </em><code class="sig-name descname">cmp</code><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.cmp" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut Property getter to retrieve the component_handler.
:returns: <em>ComponentHandler</em> This Hosts ComponentHandler</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.base_systems.components.holder.ComponentHolderMixin.signals">
<em class="property">property </em><code class="sig-name descname">signals</code><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.signals" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.base_systems.components.holder.ComponentDoesNotExist">
<em class="property">exception </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><code class="sig-name descname">ComponentDoesNotExist</code><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentDoesNotExist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentDoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.base_systems.components.holder.ComponentIsNotRegistered">
<em class="property">exception </em><code class="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><code class="sig-name descname">ComponentIsNotRegistered</code><a class="reference internal" href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentIsNotRegistered"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.components.holder.ComponentIsNotRegistered" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Exception</span></code></p>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<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.contrib.base_systems.components.signals.html" title="evennia.contrib.base_systems.components.signals"
>next</a> |</li>
<li class="right" >
<a href="evennia.contrib.base_systems.components.dbfield.html" title="evennia.contrib.base_systems.components.dbfield"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</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.contrib.html" >evennia.contrib</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.contrib.base_systems.html" >evennia.contrib.base_systems</a> &#187;</li>
<li class="nav-item nav-item-6"><a href="evennia.contrib.base_systems.components.html" >evennia.contrib.base_systems.components</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.components.holder</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>