<spanid="evennia-contrib-base-systems-components-holder"></span><h1>evennia.contrib.base_systems.components.holder<aclass="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>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><codeclass="sig-name descname">ComponentProperty</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">component_name</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentProperty"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentProperty"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">component_name</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentProperty.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentProperty.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes the descriptor</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="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>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><codeclass="sig-name descname">ComponentHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">host</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">host</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">component</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="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 host’s component name list.
It will also call the component’s ‘at_added’ method, passing its host.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>component</strong> (<em>object</em>) – The ‘loaded’ component instance to add.</p>
<codeclass="sig-name descname">add_default</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.add_default"><spanclass="viewcode-link">[source]</span></a><aclass="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 component’s ‘at_added’ method, passing its host.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>name</strong> (<em>str</em>) – The name of the component class to add.</p>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">component</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="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 component’s ‘at_removed’ method.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>component</strong> (<em>object</em>) – The component instance to remove.</p>
<codeclass="sig-name descname">remove_by_name</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.remove_by_name"><spanclass="viewcode-link">[source]</span></a><aclass="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 component’s ‘at_removed’ method.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>name</strong> (<em>str</em>) – The name of the component to remove.</p>
<codeclass="sig-name descname">get</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.get"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>name</strong> (<em>str</em>) – The name of the component to retrieve.</p>
<codeclass="sig-name descname">has</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.has"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>name</strong> (<em>str</em>) – The name of the component.</p>
<codeclass="sig-name descname">initialize</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHandler.initialize"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<emclass="property">property </em><codeclass="sig-name descname">db_names</code><aclass="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>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>component_names (iterable)</em>– The name of each component that is registered</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><codeclass="sig-name descname">ComponentHolderMixin</code><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_init</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_init"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<codeclass="sig-name descname">at_post_puppet</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_post_puppet"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_puppet"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_post_unpuppet</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.at_post_unpuppet"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.at_post_unpuppet"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">basetype_setup</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.basetype_setup"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<codeclass="sig-name descname">basetype_posthook_setup</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentHolderMixin.basetype_posthook_setup"><spanclass="viewcode-link">[source]</span></a><aclass="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>
<emclass="property">property </em><codeclass="sig-name descname">components</code><aclass="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 Host’s ComponentHandler</p>
<emclass="property">property </em><codeclass="sig-name descname">cmp</code><aclass="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 Host’s ComponentHandler</p>
<emclass="property">property </em><codeclass="sig-name descname">signals</code><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.signals"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><codeclass="sig-name descname">ComponentDoesNotExist</code><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentDoesNotExist"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentDoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-prename descclassname">evennia.contrib.base_systems.components.holder.</code><codeclass="sig-name descname">ComponentIsNotRegistered</code><aclass="reference internal"href="../_modules/evennia/contrib/base_systems/components/holder.html#ComponentIsNotRegistered"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.base_systems.components.holder.ComponentIsNotRegistered"title="Permalink to this definition">¶</a></dt>