<spanid="evennia-scripts-scripts"></span><h1>evennia.scripts.scripts<aclass="headerlink"href="#module-evennia.scripts.scripts"title="Link to this heading">¶</a></h1>
<p>This module defines Scripts, out-of-character entities that can store
data both on themselves and on other objects while also having the
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">DefaultScript</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript"title="Link to this definition">¶</a></dt>
start() - start script (this usually happens automatically at creation</p>
<blockquote>
<div><p>and obj.script.add() etc)</p>
</div></blockquote>
<p>stop() - stop script, and delete it
pause() - put the script on hold, until unpause() is called. If script</p>
<blockquote>
<div><p>is persistent, the pause state will survive a shutdown.</p>
</div></blockquote>
<dlclass="simple">
<dt>unpause() - restart a previously paused script. The script will continue</dt><dd><p>from the paused timer (but at_start() will be called).</p>
</dd>
<dt>time_until_next_repeat() - if a timed script (interval>0), returns time</dt><dd><p>until next tick</p>
</dd>
</dl>
</div></blockquote>
<ulclass="simple">
<li><p>Hook methods (should also include self as the first argument):</p></li>
</ul>
<blockquote>
<div><dl>
<dt>at_script_creation() - called only once, when an object of this</dt><dd><p>class is first created.</p>
</dd>
<dt>is_valid() - is called to check if the script is valid to be running</dt><dd><blockquote>
<div><p>at the current time. If is_valid() returns False, the running
script is stopped and removed from the game. You can use this
to check state changes (i.e. an script tracking some combat
stats at regular intervals is only valid to run while there is
actual combat going on).</p>
</div></blockquote>
<dlclass="simple">
<dt>at_start() - Called every time the script is started, which for persistent</dt><dd><p>scripts is at least once every server start. Note that this is
unaffected by self.delay_start, which only delays the first
call to at_repeat().</p>
</dd>
<dt>at_repeat() - Called every self.interval seconds. It will be called</dt><dd><p>immediately upon launch unless self.delay_start is True, which
will delay the first call of this method by self.interval
seconds. If self.interval==0, this method will never
be called.</p>
</dd>
</dl>
<p>at_pause()
at_stop() - Called as the script object is stopped and is about to be</p>
<blockquote>
<div><p>removed from the game, e.g. because is_valid() returned False.</p>
</div></blockquote>
<p>at_script_delete()
at_server_reload() - Called when server reloads. Can be used to</p>
<blockquote>
<div><p>save temporary variables you want should survive a reload.</p>
</div></blockquote>
<p>at_server_shutdown() - called at a full server shutdown.
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">create</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.create"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.create"title="Link to this definition">¶</a></dt>
<dd><p>Provides a passthrough interface to the utils.create_script() function.</p>
<spanclass="sig-name descname"><spanclass="pre">at_script_creation</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_script_creation"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_script_creation"title="Link to this definition">¶</a></dt>
<dd><p>Only called once, when script is first created.</p>
<spanclass="sig-name descname"><spanclass="pre">is_valid</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.is_valid"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.is_valid"title="Link to this definition">¶</a></dt>
<dd><p>Is called to check if the script’s timer is valid to run at this time.
Should return a boolean. If False, the timer will be stopped.</p>
<spanclass="sig-name descname"><spanclass="pre">at_start</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_start"title="Link to this definition">¶</a></dt>
<dd><p>Called whenever the script timer is started, which for persistent
timed scripts is at least once every server start. It will also be
called when starting again after a pause (including after a
<spanclass="sig-name descname"><spanclass="pre">at_repeat</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_repeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_repeat"title="Link to this definition">¶</a></dt>
<dd><p>Called repeatedly if this Script is set to repeat regularly.</p>
<spanclass="sig-name descname"><spanclass="pre">at_pause</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">manual_pause</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_pause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_pause"title="Link to this definition">¶</a></dt>
<dd><p>Called when this script’s timer pauses.</p>
<spanclass="sig-name descname"><spanclass="pre">at_stop</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_stop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_stop"title="Link to this definition">¶</a></dt>
<dd><p>Called whenever when it’s time for this script’s timer to stop (either
because is_valid returned False, it ran out of iterations or it was manuallys
<spanclass="sig-name descname"><spanclass="pre">at_script_delete</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_script_delete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_script_delete"title="Link to this definition">¶</a></dt>
<dd><p>Called when the Script is deleted, before stopping the timer.</p>
<spanclass="sig-name descname"><spanclass="pre">at_server_reload</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_reload"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_server_reload"title="Link 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
<spanclass="sig-name descname"><spanclass="pre">at_server_shutdown</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_shutdown"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_server_shutdown"title="Link to this definition">¶</a></dt>
<dd><p>This hook is called whenever the server is shutting down fully
<spanclass="sig-name descname"><spanclass="pre">at_server_start</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.at_server_start"title="Link to this definition">¶</a></dt>
<dd><p>This hook is called after the server has started. It can be used to add
post-startup setup for Scripts without a timer component (for which at_start
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.scripts.scripts.DefaultScript'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'DefaultScript'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.DefaultScript.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">DoNothing</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DoNothing"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_script_creation</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#DoNothing.at_script_creation"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.at_script_creation"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.scripts.scripts.DoNothing'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'DoNothing'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.DoNothing.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">Store</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#Store"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Store"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_script_creation</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#Store.at_script_creation"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Store.at_script_creation"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.scripts.scripts.Store.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.scripts.scripts.Store.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.scripts.scripts.Store.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.scripts.scripts.Store'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.Store.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'Store'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.Store.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">Deferred</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">canceller</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">None</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred"title="Link to this definition">¶</a></dt>
<p>When creating a Deferred, you may provide a canceller function, which
will be called by d.cancel() to let you do any clean-up necessary if the
user decides not to wait for the deferred to complete.</p>
<dlclass="simple">
<dt>@ivar called: A flag which is C{False} until either C{callback} or</dt><dd><p>C{errback} is called and afterwards always C{True}.</p>
</dd>
<dt>@ivar paused: A counter of how many unmatched C{pause} calls have been made</dt><dd><p>on this instance.</p>
</dd>
<dt>@ivar _suppressAlreadyCalled: A flag used by the cancellation mechanism</dt><dd><p>which is C{True} if the Deferred has no canceller and has been
cancelled, C{False} otherwise. If C{True}, it can be expected that
C{callback} or C{errback} will eventually be called and the result
should be silently discarded.</p>
</dd>
<dt>@ivar _runningCallbacks: A flag which is C{True} while this instance is</dt><dd><p>executing its callback chain, used to stop recursive execution of
L{_runCallbacks}</p>
</dd>
<dt>@ivar _chainedTo: If this L{Deferred} is waiting for the result of another</dt><dd><p>L{Deferred}, this is a reference to the other Deferred. Otherwise,
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">canceller</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">None</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.__init__"title="Link to this definition">¶</a></dt>
<dd><p>Initialize a L{Deferred}.</p>
<dl>
<dt>@param canceller: a callable used to stop the pending operation</dt><dd><p>scheduled by this L{Deferred} when L{Deferred.cancel} is invoked.
The canceller will be passed the deferred whose cancellation is
requested (i.e., C{self}).</p>
<p>If a canceller is not given, or does not invoke its argument’s
C{callback} or C{errback} method, L{Deferred.cancel} will
invoke L{Deferred.errback} with a L{CancelledError}.</p>
<p>Note that if a canceller is not given, C{callback} or
C{errback} may still be invoked exactly once, even though
defer.py will have already invoked C{errback}, as described
above. This allows clients of code which returns a L{Deferred}
to cancel it without requiring the L{Deferred} instantiator to
provide any specific implementation support for cancellation.
New in 10.1.</p>
</dd>
<dt>@type canceller: a 1-argument callable which takes a L{Deferred}. The</dt><dd><p>return result is ignored.</p>
<spanclass="sig-name descname"><spanclass="pre">addBoth</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">callback</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.addBoth"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.addBoth"title="Link to this definition">¶</a></dt>
<dd><p>Convenience method for adding a single callable as both a callback
<spanclass="sig-name descname"><spanclass="pre">addCallback</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">callback</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.addCallback"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.addCallback"title="Link to this definition">¶</a></dt>
<dd><p>Convenience method for adding just a callback.</p>
<dd><p>Add a pair of callbacks (success and error) to this L{Deferred}.</p>
<p>These will be executed when the ‘master’ callback is run.</p>
<dlclass="simple">
<dt>@note: The signature of this function was designed many years before</dt><dd><p>PEP 612; ParamSpec provides no mechanism to annotate parameters
like C{callbackArgs}; this is therefore inherently less type-safe
than calling C{addCallback} and C{addErrback} separately.</p>
<spanclass="sig-name descname"><spanclass="pre">addErrback</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">errback</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Any</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.addErrback"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.addErrback"title="Link to this definition">¶</a></dt>
<dd><p>Convenience method for adding just an errback.</p>
<spanclass="sig-name descname"><spanclass="pre">addTimeout</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">timeout:</span><spanclass="pre">float,</span><spanclass="pre">clock:</span><spanclass="pre"><InterfaceClass</span><spanclass="pre">twisted.internet.interfaces.IReactorTime>,</span><spanclass="pre">onTimeoutCancel:</span><spanclass="pre">~typing.Callable[[~twisted.internet.defer._SelfResultT</span><spanclass="pre">|</span><spanclass="pre">~twisted.python.failure.Failure,</span><spanclass="pre">float],</span><spanclass="pre">~twisted.internet.defer._NextResultT</span><spanclass="pre">|</span><spanclass="pre">~twisted.python.failure.Failure]</span><spanclass="pre">|</span><spanclass="pre">None</span><spanclass="pre">=</span><spanclass="pre">None</span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_SelfResultT</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">_NextResultT</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.addTimeout"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.addTimeout"title="Link to this definition">¶</a></dt>
<dd><p>Time out this L{Deferred} by scheduling it to be cancelled after
C{timeout} seconds.</p>
<p>The timeout encompasses all the callbacks and errbacks added to this
L{defer.Deferred} before the call to L{addTimeout}, and none added
after the call.</p>
<p>If this L{Deferred} gets timed out, it errbacks with a L{TimeoutError},
unless a cancelable function was passed to its initialization or unless
a different C{onTimeoutCancel} callable is provided.</p>
<dlclass="simple">
<dt>@param timeout: number of seconds to wait before timing out this</dt><dd><p>L{Deferred}</p>
</dd>
</dl>
<p>@param clock: The object which will be used to schedule the timeout.
@param onTimeoutCancel: A callable which is called immediately after</p>
<blockquote>
<div><p>this L{Deferred} times out, and not if this L{Deferred} is
otherwise cancelled before the timeout. It takes an arbitrary
value, which is the value of this L{Deferred} at that exact point
in time (probably a L{CancelledError} L{Failure}), and the
C{timeout}. The default callable (if C{None} is provided) will
translate a L{CancelledError} L{Failure} into a L{TimeoutError}.</p>
<spanclass="sig-name descname"><spanclass="pre">asFuture</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">loop</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">AbstractEventLoop</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">Future</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_SelfResultT</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.asFuture"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.asFuture"title="Link to this definition">¶</a></dt>
<dd><p>Adapt this L{Deferred} into a L{Future} which is bound to C{loop}.</p>
<dlclass="simple">
<dt>@note: converting a L{Deferred} to an L{Future} consumes both</dt><dd><p>its result and its errors, so this method implicitly converts
C{self} into a L{Deferred} firing with L{None}, regardless of what
its result previously would have been.</p>
</dd>
</dl>
<p>@since: Twisted 17.5.0</p>
<p>@param loop: The L{asyncio} event loop to bind the L{Future} to.</p>
<p>@return: A L{Future} which will fire when the L{Deferred} fires.</p>
<spanclass="sig-name descname"><spanclass="pre">callback</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">result</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">_SelfResultT</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">Failure</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.callback"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.callback"title="Link to this definition">¶</a></dt>
<dd><p>Run all success callbacks that have been added to this L{Deferred}.</p>
<p>Each callback will have its result passed as the first argument to
the next; this way, the callbacks act as a ‘processing chain’. If
the success-callback returns a L{Failure} or raises an L{Exception},
processing will continue on the <em>error</em> callback chain. If a
callback (or errback) returns another L{Deferred}, this L{Deferred}
will be chained to it (and further callbacks will not run until that
L{Deferred} has a result).</p>
<p>An instance of L{Deferred} may only have either L{callback} or
L{errback} called on it, and only once.</p>
<dlclass="simple">
<dt>@param result: The object which will be passed to the first callback</dt><dd><p>added to this L{Deferred} (via L{addCallback}), unless C{result} is
a L{Failure}, in which case the behavior is the same as calling
C{errback(result)}.</p>
</dd>
<dt>@raise AlreadyCalledError: If L{callback} or L{errback} has already been</dt><dd><p>called on this L{Deferred}.</p>
<spanclass="sig-name descname"><spanclass="pre">called</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.called"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">cancel</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.cancel"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.cancel"title="Link to this definition">¶</a></dt>
<dd><p>Cancel this L{Deferred}.</p>
<p>If the L{Deferred} has not yet had its C{errback} or C{callback} method
invoked, call the canceller function provided to the constructor. If
that function does not invoke C{callback} or C{errback}, or if no
canceller function was provided, errback with L{CancelledError}.</p>
<p>If this L{Deferred} is waiting on another L{Deferred}, forward the
<spanclass="sig-name descname"><spanclass="pre">chainDeferred</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">d</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_SelfResultT</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">None</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.chainDeferred"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.chainDeferred"title="Link to this definition">¶</a></dt>
<dd><p>Chain another L{Deferred} to this L{Deferred}.</p>
<p>This method adds callbacks to this L{Deferred} to call C{d}’s callback
or errback, as appropriate. It is merely a shorthand way of performing
<spanclass="sig-name descname"><spanclass="pre">debug</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.debug"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">errback</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">fail</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Failure</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">BaseException</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.errback"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.errback"title="Link to this definition">¶</a></dt>
<dd><p>Run all error callbacks that have been added to this L{Deferred}.</p>
<p>Each callback will have its result passed as the first
argument to the next; this way, the callbacks act as a
‘processing chain’. Also, if the error-callback returns a non-Failure
or doesn’t raise an L{Exception}, processing will continue on the
<em>success</em>-callback chain.</p>
<p>If the argument that’s passed to me is not a L{Failure} instance,
it will be embedded in one. If no argument is passed, a
L{Failure} instance will be created based on the current
traceback stack.</p>
<p>Passing a string as <ahref="#id3"><spanclass="problematic"id="id4">**</span></a>fail’ is deprecated, and will be punished with
a warning message.</p>
<p>An instance of L{Deferred} may only have either L{callback} or
L{errback} called on it, and only once.</p>
<dlclass="simple">
<dt>@param fail: The L{Failure} object which will be passed to the first</dt><dd><p>errback added to this L{Deferred} (via L{addErrback}).
Alternatively, a L{Exception} instance from which a L{Failure} will
be constructed (with no traceback) or L{None} to create a L{Failure}
instance from the current exception state (with a traceback).</p>
</dd>
<dt>@raise AlreadyCalledError: If L{callback} or L{errback} has already been</dt><dd><p>called on this L{Deferred}.</p>
</dd>
<dt>@raise NoCurrentExceptionError: If C{fail} is L{None} but there is</dt><dd><p>no current exception state.</p>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">fromCoroutine</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">coro</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Coroutine</span><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">Generator</span><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">Any</span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.fromCoroutine"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.fromCoroutine"title="Link to this definition">¶</a></dt>
<dd><p>Schedule the execution of a coroutine that awaits on L{Deferred}s,
wrapping it in a L{Deferred} that will fire on success/failure of the
coroutine.</p>
<p>Coroutine functions return a coroutine object, similar to how
generators work. This function turns that coroutine into a Deferred,
meaning that it can be used in regular Twisted code. For example:</p>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">fromFuture</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">future</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Future</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_SelfResultT</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_SelfResultT</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.fromFuture"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.fromFuture"title="Link to this definition">¶</a></dt>
<dd><p>Adapt a L{Future} to a L{Deferred}.</p>
<dlclass="simple">
<dt>@note: This creates a L{Deferred} from a L{Future}, I{not} from</dt><dd><p>a C{coroutine}; in other words, you will need to call
L{asyncio.ensure_future}, L{asyncio.loop.create_task} or create an
L{asyncio.Task} yourself to get from a C{coroutine} to a
L{Future} if what you have is an awaitable coroutine and
not a L{Future}. (The length of this list of techniques is
exactly why we have left it to the caller!)</p>
</dd>
</dl>
<p>@since: Twisted 17.5.0</p>
<p>@param future: The L{Future} to adapt.</p>
<p>@return: A L{Deferred} which will fire when the L{Future} fires.</p>
<spanclass="sig-name descname"><spanclass="pre">pause</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.pause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.pause"title="Link to this definition">¶</a></dt>
<dd><p>Stop processing on a L{Deferred} until L{unpause}() is called.</p>
<spanclass="sig-name descname"><spanclass="pre">paused</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">0</span></em><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.paused"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">unpause</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#Deferred.unpause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.Deferred.unpause"title="Link to this definition">¶</a></dt>
<dd><p>Process all callbacks made since L{pause}() was called.</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">ExtendedLoopingCall</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">f</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">object</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">a</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kw</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">start_delay</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall.start_delay"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">callcount</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">0</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall.callcount"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">start</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">interval</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">now</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">start_delay</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">count_start</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">0</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall.start"title="Link to this definition">¶</a></dt>
<dd><p>Start running function every interval seconds.</p>
<p>This overloads the LoopingCall default by offering the
<spanclass="sig-name descname"><spanclass="pre">force_repeat</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.force_repeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall.force_repeat"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">next_call_time</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.next_call_time"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ExtendedLoopingCall.next_call_time"title="Link to this definition">¶</a></dt>
<dd><p>Get the next call time. This also takes the eventual effect
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">LoopingCall</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">f</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">object</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">a</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kw</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall"title="Link to this definition">¶</a></dt>
<p>If C{f} returns a deferred, rescheduling will not take place until the
deferred has fired. The result value is ignored.</p>
<p>@ivar f: The function to call.
@ivar a: A tuple of arguments to pass the function.
@ivar kw: A dictionary of keyword arguments to pass to the function.
@ivar clock: A provider of</p>
<blockquote>
<div><p>L{twisted.internet.interfaces.IReactorTime}. The default is
L{twisted.internet.reactor}. Feel free to set this to
something else, but it probably ought to be set <em>before</em>
calling L{start}.</p>
</div></blockquote>
<dlclass="simple">
<dt>@ivar running: A flag which is C{True} while C{f} is scheduled to be called</dt><dd><p>(or is currently being called). It is set to C{True} when L{start} is
called and set to C{False} when L{stop} is called or if C{f} raises an
exception. In either case, it will be C{False} by the time the
C{Deferred} returned by L{start} fires its callback or errback.</p>
</dd>
<dt>@ivar _realLastTime: When counting skips, the time at which the skip</dt><dd><p>counter was last invoked.</p>
</dd>
<dt>@ivar _runAtStart: A flag indicating whether the ‘now’ argument was passed</dt><dd><p>to L{LoopingCall.start}.</p>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">f</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">object</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">a</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kw</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">object</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.__init__"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">call</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre"><InterfaceClass</span><spanclass="pre">twisted.internet.interfaces.IDelayedCall></span><spanclass="pre">|</span><spanclass="pre">None</span></em><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.call"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">deferred</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.LoopingCall"title="twisted.internet.task.LoopingCall"><spanclass="pre">LoopingCall</span></a><spanclass="p"><spanclass="pre">]</span></span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.deferred"title="Link to this definition">¶</a></dt>
<dd><p>DEPRECATED. L{Deferred} fired when loop stops or fails.</p>
<p>Use the L{Deferred} returned by L{LoopingCall.start}.</p>
<spanclass="sig-name descname"><spanclass="pre">interval</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre">float</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></em><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.interval"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">reset</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall.reset"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.reset"title="Link to this definition">¶</a></dt>
<dd><p>Skip the next iteration and reset the timer.</p>
<spanclass="sig-name descname"><spanclass="pre">running</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.running"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">start</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">interval</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">float</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">now</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><aclass="reference internal"href="#evennia.scripts.scripts.LoopingCall"title="twisted.internet.task.LoopingCall"><spanclass="pre">LoopingCall</span></a><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall.start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.start"title="Link to this definition">¶</a></dt>
<dd><p>Start running function every interval seconds.</p>
<p>@param interval: The number of seconds between calls. May be
less than one. Precision will depend on the underlying
platform, the available hardware, and the load on the system.</p>
<p>@param now: If True, run this call right now. Otherwise, wait
until the interval has elapsed before beginning.</p>
<p>@return: A Deferred whose callback will be invoked with
C{self} when C{self.stop} is called, or whose errback will be
invoked when the function raises an exception or returned a
<spanclass="sig-name descname"><spanclass="pre">starttime</span></span><emclass="property"><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="pre">float</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></em><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.starttime"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">stop</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall.stop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.stop"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">withCount</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">countCallable</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">int</span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">object</span><spanclass="p"><spanclass="pre">]</span></span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.LoopingCall"title="twisted.internet.task.LoopingCall"><spanclass="pre">LoopingCall</span></a></span></span><aclass="reference internal"href="../_modules/twisted/internet/task.html#LoopingCall.withCount"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.LoopingCall.withCount"title="Link to this definition">¶</a></dt>
<dd><p>An alternate constructor for L{LoopingCall} that makes available the
number of calls which should have occurred since it was last invoked.</p>
<p>Note that this number is an C{int} value; It represents the discrete
number of calls that should have been made. For example, if you are
using a looping call to display an animation with discrete frames, this
number would be the number of frames to advance.</p>
<p>The count is normally 1, but can be higher. For example, if the reactor
is blocked and takes too long to invoke the L{LoopingCall}, a Deferred
returned from a previous call is not fired before an interval has
elapsed, or if the callable itself blocks for longer than an interval,
preventing I{itself} from being called.</p>
<p>When running with an interval of 0, count will be always 1.</p>
<dlclass="simple">
<dt>@param countCallable: A callable that will be invoked each time the</dt><dd><p>resulting LoopingCall is run, with an integer specifying the number
of calls that should have been invoked.</p>
</dd>
<dt>@return: An instance of L{LoopingCall} with call counting enabled,</dt><dd><p>which provides the count as the first positional argument.</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">ScriptBase</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre"><evennia.scripts.manager.ScriptManager</span><spanclass="pre">object></span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_idmapper_flush</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_idmapper_flush"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_idmapper_flush"title="Link to this definition">¶</a></dt>
<dd><p>If we’re flushing this object, make sure the LoopingCall is gone too.</p>
<spanclass="sig-name descname"><spanclass="pre">at_first_save</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_first_save"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_first_save"title="Link to this definition">¶</a></dt>
<dd><p>This is called after very first time this object is saved.
Generally, you don’t need to overload this, but only the hooks
<spanclass="sig-name descname"><spanclass="pre">delete</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.delete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.delete"title="Link to this definition">¶</a></dt>
<dd><p>Delete the Script. Normally stops any timer task. This fires at_script_delete before
<dt>If deletion was successful or not. Only time this can fail would be if</dt><dd><p>the script was already previously deleted, or <strong>at_script_delete</strong> returns
<spanclass="sig-name descname"><spanclass="pre">basetype_setup</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.basetype_setup"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.basetype_setup"title="Link to this definition">¶</a></dt>
<dd><p>Changes fundamental aspects of the type. Usually changes are made in at_script creation
<spanclass="sig-name descname"><spanclass="pre">at_init</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_init"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_init"title="Link to this definition">¶</a></dt>
<dd><p>Called when the Script is cached in the idmapper. This is usually more reliable
than overriding <strong>__init__</strong> since the latter can be called at unexpected times.</p>
<spanclass="sig-name descname"><spanclass="pre">at_script_creation</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_script_creation"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_script_creation"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_script_delete</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_script_delete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_script_delete"title="Link to this definition">¶</a></dt>
<dd><p>Called when script is deleted, before the script timer stops.</p>
<spanclass="sig-name descname"><spanclass="pre">is_valid</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.is_valid"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.is_valid"title="Link to this definition">¶</a></dt>
<dd><p>If returning False, <strong>at_repeat</strong> will not be called and timer will stop
<spanclass="sig-name descname"><spanclass="pre">at_repeat</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_repeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_repeat"title="Link to this definition">¶</a></dt>
<dd><p>Called repeatedly every <strong>interval</strong> seconds, once <strong>.start()</strong> has
<spanclass="sig-name descname"><spanclass="pre">at_start</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_start"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_pause</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_pause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_pause"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_stop</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_stop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.at_stop"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">start</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">interval</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">start_delay</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">repeats</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.start"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.start"title="Link to this definition">¶</a></dt>
<dd><p>Start/Unpause timer component, optionally with new values. If given,
this will update the Script’s fields. This will start <strong>at_repeat</strong> being
called every <strong>interval</strong> seconds.</p>
<spanclass="sig-name descname"><spanclass="pre">update</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">interval</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">start_delay</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">repeats</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.update"title="Link to this definition">¶</a></dt>
<dd><p>Start/Unpause timer component, optionally with new values. If given,
this will update the Script’s fields. This will start <strong>at_repeat</strong> being
called every <strong>interval</strong> seconds.</p>
<spanclass="sig-name descname"><spanclass="pre">stop</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.stop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.stop"title="Link to this definition">¶</a></dt>
<dd><p>Stop the Script’s timer component. This will not delete the Sctipt,
just stop the regular firing of <strong>at_repeat</strong>. Running <strong>.start()</strong> will
start the timer anew, optionally with new settings..</p>
<spanclass="sig-name descname"><spanclass="pre">pause</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.pause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.pause"title="Link to this definition">¶</a></dt>
<dd><p>Manually the Script’s timer component manually.</p>
<spanclass="sig-name descname"><spanclass="pre">unpause</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.unpause"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.unpause"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">time_until_next_repeat</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.time_until_next_repeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.time_until_next_repeat"title="Link to this definition">¶</a></dt>
<dd><p>Get time until the script fires it <strong>at_repeat</strong> hook again.</p>
<spanclass="sig-name descname"><spanclass="pre">remaining_repeats</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.remaining_repeats"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.remaining_repeats"title="Link to this definition">¶</a></dt>
<dd><p>Get the number of returning repeats for limited Scripts.</p>
<spanclass="sig-name descname"><spanclass="pre">reset_callcount</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">value</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">0</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.reset_callcount"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.reset_callcount"title="Link to this definition">¶</a></dt>
<dd><p>Reset the count of the number of calls done.</p>
<spanclass="sig-name descname"><spanclass="pre">force_repeat</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/scripts.html#ScriptBase.force_repeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.force_repeat"title="Link 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
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.scripts.scripts.ScriptBase'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'ScriptBase'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptBase.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">ScriptDB</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/models.html#ScriptDB"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.NotUpdated"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">account</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.account"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_account</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">db_account</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_account"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<spanclass="sig-name descname"><spanclass="pre">db_account_id</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_account_id"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">db_attributes</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_attributes"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_date_created</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_date_created"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_desc</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_desc"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_interval</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_interval"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_is_active</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_is_active"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_key</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_key"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_lock_storage</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_obj</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_obj"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<spanclass="sig-name descname"><spanclass="pre">db_obj_id</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_obj_id"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">db_persistent</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_persistent"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_repeats</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_repeats"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_start_delay</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_start_delay"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_tags</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_tags"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_typeclass_path</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.db_typeclass_path"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">desc</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.desc"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_desc</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">get_next_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.get_next_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_previous_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.get_previous_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">id</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.id"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">interval</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.interval"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_interval</strong>.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">is_active</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.is_active"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_is_active</strong>.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">obj</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.obj"title="Link 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
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">object</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.object"title="Link 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
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre"><evennia.scripts.manager.ScriptDBManager</span><spanclass="pre">object></span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.scripts.models.ScriptDB'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.path"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">persistent</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.persistent"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_persistent</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">receiver_script_set</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.receiver_script_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">repeats</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.repeats"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_repeats</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">sender_script_set</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.sender_script_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">start_delay</span></span><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.start_delay"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_start_delay</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'SharedMemoryModelBase'</span></em><aclass="headerlink"href="#evennia.scripts.scripts.ScriptDB.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">ScriptManager</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/scripts/manager.html#ScriptManager"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.ScriptManager"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">TypeclassBase</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">bases</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">attrs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypeclassBase"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.TypeclassBase"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.scripts.scripts.</span></span><spanclass="sig-name descname"><spanclass="pre">maybeDeferred</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">f:</span><spanclass="pre">~typing.Callable[[~_P],</span><spanclass="pre">~twisted.internet.defer.Deferred[~twisted.internet.defer._T]</span><spanclass="pre">|</span><spanclass="pre">~typing.Coroutine[~twisted.internet.defer.Deferred[~typing.Any],</span><spanclass="pre">~typing.Any,</span><spanclass="pre">~twisted.internet.defer._T]</span><spanclass="pre">|</span><spanclass="pre">~twisted.internet.defer._T],</span><spanclass="pre">*args:</span><spanclass="pre">~typing.~_P,</span><spanclass="pre">**kwargs:</span><spanclass="pre">~typing.~_P</span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="#evennia.scripts.scripts.Deferred"title="twisted.internet.defer.Deferred"><spanclass="pre">Deferred</span></a><spanclass="p"><spanclass="pre">[</span></span><spanclass="pre">_T</span><spanclass="p"><spanclass="pre">]</span></span></span></span><aclass="reference internal"href="../_modules/twisted/internet/defer.html#maybeDeferred"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.scripts.scripts.maybeDeferred"title="Link to this definition">¶</a></dt>
<dd><p>Invoke a function that may or may not return a L{Deferred} or coroutine.</p>
<p>Call the given function with the given arguments. Then:</p>
<blockquote>
<div><ulclass="simple">
<li><p>If the returned object is a L{Deferred}, return it.</p></li>
<li><p>If the returned object is a L{Failure}, wrap it with L{fail} and
return it.</p></li>
<li><p>If the returned object is a L{types.CoroutineType}, wrap it with
L{Deferred.fromCoroutine} and return it.</p></li>
<li><p>Otherwise, wrap it in L{succeed} and return it.</p></li>
<li><p>If an exception is raised, convert it to a L{Failure}, wrap it in
L{fail}, and then return it.</p></li>
</ul>
</div></blockquote>
<p>@param f: The callable to invoke
@param args: The arguments to pass to C{f}
@param kwargs: The keyword arguments to pass to C{f}</p>
<p>@return: The result of the function call, wrapped in a L{Deferred} if