<spanid="evennia-scripts-package"></span><h1>evennia.scripts package<aclass="headerlink"href="#module-evennia.scripts"title="Permalink to this headline">¶</a></h1>
<p>This sub-package holds the Scripts system. Scripts are database
entities that can store data both in connection to Objects and Accounts
or globally. They may also have a timer-component to execute various
timed effects.</p>
<divclass="section"id="subpackages">
<h2>Subpackages<aclass="headerlink"href="#subpackages"title="Permalink to this headline">¶</a></h2>
<divclass="toctree-wrapper compound">
</div>
</div>
<divclass="section"id="submodules">
<h2>Submodules<aclass="headerlink"href="#submodules"title="Permalink to this headline">¶</a></h2>
<spanid="evennia-scripts-admin-module"></span><h2>evennia.scripts.admin module<aclass="headerlink"href="#module-evennia.scripts.admin"title="Permalink to this headline">¶</a></h2>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.admin.</code><codeclass="sig-name descname">ScriptAttributeInline</code><spanclass="sig-paren">(</span><emclass="sig-param">parent_model</em>, <emclass="sig-param">admin_site</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/admin.html#ScriptAttributeInline"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.admin.ScriptAttributeInline"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">media</code><aclass="headerlink"href="#evennia.scripts.admin.ScriptAttributeInline.media"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">model</code><aclass="headerlink"href="#evennia.scripts.admin.ScriptAttributeInline.model"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">evennia.scripts.models.ScriptDB_db_attributes</span></code></p>
<codeclass="sig-name descname">related_field</code><emclass="property"> = 'scriptdb'</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptAttributeInline.related_field"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.admin.ScriptDBAdmin">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.admin.</code><codeclass="sig-name descname">ScriptDBAdmin</code><spanclass="sig-paren">(</span><emclass="sig-param">model</em>, <emclass="sig-param">admin_site</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/admin.html#ScriptDBAdmin"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">inlines</code><emclass="property"> = [<class 'evennia.scripts.admin.ScriptTagInline'>, <class 'evennia.scripts.admin.ScriptAttributeInline'>]</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.inlines"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">list_display_links</code><emclass="property"> = ('id', 'db_key')</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.list_display_links"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">list_select_related</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.list_select_related"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">media</code><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.media"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">ordering</code><emclass="property"> = ['db_obj', 'db_typeclass_path']</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.ordering"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">raw_id_fields</code><emclass="property"> = ('db_obj',)</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.raw_id_fields"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">save_as</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.save_as"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">save_model</code><spanclass="sig-paren">(</span><emclass="sig-param">request</em>, <emclass="sig-param">obj</em>, <emclass="sig-param">form</em>, <emclass="sig-param">change</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/admin.html#ScriptDBAdmin.save_model"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.save_model"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">save_on_top</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.save_on_top"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">search_fields</code><emclass="property"> = ['^db_key', 'db_typeclass_path']</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptDBAdmin.search_fields"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.admin.ScriptTagInline">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.admin.</code><codeclass="sig-name descname">ScriptTagInline</code><spanclass="sig-paren">(</span><emclass="sig-param">parent_model</em>, <emclass="sig-param">admin_site</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/admin.html#ScriptTagInline"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.admin.ScriptTagInline"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">media</code><aclass="headerlink"href="#evennia.scripts.admin.ScriptTagInline.media"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">model</code><aclass="headerlink"href="#evennia.scripts.admin.ScriptTagInline.model"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">evennia.scripts.models.ScriptDB_db_tags</span></code></p>
<codeclass="sig-name descname">related_field</code><emclass="property"> = 'scriptdb'</em><aclass="headerlink"href="#evennia.scripts.admin.ScriptTagInline.related_field"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-manager-module"></span><h2>evennia.scripts.manager module<aclass="headerlink"href="#module-evennia.scripts.manager"title="Permalink to this headline">¶</a></h2>
<p>The custom manager for Scripts.</p>
<dlclass="class">
<dtid="evennia.scripts.manager.ScriptManager">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.manager.</code><codeclass="sig-name descname">ScriptManager</code><aclass="reference internal"href="../_modules/evennia/scripts/manager.html#ScriptManager"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.manager.ScriptManager"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-models-module"></span><h2>evennia.scripts.models module<aclass="headerlink"href="#module-evennia.scripts.models"title="Permalink to this headline">¶</a></h2>
<p>Scripts are entities that perform some sort of action, either only
once or repeatedly. They can be directly linked to a particular
Evennia Object or be stand-alonw (in the latter case it is considered
a ‘global’ script). Scripts can indicate both actions related to the
game world as well as pure behind-the-scenes events and effects.
Everything that has a time component in the game (i.e. is not
hard-coded at startup or directly created/controlled by players) is
handled by Scripts.</p>
<p>Scripts have to check for themselves that they should be applied at a
particular moment of time; this is handled by the is_valid() hook.
Scripts can also implement at_start and at_end hooks for preparing and
cleaning whatever effect they have had on the game object.</p>
<p>Common examples of uses of Scripts:</p>
<ulclass="simple">
<li><p>Load the default cmdset to the account object’s cmdhandler
when logging in.</p></li>
<li><p>Switch to a different state, such as entering a text editor,
start combat or enter a dark room.</p></li>
<li><p>Merge a new cmdset with the default one for changing which
commands are available at a particular time</p></li>
<li><p>Give the account/object a time-limited bonus/effect</p></li>
</ul>
<dlclass="class">
<dtid="evennia.scripts.models.ScriptDB">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.models.</code><codeclass="sig-name descname">ScriptDB</code><spanclass="sig-paren">(</span><emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/models.html#ScriptDB"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.models.ScriptDB"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">_ScriptDB__get_obj</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.models.ScriptDB._ScriptDB__get_obj"title="Permalink to this definition">¶</a></dt>
<dd><p>Property wrapper that homogenizes access to either the
db_account or db_obj field, using the same object property
<codeclass="sig-name descname">_ScriptDB__set_obj</code><spanclass="sig-paren">(</span><emclass="sig-param">value</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.models.ScriptDB._ScriptDB__set_obj"title="Permalink to this definition">¶</a></dt>
<dd><p>Set account or obj to their right database field. If
<codeclass="sig-name descname">_is_deleted</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.scripts.models.ScriptDB._is_deleted"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB._meta">
<codeclass="sig-name descname">_meta</code><emclass="property"> = <Options for ScriptDB></em><aclass="headerlink"href="#evennia.scripts.models.ScriptDB._meta"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.account">
<emclass="property">property </em><codeclass="sig-name descname">account</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.account"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_account</cite>.</p>
<codeclass="sig-name descname">db_account</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_account"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<p><codeclass="docutils literal notranslate"><spanclass="pre">Child.parent</span></code> is a <codeclass="docutils literal notranslate"><spanclass="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
<codeclass="sig-name descname">db_account_id</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_account_id"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_attributes</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_attributes"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><codeclass="docutils literal notranslate"><spanclass="pre">Pizza.toppings</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Topping.pizzas</span></code> are <codeclass="docutils literal notranslate"><spanclass="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <codeclass="docutils literal notranslate"><spanclass="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.db_desc">
<codeclass="sig-name descname">db_desc</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_desc"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_interval</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_interval"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_is_active</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_is_active"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.db_obj">
<codeclass="sig-name descname">db_obj</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_obj"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<p><codeclass="docutils literal notranslate"><spanclass="pre">Child.parent</span></code> is a <codeclass="docutils literal notranslate"><spanclass="pre">ForwardManyToOneDescriptor</span></code> instance.</p>
<codeclass="sig-name descname">db_obj_id</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_obj_id"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_persistent</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_persistent"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_repeats</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_repeats"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_start_delay</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_start_delay"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.db_tags">
<codeclass="sig-name descname">db_tags</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.db_tags"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><codeclass="docutils literal notranslate"><spanclass="pre">Pizza.toppings</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Topping.pizzas</span></code> are <codeclass="docutils literal notranslate"><spanclass="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <codeclass="docutils literal notranslate"><spanclass="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.desc">
<emclass="property">property </em><codeclass="sig-name descname">desc</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.desc"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_desc</cite>.</p>
<codeclass="sig-name descname">get_next_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=True</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.get_next_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_previous_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=False</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.get_previous_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.id">
<codeclass="sig-name descname">id</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.id"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.interval">
<emclass="property">property </em><codeclass="sig-name descname">interval</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.interval"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_interval</cite>.</p>
<emclass="property">property </em><codeclass="sig-name descname">is_active</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.is_active"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_is_active</cite>.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.obj">
<emclass="property">property </em><codeclass="sig-name descname">obj</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.obj"title="Permalink to this definition">¶</a></dt>
<dd><p>Property wrapper that homogenizes access to either the
db_account or db_obj field, using the same object property
name.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.object">
<emclass="property">property </em><codeclass="sig-name descname">object</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.object"title="Permalink to this definition">¶</a></dt>
<dd><p>Property wrapper that homogenizes access to either the
db_account or db_obj field, using the same object property
name.</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.objects">
<codeclass="sig-name descname">objects</code><emclass="property"> = <evennia.scripts.manager.ScriptDBManager object></em><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.objects"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.path">
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.scripts.models.ScriptDB'</em><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.path"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">persistent</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.persistent"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_persistent</cite>.</p>
<codeclass="sig-name descname">receiver_script_set</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.receiver_script_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><codeclass="docutils literal notranslate"><spanclass="pre">Pizza.toppings</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">Topping.pizzas</span></code> are <codeclass="docutils literal notranslate"><spanclass="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <codeclass="docutils literal notranslate"><spanclass="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.models.ScriptDB.repeats">
<emclass="property">property </em><codeclass="sig-name descname">repeats</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.repeats"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_repeats</cite>.</p>
<codeclass="sig-name descname">sender_script_set</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.sender_script_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<emclass="property">property </em><codeclass="sig-name descname">start_delay</code><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.start_delay"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <cite>db_start_delay</cite>.</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.models.ScriptDB.typename">
<codeclass="sig-name descname">typename</code><emclass="property"> = 'SharedMemoryModelBase'</em><aclass="headerlink"href="#evennia.scripts.models.ScriptDB.typename"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-monitorhandler-module"></span><h2>evennia.scripts.monitorhandler module<aclass="headerlink"href="#module-evennia.scripts.monitorhandler"title="Permalink to this headline">¶</a></h2>
<p>Monitors - catch changes to model fields and Attributes.</p>
<p>The MONITOR_HANDLER singleton from this module offers the following
functionality:</p>
<ulclass="simple">
<li><dlclass="simple">
<dt>Field-monitor - track a object’s specific database field and perform</dt><dd><p>an action whenever that field <em>changes</em> for whatever reason.</p>
</dd>
</dl>
</li>
<li><dlclass="simple">
<dt>Attribute-monitor tracks an object’s specific Attribute and perform</dt><dd><p>an action whenever that Attribute <em>changes</em> for whatever reason.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.monitorhandler.</code><codeclass="sig-name descname">MonitorHandler</code><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param">obj</em>, <emclass="sig-param">fieldname</em>, <emclass="sig-param">callback</em>, <emclass="sig-param">idstring=''</em>, <emclass="sig-param">persistent=False</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Add monitoring to a given field or Attribute. A field must
be specified with the full db_* name or it will be assumed
to be an Attribute (so <cite>db_key</cite>, not just <cite>key</cite>).</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>obj</strong> (<em>Typeclassed Entity</em>) – The entity on which to monitor a
field or Attribute.</p></li>
<li><p><strong>fieldname</strong> (<em>str</em>) – Name of field (db_*) or Attribute to monitor.</p></li>
<li><p><strong>callback</strong> (<em>callable</em>) – A callable on the form <ahref="#id1"><spanclass="problematic"id="id2">`</span></a>callable(<ahref="#id3"><spanclass="problematic"id="id4">**</span></a>kwargs),
where kwargs holds keys fieldname and obj.</p></li>
<li><p><strong>idstring</strong> (<em>str</em><em>, </em><em>optional</em>) – An id to separate this monitor from other monitors
of the same field and object.</p></li>
<li><p><strong>persistent</strong> (<em>bool</em><em>, </em><em>optional</em>) – If False, the monitor will survive
a server reload but not a cold restart. This is default.</p></li>
</ul>
</dd>
</dl>
<dlclass="simple">
<dt>Kwargs:</dt><dd><dlclass="simple">
<dt>session (Session): If this keyword is given, the monitorhandler will</dt><dd><p>correctly analyze it and remove the monitor if after a reload/reboot
the session is no longer valid.</p>
</dd>
<dt>any (any): Any other kwargs are passed on to the callback. Remember that</dt><dd><p>all kwargs must be possible to pickle!</p>
<codeclass="sig-name descname">all</code><spanclass="sig-paren">(</span><emclass="sig-param">obj=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.all"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.all"title="Permalink to this definition">¶</a></dt>
<dd><p>List all monitors or all monitors of a given object.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>obj</strong> (<em>Object</em>) – The object on which to list all monitors.</p>
<codeclass="sig-name descname">at_update</code><spanclass="sig-paren">(</span><emclass="sig-param">obj</em>, <emclass="sig-param">fieldname</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.at_update"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.at_update"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">clear</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.clear"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.clear"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param">obj</em>, <emclass="sig-param">fieldname</em>, <emclass="sig-param">idstring=''</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.remove"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">restore</code><spanclass="sig-paren">(</span><emclass="sig-param">server_reload=True</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.restore"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.restore"title="Permalink to this definition">¶</a></dt>
<dd><p>Restore our monitors after a reload. This is called
by the server process.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>server_reload</strong> (<em>bool</em><em>, </em><em>optional</em>) – If this is False, it means
<codeclass="sig-name descname">save</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/monitorhandler.html#MonitorHandler.save"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.monitorhandler.MonitorHandler.save"title="Permalink to this definition">¶</a></dt>
<dd><p>Store our monitors to the database. This is called
by the server process.</p>
<p>Since dbserialize can’t handle defaultdicts, we convert to an
intermediary save format ((obj,fieldname, idstring, callback, kwargs), …)</p>
</dd></dl>
</dd></dl>
<dlclass="function">
<dtid="evennia.scripts.monitorhandler._DA">
<codeclass="sig-prename descclassname">evennia.scripts.monitorhandler.</code><codeclass="sig-name descname">_DA</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.monitorhandler._DA"title="Permalink to this definition">¶</a></dt>
<dd><p>Implement delattr(self, name).</p>
</dd></dl>
<dlclass="function">
<dtid="evennia.scripts.monitorhandler._GA">
<codeclass="sig-prename descclassname">evennia.scripts.monitorhandler.</code><codeclass="sig-name descname">_GA</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.monitorhandler._GA"title="Permalink to this definition">¶</a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dlclass="function">
<dtid="evennia.scripts.monitorhandler._SA">
<codeclass="sig-prename descclassname">evennia.scripts.monitorhandler.</code><codeclass="sig-name descname">_SA</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.monitorhandler._SA"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-scripthandler-module"></span><h2>evennia.scripts.scripthandler module<aclass="headerlink"href="#module-evennia.scripts.scripthandler"title="Permalink to this headline">¶</a></h2>
<p>The script handler makes sure to check through all stored scripts to
make sure they are still relevant. A scripthandler is automatically
added to all game objects. You access it through the property
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.scripthandler.</code><codeclass="sig-name descname">ScriptHandler</code><spanclass="sig-paren">(</span><emclass="sig-param">obj</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param">obj</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Set up internal state.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>obj</strong> (<em>Object</em>) – A reference to the object this handler is
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param">scriptclass</em>, <emclass="sig-param">key=None</em>, <emclass="sig-param">autostart=True</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Add a script to this object.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>scriptclass</strong> (<em>Scriptclass</em><em>, </em><em>Script</em><em> or </em><em>str</em>) – Either a class
object inheriting from DefaultScript, an instantiated
script object or a python path to such a class object.</p></li>
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) – Identifier for the script (often set
in script definition and listings)</p></li>
<li><p><strong>autostart</strong> (<em>bool</em><em>, </em><em>optional</em>) – Start the script upon adding it.</p></li>
<codeclass="sig-name descname">all</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.all"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.all"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all scripts stored in this handler.</p>
<codeclass="sig-name descname">delete</code><spanclass="sig-paren">(</span><emclass="sig-param">key=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.delete"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.delete"title="Permalink to this definition">¶</a></dt>
<dd><p>Forcibly delete a script from this object.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) – A script key or the path to a script (in the
latter case all scripts with this path will be deleted!)
If no key is given, delete <em>all</em> scripts on the object!</p>
<codeclass="sig-name descname">get</code><spanclass="sig-paren">(</span><emclass="sig-param">key</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.get"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.get"title="Permalink to this definition">¶</a></dt>
<dd><p>Search scripts on this object.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em>) – Search criterion, the script’s key or dbref.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p>The found scripts matching <cite>key</cite>.</p>
<codeclass="sig-name descname">start</code><spanclass="sig-paren">(</span><emclass="sig-param">key</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.start"title="Permalink to this definition">¶</a></dt>
<dd><p>Find scripts and force-start them</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em>) – The script’s key or dbref.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p>The number of started scripts found.</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><emclass="sig-param">key=None</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Forcibly delete a script from this object.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) – A script key or the path to a script (in the
latter case all scripts with this path will be deleted!)
If no key is given, delete <em>all</em> scripts on the object!</p>
<codeclass="sig-name descname">validate</code><spanclass="sig-paren">(</span><emclass="sig-param">init_mode=False</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripthandler.html#ScriptHandler.validate"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripthandler.ScriptHandler.validate"title="Permalink to this definition">¶</a></dt>
<dd><p>Runs a validation on this object’s scripts only. This should
<spanid="evennia-scripts-scripts-module"></span><h2>evennia.scripts.scripts module<aclass="headerlink"href="#module-evennia.scripts.scripts"title="Permalink to this headline">¶</a></h2>
<p>This module defines Scripts, out-of-character entities that can store
data both on themselves and on other objects while also having the
ability to run timers.</p>
<dlclass="class">
<dtid="evennia.scripts.scripts.DefaultScript">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.scripts.</code><codeclass="sig-name descname">DefaultScript</code><spanclass="sig-paren">(</span><emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">_meta</code><emclass="property"> = <Options for DefaultScript></em><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript._meta"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_idmapper_flush</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_idmapper_flush"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_idmapper_flush"title="Permalink to this definition">¶</a></dt>
<dd><p>If we’re flushing this object, make sure the LoopingCall is gone too</p>
<codeclass="sig-name descname">at_repeat</code><spanclass="sig-paren">(</span><emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Called repeatedly if this Script is set to repeat regularly.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) – Arbitrary, optional arguments for users
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Only called once, when script is first created.</p>
<codeclass="sig-name descname">at_server_reload</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_reload"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_server_reload"title="Permalink to this definition">¶</a></dt>
<dd><p>This hook is called whenever the server is shutting down for
restart/reboot. If you want to, for example, save
non-persistent properties across a restart, this is the place
<codeclass="sig-name descname">at_server_shutdown</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_shutdown"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_server_shutdown"title="Permalink to this definition">¶</a></dt>
<dd><p>This hook is called whenever the server is shutting down fully
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Called whenever the script is started, which for persistent
scripts is at least once every server start. It will also be
called when starting again after a pause (such as after a
server reload)</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) – Arbitrary, optional arguments for users
<codeclass="sig-name descname">at_stop</code><spanclass="sig-paren">(</span><emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Called whenever when it’s time for this script to stop (either
because is_valid returned False or it runs out of iterations)</p>
<dlclass="simple">
<dt>Args</dt><dd><dlclass="simple">
<dt><ahref="#id5"><spanclass="problematic"id="id6">**</span></a>kwargs (dict): Arbitrary, optional arguments for users</dt><dd><p>overriding the call (unused by default).</p>
<emclass="property">classmethod </em><codeclass="sig-name descname">create</code><spanclass="sig-paren">(</span><emclass="sig-param">key</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.create"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.create"title="Permalink to this definition">¶</a></dt>
<dd><p>Provides a passthrough interface to the utils.create_script() function.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em>) – Name of the new object.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p>A newly created object of the given typeclass.
errors (list): A list of errors in string form, if any.</p>
<codeclass="sig-name descname">force_repeat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.force_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.force_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Fire a premature triggering of the script callback. This
will reset the timer and count down repeats as if the script
<codeclass="sig-name descname">is_valid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.is_valid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.is_valid"title="Permalink to this definition">¶</a></dt>
<dd><p>Is called to check if the script is valid to run at this time.
Should return a boolean. The method is assumed to collect all
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.scripts.scripts.DefaultScript'</em><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">pause</code><spanclass="sig-paren">(</span><emclass="sig-param">manual_pause=True</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.pause"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.pause"title="Permalink to this definition">¶</a></dt>
<dd><p>This stops a running script and stores its active state.
It WILL NOT call the <cite>at_stop()</cite> hook.</p>
<codeclass="sig-name descname">remaining_repeats</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.remaining_repeats"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.remaining_repeats"title="Permalink to this definition">¶</a></dt>
<dd><p>Get the number of returning repeats for limited Scripts.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><dlclass="simple">
<dt>The number of repeats</dt><dd><p>remaining until the Script stops. Returns <cite>None</cite>
if it has unlimited repeats.</p>
</dd>
</dl>
</p>
</dd>
<dtclass="field-even">Return type</dt>
<ddclass="field-even"><p>remaining (int or <cite>None</cite>)</p>
<codeclass="sig-name descname">reset_callcount</code><spanclass="sig-paren">(</span><emclass="sig-param">value=0</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.reset_callcount"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.reset_callcount"title="Permalink to this definition">¶</a></dt>
<dd><p>Reset the count of the number of calls done.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>value</strong> (<em>int</em><em>, </em><em>optional</em>) – The repeat value to reset to. Default
<codeclass="sig-name descname">restart</code><spanclass="sig-paren">(</span><emclass="sig-param">interval=None</em>, <emclass="sig-param">repeats=None</em>, <emclass="sig-param">start_delay=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.restart"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.restart"title="Permalink to this definition">¶</a></dt>
<dd><p>Restarts an already existing/running Script from the
beginning, optionally using different settings. This will
first call the stop hooks, and then the start hooks again.
:param interval: Allows for changing the interval</p>
<blockquote>
<div><p>of the Script. Given in seconds. if <cite>None</cite>, will use the already stored interval.</p>
</div></blockquote>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>repeats</strong> (<em>int</em><em>, </em><em>optional</em>) – The number of repeats. If unset, will
use the previous setting.</p></li>
<li><p><strong>start_delay</strong> (<em>bool</em><em>, </em><em>optional</em>) – If we should wait <cite>interval</cite> seconds
before starting or not. If <cite>None</cite>, re-use the previous setting.</p></li>
<codeclass="sig-name descname">start</code><spanclass="sig-paren">(</span><emclass="sig-param">force_restart=False</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.start"title="Permalink to this definition">¶</a></dt>
<dd><p>Called every time the script is started (for persistent
scripts, this is usually once every server start)</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>force_restart</strong> (<em>bool</em><em>, </em><em>optional</em>) – Normally an already
started script will not be started again. if
<cite>force_restart=True</cite>, the script will always restart
the script, regardless of if it has started before.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><dlclass="simple">
<dt>0 or 1 depending on if the script successfully</dt><dd><p>started or not. Used in counting.</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><emclass="sig-param">kill=False</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Called to stop the script from running. This also deletes the
<codeclass="sig-name descname">time_until_next_repeat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.time_until_next_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.time_until_next_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Get time until the script fires it <cite>at_repeat</cite> hook again.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><dlclass="simple">
<dt>Time in seconds until the script runs again.</dt><dd><p>If not a timed script, return <cite>None</cite>.</p>
</dd>
</dl>
</p>
</dd>
<dtclass="field-even">Return type</dt>
<ddclass="field-even"><p>next (int)</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This hook is not used in any way by the script’s stepping
system; it’s only here for the user to be able to check in
on their scripts and when they will next be run.</p>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'DefaultScript'</em><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.typename"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">unpause</code><spanclass="sig-paren">(</span><emclass="sig-param">manual_unpause=True</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.unpause"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.unpause"title="Permalink to this definition">¶</a></dt>
<dd><p>Restart a paused script. This WILL call the <cite>at_start()</cite> hook.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>manual_unpause</strong> (<em>bool</em><em>, </em><em>optional</em>) – This is False if unpause is
called by the server reload/reset mechanism.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p>True if unpause was triggered, False otherwise.</p>
</dd>
<dtclass="field-odd">Return type</dt>
<ddclass="field-odd"><p>result (bool)</p>
</dd>
<dtclass="field-even">Raises</dt>
<ddclass="field-even"><p><strong>RuntimeError</strong>– If trying to automatically resart this script
(usually after a reset/reload), but it was manually paused,
and so should not the auto-unpaused.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.scripts.DoNothing">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.scripts.</code><codeclass="sig-name descname">DoNothing</code><spanclass="sig-paren">(</span><emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DoNothing"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">_meta</code><emclass="property"> = <Options for DoNothing></em><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing._meta"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DoNothing.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Setup the script</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.scripts.DoNothing.path">
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.scripts.scripts.DoNothing'</em><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'DoNothing'</em><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.typename"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.scripts.Store">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.scripts.</code><codeclass="sig-name descname">Store</code><spanclass="sig-paren">(</span><emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#Store"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.Store"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.scripts.scripts.Store.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.scripts.scripts.Store.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">_meta</code><emclass="property"> = <Options for Store></em><aclass="headerlink"href="#evennia.scripts.scripts.Store._meta"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#Store.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.scripts.Store.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Setup the script</p>
</dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.scripts.Store.path">
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.scripts.scripts.Store'</em><aclass="headerlink"href="#evennia.scripts.scripts.Store.path"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="attribute">
<dtid="evennia.scripts.scripts.Store.typename">
<codeclass="sig-name descname">typename</code><emclass="property"> = 'Store'</em><aclass="headerlink"href="#evennia.scripts.scripts.Store.typename"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-taskhandler-module"></span><h2>evennia.scripts.taskhandler module<aclass="headerlink"href="#module-evennia.scripts.taskhandler"title="Permalink to this headline">¶</a></h2>
<p>Module containing the task handler for Evennia deferred tasks, persistent or not.</p>
<dlclass="class">
<dtid="evennia.scripts.taskhandler.TaskHandler">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.taskhandler.</code><codeclass="sig-name descname">TaskHandler</code><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.__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">timedelay</em>, <emclass="sig-param">callback</em>, <emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Add a new persistent task in the configuration.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>timedelay</strong> (<em>int</em><em> or </em><em>float</em>) – time in sedconds before calling the callback.</p></li>
<li><p><strong>callback</strong> (<em>function</em><em> or </em><em>instance method</em>) – the callback itself</p></li>
<li><p><strong>any</strong> (<em>any</em>) – any additional positional arguments to send to the callback</p></li>
</ul>
</dd>
</dl>
<dlclass="simple">
<dt>Kwargs:</dt><dd><p>persistent (bool, optional): persist the task (store it).
any (any): additional keyword arguments to send to the callback</p>
<codeclass="sig-name descname">create_delays</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.create_delays"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.create_delays"title="Permalink to this definition">¶</a></dt>
<dd><p>Create the delayed tasks for the persistent tasks.</p>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>This method should be automatically called when Evennia starts.</p>
<codeclass="sig-name descname">do_task</code><spanclass="sig-paren">(</span><emclass="sig-param">task_id</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.do_task"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.do_task"title="Permalink to this definition">¶</a></dt>
<dd><p>Execute the task (call its callback).</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>task_id</strong> (<em>int</em>) – a valid task ID.</p>
</dd>
</dl>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>This will also remove it from the list of current tasks.</p>
<codeclass="sig-name descname">load</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.load"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.load"title="Permalink to this definition">¶</a></dt>
<dd><p>Load from the ServerConfig.</p>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>This should be automatically called when Evennia starts.
It populates <cite>self.tasks</cite> according to the ServerConfig.</p>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param">task_id</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove a persistent task without executing it.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>task_id</strong> (<em>int</em>) – an existing task ID.</p>
</dd>
</dl>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>A non-persistent task doesn’t have a task_id, it is not stored
<codeclass="sig-name descname">save</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/taskhandler.html#TaskHandler.save"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.taskhandler.TaskHandler.save"title="Permalink to this definition">¶</a></dt>
<spanid="evennia-scripts-tests-module"></span><h2>evennia.scripts.tests module<aclass="headerlink"href="#module-evennia.scripts.tests"title="Permalink to this headline">¶</a></h2>
<dlclass="class">
<dtid="evennia.scripts.tests.TestScript">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tests.</code><codeclass="sig-name descname">TestScript</code><spanclass="sig-paren">(</span><emclass="sig-param">methodName='runTest'</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScript"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScript"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">test_create</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScript.test_create"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScript.test_create"title="Permalink to this definition">¶</a></dt>
<dd><p>Check the script can be created via the convenience method.</p>
</dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.tests.TestScriptDB">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tests.</code><codeclass="sig-name descname">TestScriptDB</code><spanclass="sig-paren">(</span><emclass="sig-param">methodName='runTest'</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB"title="Permalink to this definition">¶</a></dt>
<p>Check the singleton/static ScriptDB object works correctly</p>
<dlclass="method">
<dtid="evennia.scripts.tests.TestScriptDB.setUp">
<codeclass="sig-name descname">setUp</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.setUp"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.setUp"title="Permalink to this definition">¶</a></dt>
<dd><p>Hook method for setting up the test fixture before exercising it.</p>
<codeclass="sig-name descname">tearDown</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.tearDown"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.tearDown"title="Permalink to this definition">¶</a></dt>
<dd><p>Hook method for deconstructing the test fixture after testing it.</p>
<codeclass="sig-name descname">test_delete</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.test_delete"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.test_delete"title="Permalink to this definition">¶</a></dt>
<dd><p>Check the script is removed from the database</p>
<codeclass="sig-name descname">test_deleted_script_fails_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.test_deleted_script_fails_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.test_deleted_script_fails_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Would it ever be necessary to start a deleted script?</p>
<codeclass="sig-name descname">test_deleted_script_is_invalid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.test_deleted_script_is_invalid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.test_deleted_script_is_invalid"title="Permalink to this definition">¶</a></dt>
<dd><p>Can deleted scripts be said to be valid?</p>
<codeclass="sig-name descname">test_double_delete</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tests.html#TestScriptDB.test_double_delete"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tests.TestScriptDB.test_double_delete"title="Permalink to this definition">¶</a></dt>
<dd><p>What should happen? Isn’t it already deleted?</p>
<spanid="evennia-scripts-tickerhandler-module"></span><h2>evennia.scripts.tickerhandler module<aclass="headerlink"href="#module-evennia.scripts.tickerhandler"title="Permalink to this headline">¶</a></h2>
<p>TickerHandler</p>
<p>This implements an efficient Ticker which uses a subscription
model to ‘tick’ subscribed objects at regular intervals.</p>
<p>The ticker mechanism is used by importing and accessing
the instantiated TICKER_HANDLER instance in this module. This
instance is run by the server; it will save its status across
server reloads and be started automaticall on boot.</p>
<p>If one wants to duplicate TICKER_HANDLER’s auto-saving feature in
a custom handler one can make a custom <cite>AT_STARTSTOP_MODULE</cite> entry to
call the handler’s <cite>save()</cite> and <cite>restore()</cite> methods when the server reboots.</p>
<dlclass="class">
<dtid="evennia.scripts.tickerhandler.Ticker">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">Ticker</code><spanclass="sig-paren">(</span><emclass="sig-param">interval</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param">interval</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Set up the ticker</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em>) – The stepping interval.</p>
<codeclass="sig-name descname">_callback</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker._callback"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker._callback"title="Permalink to this definition">¶</a></dt>
<dd><p>This will be called repeatedly every <cite>self.interval</cite> seconds.
<cite>self.subscriptions</cite> contain tuples of (obj, args, kwargs) for
each subscribing object.</p>
<p>If overloading, this callback is expected to handle all
subscriptions when it is triggered. It should not return
anything and should not traceback on poorly designed hooks.
The callback should ideally work under @inlineCallbacks so it
can yield appropriately.</p>
<p>The _hook_key, which is passed down through the handler via
kwargs is used here to identify which hook method to call.</p>
</dd></dl>
<dlclass="method">
<dtid="evennia.scripts.tickerhandler.Ticker.add">
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param">store_key</em>, <emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Sign up a subscriber to this ticker.
:param store_key: Unique storage hash for this ticker subscription.
:type store_key: str
:param args: Arguments to call the hook method with.
:type args: any, optional</p>
<dlclass="simple">
<dt>Kwargs:</dt><dd><dlclass="simple">
<dt>_start_delay (int): If set, this will be</dt><dd><p>used to delay the start of the trigger instead of
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param">store_key</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Unsubscribe object from this ticker</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>store_key</strong> (<em>str</em>) – Unique store key.</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Kill the Task, regardless of subscriptions.</p>
<codeclass="sig-name descname">validate</code><spanclass="sig-paren">(</span><emclass="sig-param">start_delay=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#Ticker.validate"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.Ticker.validate"title="Permalink to this definition">¶</a></dt>
<dd><p>Start/stop the task depending on how many subscribers we have
using it.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>start_delay</strong> (<em>int</em>) – Time to way before starting.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">TickerHandler</code><spanclass="sig-paren">(</span><emclass="sig-param">save_name='ticker_storage'</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param">save_name='ticker_storage'</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize handler</p>
<dlclass="simple">
<dt>save_name (str, optional): The name of the ServerConfig</dt><dd><p>instance to store the handler state persistently.</p>
<codeclass="sig-name descname">_get_callback</code><spanclass="sig-paren">(</span><emclass="sig-param">callback</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler._get_callback"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler._get_callback"title="Permalink to this definition">¶</a></dt>
<dd><p>Analyze callback and determine its consituents</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>callback</strong> (<em>function</em><em> or </em><em>method</em>) – This is either a stand-alone
function or class method on a typeclassed entitye (that is,
an entity that can be saved to the database).</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><dlclass="simple">
<dt>This is a tuple of the form <cite>(obj, path, callfunc)</cite>,</dt><dd><p>where <cite>obj</cite> is the database object the callback is defined on
if it’s a method (otherwise <cite>None</cite>) and vice-versa, <cite>path</cite> is
the python-path to the stand-alone function (<cite>None</cite> if a method).
The <cite>callfunc</cite> is either the name of the method to call or the
<codeclass="sig-name descname">all</code><spanclass="sig-paren">(</span><emclass="sig-param">interval=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.all"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.all"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all subscriptions.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em>) – Limit match to tickers with this interval.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><dlclass="simple">
<dt>If <cite>interval</cite> was given, this is a list of</dt><dd><p>tickers using that interval.</p>
</dd>
<dt>tickerpool_layout (dict): If <cite>interval</cite> was <em>not</em> given,</dt><dd><p>this is a dict {interval1: [ticker1, ticker2, …], …}</p>
<codeclass="sig-name descname">all_display</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.all_display"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.all_display"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all tickers on an easily displayable form.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p>A list of all storekeys</p>
<codeclass="sig-name descname">clear</code><spanclass="sig-paren">(</span><emclass="sig-param">interval=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.clear"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.clear"title="Permalink to this definition">¶</a></dt>
<dd><p>Stop/remove tickers from handler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em>) – Only stop tickers with this interval.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This is the only supported way to kill tickers related to
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param">interval=60</em>, <emclass="sig-param">callback=None</em>, <emclass="sig-param">idstring=''</em>, <emclass="sig-param">persistent=True</em>, <emclass="sig-param">store_key=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove ticker subscription from handler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>interval</strong> (<em>int</em><em>, </em><em>optional</em>) – Interval of ticker to remove.</p></li>
<li><p><strong>callback</strong> (<em>callable function</em><em> or </em><em>method</em>) – Either a function or
the method of a typeclassed object.</p></li>
<li><p><strong>idstring</strong> (<em>str</em><em>, </em><em>optional</em>) – Identifier id of ticker to remove.</p></li>
<li><p><strong>persistent</strong> (<em>bool</em><em>, </em><em>optional</em>) – Whether this ticker is persistent or not.</p></li>
<li><p><strong>store_key</strong> (<em>str</em><em>, </em><em>optional</em>) – If given, all other kwargs are ignored and only
this is used to identify the ticker.</p></li>
</ul>
</dd>
<dtclass="field-even">Raises</dt>
<ddclass="field-even"><p><strong>KeyError</strong>– If no matching ticker was found to remove.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>The store-key is normally built from the interval/callback/idstring/persistent values;
but if the <cite>store_key</cite> is explicitly given, this is used instead.</p>
<codeclass="sig-name descname">restore</code><spanclass="sig-paren">(</span><emclass="sig-param">server_reload=True</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.restore"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.restore"title="Permalink to this definition">¶</a></dt>
<dd><p>Restore ticker_storage from database and re-initialize the
handler from storage. This is triggered by the server at
restart.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>server_reload</strong> (<em>bool</em><em>, </em><em>optional</em>) – If this is False, it means
<codeclass="sig-name descname">save</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerHandler.save"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.save"title="Permalink to this definition">¶</a></dt>
<dd><p>Save ticker_storage as a serialized string into a temporary
ServerConf field. Whereas saving is done on the fly, if called
by server when it shuts down, the current timer of each ticker
will be saved so it can start over from that point.</p>
<codeclass="sig-name descname">ticker_pool_class</code><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerHandler.ticker_pool_class"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.scripts.tickerhandler.TickerPool"title="evennia.scripts.tickerhandler.TickerPool"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">TickerPool</span></code></a></p>
</dd></dl>
</dd></dl>
<dlclass="class">
<dtid="evennia.scripts.tickerhandler.TickerPool">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">TickerPool</code><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param">store_key</em>, <emclass="sig-param">*args</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.add"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param">store_key</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove subscription from pool.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>store_key</strong> (<em>str</em>) – Unique storage hash to remove</p>
<codeclass="sig-name descname">stop</code><spanclass="sig-paren">(</span><emclass="sig-param">interval=None</em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/tickerhandler.html#TickerPool.stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.stop"title="Permalink to this definition">¶</a></dt>
<dd><p>Stop all scripts in pool. This is done at server reload since
restoring the pool will automatically re-populate the pool.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>interval</strong> (<em>int</em><em>, </em><em>optional</em>) – Only stop tickers with this
<codeclass="sig-name descname">ticker_class</code><aclass="headerlink"href="#evennia.scripts.tickerhandler.TickerPool.ticker_class"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.scripts.tickerhandler.Ticker"title="evennia.scripts.tickerhandler.Ticker"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">Ticker</span></code></a></p>
</dd></dl>
</dd></dl>
<dlclass="function">
<dtid="evennia.scripts.tickerhandler._GA">
<codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">_GA</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.tickerhandler._GA"title="Permalink to this definition">¶</a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dlclass="function">
<dtid="evennia.scripts.tickerhandler._SA">
<codeclass="sig-prename descclassname">evennia.scripts.tickerhandler.</code><codeclass="sig-name descname">_SA</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.tickerhandler._SA"title="Permalink to this definition">¶</a></dt>