<spanid="evennia-utils-utils"></span><h1>evennia.utils.utils<aclass="headerlink"href="#module-evennia.utils.utils"title="Permalink to this headline">¶</a></h1>
<p>General helper functions that don’t fit neatly under any given category.</p>
<p>They provide some useful string and conversion methods that might
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">is_iter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#is_iter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.is_iter"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">make_iter</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#make_iter"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.make_iter"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">wrap</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">width</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">indent</span><spanclass="o">=</span><spanclass="default_value">0</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#wrap"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.wrap"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">fill</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">width</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">indent</span><spanclass="o">=</span><spanclass="default_value">0</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.fill"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">crop</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">width</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">suffix</span><spanclass="o">=</span><spanclass="default_value">'[...]'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#crop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.crop"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">dedent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">baseline_index</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">indent</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dedent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.dedent"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">justify</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">width</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">align</span><spanclass="o">=</span><spanclass="default_value">'f'</span></em>, <emclass="sig-param"><spanclass="n">indent</span><spanclass="o">=</span><spanclass="default_value">0</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#justify"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.justify"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">iter_to_str</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">iterable</span></em>, <emclass="sig-param"><spanclass="n">endsep</span><spanclass="o">=</span><spanclass="default_value">', and'</span></em>, <emclass="sig-param"><spanclass="n">addquote</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#iter_to_str"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.iter_to_str"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">list_to_string</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">iterable</span></em>, <emclass="sig-param"><spanclass="n">endsep</span><spanclass="o">=</span><spanclass="default_value">', and'</span></em>, <emclass="sig-param"><spanclass="n">addquote</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.list_to_string"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">iter_to_string</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">iterable</span></em>, <emclass="sig-param"><spanclass="n">endsep</span><spanclass="o">=</span><spanclass="default_value">', and'</span></em>, <emclass="sig-param"><spanclass="n">addquote</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.iter_to_string"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">wildcard_to_regexp</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">instring</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#wildcard_to_regexp"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.wildcard_to_regexp"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">time_format</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">seconds</span></em>, <emclass="sig-param"><spanclass="n">style</span><spanclass="o">=</span><spanclass="default_value">0</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#time_format"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.time_format"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">datetime_format</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">dtobj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#datetime_format"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.datetime_format"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">host_os_is</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">osname</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#host_os_is"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.host_os_is"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">get_evennia_version</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">mode</span><spanclass="o">=</span><spanclass="default_value">'long'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_evennia_version"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.get_evennia_version"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">pypath_to_realpath</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">python_path</span></em>, <emclass="sig-param"><spanclass="n">file_ending</span><spanclass="o">=</span><spanclass="default_value">'.py'</span></em>, <emclass="sig-param"><spanclass="n">pypath_prefixes</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#pypath_to_realpath"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.pypath_to_realpath"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">dbref</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">inp</span></em>, <emclass="sig-param"><spanclass="n">reqhash</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dbref"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.dbref"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">dbref_to_obj</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">inp</span></em>, <emclass="sig-param"><spanclass="n">objclass</span></em>, <emclass="sig-param"><spanclass="n">raise_errors</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dbref_to_obj"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.dbref_to_obj"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">dbid_to_obj</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">inp</span></em>, <emclass="sig-param"><spanclass="n">objclass</span></em>, <emclass="sig-param"><spanclass="n">raise_errors</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.dbid_to_obj"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">latinify</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">'?'</span></em>, <emclass="sig-param"><spanclass="n">pure_ascii</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#latinify"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.latinify"title="Permalink to this definition">¶</a></dt>
<dt>A ‘latinified’ string where each unicode character has been</dt><dd><p>replaced with a ‘safe’ equivalent available in the ascii/latin-1 charset.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<dlclass="simple">
<dt>This is inspired by the gist by Ricardo Murri:</dt><dd><p><aclass="reference external"href="https://gist.github.com/riccardomurri/3c3ccec30f037be174d3">https://gist.github.com/riccardomurri/3c3ccec30f037be174d3</a></p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">to_bytes</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#to_bytes"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.to_bytes"title="Permalink to this definition">¶</a></dt>
<dd><p>Try to encode the given text to bytes, using encodings from settings or from Session. Will
always return a bytes, even if given something that is not str or bytes.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>text</strong> (<em>any</em>) – The text to encode to bytes. If bytes, return unchanged. If not a str, convert
to str before converting.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – A Session to get encoding info from. Will try this before
<dt>the encoded text following the session’s protocol flag followed by the</dt><dd><p>encodings specified in settings.ENCODINGS. If all attempt fail, log the error and send
the text with “?” in place of problematic characters. If the specified encoding cannot
be found, the protocol flag is reset to utf-8. In any case, returns bytes.</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">to_str</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">text</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#to_str"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.to_str"title="Permalink to this definition">¶</a></dt>
<dd><p>Try to decode a bytestream to a python str, using encoding schemas from settings
or from Session. Will always return a str(), also if not given a str/bytes.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>text</strong> (<em>any</em>) – The text to encode to bytes. If a str, return it. If also not bytes, convert
to str using str() or repr() as a fallback.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – A Session to get encoding info from. Will try this before
falling back to settings.ENCODINGS.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>decoded_text (str)</em>– The decoded text.</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">validate_email_address</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">emailaddress</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#validate_email_address"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.validate_email_address"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">inherits_from</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em>, <emclass="sig-param"><spanclass="n">parent</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#inherits_from"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.inherits_from"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">server_services</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#server_services"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.server_services"title="Permalink to this definition">¶</a></dt>
<dd><p>Lists all services active on the Server. Observe that since
services are launched in memory, this function will only return
any results if called from inside the game.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>services (dict)</em>– A dict of available services.</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">uses_database</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">'sqlite3'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#uses_database"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.uses_database"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">delay</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">timedelay</span></em>, <emclass="sig-param"><spanclass="n">callback</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#delay"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.delay"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">repeat</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">interval</span></em>, <emclass="sig-param"><spanclass="n">callback</span></em>, <emclass="sig-param"><spanclass="n">persistent</span><spanclass="o">=</span><spanclass="default_value">True</span></em>, <emclass="sig-param"><spanclass="n">idstring</span><spanclass="o">=</span><spanclass="default_value">''</span></em>, <emclass="sig-param"><spanclass="n">stop</span><spanclass="o">=</span><spanclass="default_value">False</span></em>, <emclass="sig-param"><spanclass="n">store_key</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Start a repeating task using the TickerHandler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>interval</strong> (<em>int</em>) – How often to call callback.</p></li>
<li><p><strong>callback</strong> (<em>callable</em>) – This will be called with <strong>*args, **kwargs</strong> every
<strong>interval</strong> seconds. This must be possible to pickle regardless
of if <strong>persistent</strong> is set or not!</p></li>
<li><p><strong>persistent</strong> (<em>bool</em><em>, </em><em>optional</em>) – If ticker survives a server reload.</p></li>
<li><p><strong>idstring</strong> (<em>str</em><em>, </em><em>optional</em>) – Separates multiple tickers. This is useful
mainly if wanting to set up multiple repeats for the same
interval/callback but with different args/kwargs.</p></li>
<li><p><strong>stop</strong> (<em>bool</em><em>, </em><em>optional</em>) – If set, use the given parameters to _stop_ a running
ticker instead of creating a new one.</p></li>
<li><p><strong>store_key</strong> (<em>tuple</em><em>, </em><em>optional</em>) – This is only used in combination with <strong>stop</strong> and
should be the return given from the original <strong>repeat</strong> call. If this
is given, all other args except <strong>stop</strong> are ignored.</p></li>
<li><p><strong>*args</strong>– Used as arguments to <strong>callback</strong>.</p></li>
<li><p><strong>**kwargs</strong>– Keyword-arguments to pass to <strong>callback</strong>.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>tuple or None</em>– The tuple is the <strong>store_key</strong> - the identifier for the
created ticker. Store this and pass into unrepat() in order to to stop
this ticker later. Returns <strong>None</strong> if <strong>stop=True</strong>.</p>
</dd>
<dtclass="field-odd">Raises</dt>
<ddclass="field-odd"><p><strong>KeyError</strong>– If trying to stop a ticker that was not found.</p>
</dd>
</dl>
</dd></dl>
<dlclass="py function">
<dtid="evennia.utils.utils.unrepeat">
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">unrepeat</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">store_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#unrepeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.unrepeat"title="Permalink to this definition">¶</a></dt>
<dd><p>This is used to stop a ticker previously started with <strong>repeat</strong>.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>store_key</strong> (<em>tuple</em>) – This is the return from <strong>repeat</strong>, used to uniquely
identify the ticker to stop. Without the store_key, the ticker
must be stopped by passing its parameters to <strong>TICKER_HANDLER.remove</strong>
directly.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><p><em>bool</em>–</p>
<dlclass="simple">
<dt>True if a ticker was stopped, False if not (for example because no</dt><dd><p>matching ticker was found or it was already stopped).</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">run_async</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">to_execute</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#run_async"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.run_async"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">check_evennia_dependencies</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#check_evennia_dependencies"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.check_evennia_dependencies"title="Permalink to this definition">¶</a></dt>
<dd><p>Checks the versions of Evennia’s dependencies including making
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">has_parent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">basepath</span></em>, <emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#has_parent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.has_parent"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">mod_import_from_path</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">path</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#mod_import_from_path"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.mod_import_from_path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">mod_import</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#mod_import"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.mod_import"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">all_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#all_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.all_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">callables_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#callables_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.callables_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">variable_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em>, <emclass="sig-param"><spanclass="n">variable</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#variable_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.variable_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">string_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em>, <emclass="sig-param"><spanclass="n">variable</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.string_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">random_string_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">module</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#random_string_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.random_string_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">fuzzy_import_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">path</span></em>, <emclass="sig-param"><spanclass="n">variable</span></em>, <emclass="sig-param"><spanclass="n">default</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">defaultpaths</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#fuzzy_import_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.fuzzy_import_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">class_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">path</span></em>, <emclass="sig-param"><spanclass="n">defaultpaths</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">fallback</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#class_from_module"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.class_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">object_from_module</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">path</span></em>, <emclass="sig-param"><spanclass="n">defaultpaths</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">fallback</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.object_from_module"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">init_new_account</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">account</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#init_new_account"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.init_new_account"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">string_similarity</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string1</span></em>, <emclass="sig-param"><spanclass="n">string2</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_similarity"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.string_similarity"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">string_suggestions</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string</span></em>, <emclass="sig-param"><spanclass="n">vocabulary</span></em>, <emclass="sig-param"><spanclass="n">cutoff</span><spanclass="o">=</span><spanclass="default_value">0.6</span></em>, <emclass="sig-param"><spanclass="n">maxnum</span><spanclass="o">=</span><spanclass="default_value">3</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_suggestions"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.string_suggestions"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">string_partial_matching</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">alternatives</span></em>, <emclass="sig-param"><spanclass="n">inp</span></em>, <emclass="sig-param"><spanclass="n">ret_index</span><spanclass="o">=</span><spanclass="default_value">True</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_partial_matching"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.string_partial_matching"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">format_table</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">table</span></em>, <emclass="sig-param"><spanclass="n">extra_space</span><spanclass="o">=</span><spanclass="default_value">1</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#format_table"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.format_table"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">percent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">value</span></em>, <emclass="sig-param"><spanclass="n">minval</span></em>, <emclass="sig-param"><spanclass="n">maxval</span></em>, <emclass="sig-param"><spanclass="n">formatting</span><spanclass="o">=</span><spanclass="default_value">'{:3.1f}%'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#percent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.percent"title="Permalink to this definition">¶</a></dt>
<dd><p>Get a value in an interval as a percentage of its position
in that interval. This also understands negative numbers.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>value</strong> (<em>number</em>) – This should be a value minval<=value<=maxval.</p></li>
<li><p><strong>minval</strong> (<em>number</em><em> or </em><em>None</em>) – Smallest value in interval. This could be None
for an open interval (then return will always be 100%)</p></li>
<li><p><strong>maxval</strong> (<em>number</em><em> or </em><em>None</em>) – Biggest value in interval. This could be None
for an open interval (then return will always be 100%)</p></li>
<li><p><strong>formatted</strong> (<em>str</em><em>, </em><em>optional</em>) – This is a string that should
accept one formatting tag. This will receive the
current value as a percentage. If None, the
raw float will be returned instead.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>str or float</em>– The formatted value or the raw percentage as a float.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>We try to handle a weird interval gracefully.</p>
<ulclass="simple">
<li><p>If either maxval or minval is None (open interval), we (aribtrarily) assume 100%.</p></li>
<li><p>If minval > maxval, we return 0%.</p></li>
<li><p>If minval == maxval == value we are looking at a single value match and return 100%.</p></li>
<li><p>If minval == maxval != value we return 0%.</p></li>
<li><p>If value not in [minval..maxval], we set value to the closest
boundary, so the result will be 0% or 100%, respectively.</p></li>
</ul>
</dd></dl>
<dlclass="py function">
<dtid="evennia.utils.utils.percentile">
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">percentile</code><spanclass="sig-paren">(</span><emclass="sig-param">iterable</em>, <emclass="sig-param">percent</em>, <emclass="sig-param">key=<function <lambda>></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#percentile"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.percentile"title="Permalink to this definition">¶</a></dt>
<dd><p>Find the percentile of a list of values.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>iterable</strong> (<em>iterable</em>) – A list of values. Note N MUST BE already sorted.</p></li>
<li><p><strong>percent</strong> (<em>float</em>) – A value from 0.0 to 1.0.</p></li>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">get_evennia_pids</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_evennia_pids"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.get_evennia_pids"title="Permalink to this definition">¶</a></dt>
<dd><p>Get the currently valid PIDs (Process IDs) of the Portal and
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">deepsize</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em>, <emclass="sig-param"><spanclass="n">max_depth</span><spanclass="o">=</span><spanclass="default_value">4</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#deepsize"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.deepsize"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">lazy_property</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">func</span></em>, <emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">doc</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.lazy_property"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">func</span></em>, <emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">doc</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.lazy_property.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">strip_control_sequences</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#strip_control_sequences"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.strip_control_sequences"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">calledby</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">callerdepth</span><spanclass="o">=</span><spanclass="default_value">1</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#calledby"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.calledby"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">m_len</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">target</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#m_len"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.m_len"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">display_len</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">target</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#display_len"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.display_len"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">LimitedSizeOrderedDict</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#LimitedSizeOrderedDict"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#LimitedSizeOrderedDict.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">update</code><spanclass="sig-paren">(</span><spanclass="optional">[</span><emclass="sig-param">E</em>, <spanclass="optional">]</span><emclass="sig-param">**F</em><spanclass="sig-paren">)</span>→ None. Update D from dict/iterable E and F.<aclass="reference internal"href="../_modules/evennia/utils/utils.html#LimitedSizeOrderedDict.update"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict.update"title="Permalink to this definition">¶</a></dt>
<dd><p>If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">get_game_dir_path</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_game_dir_path"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.get_game_dir_path"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called by settings_default in order to determine the path
of the game directory.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>path (str)</em>– Full OS path to the game dir</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">get_all_typeclasses</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">parent</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_all_typeclasses"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.get_all_typeclasses"title="Permalink to this definition">¶</a></dt>
<p>This will dynamically retrieve all abstract django models inheriting at
any distance from the TypedObject base (aka a Typeclass) so it will
work fine with any custom classes being added.</p>
</dd></dl>
<dlclass="py function">
<dtid="evennia.utils.utils.get_all_cmdsets">
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">get_all_cmdsets</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">parent</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_all_cmdsets"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.get_all_cmdsets"title="Permalink to this definition">¶</a></dt>
<dd><p>List available cmdsets from all available modules.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>parent</strong> (<em>str</em><em>, </em><em>optional</em>) – If given, only return cmdsets inheriting (at
any distance) from this parent.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>dict</em>– On the form {“cmdset.path”: cmdset, …}</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This will dynamically retrieve all abstract django models inheriting at
any distance from the CmdSet base so it will work fine with any custom
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">interactive</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">func</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#interactive"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.interactive"title="Permalink to this definition">¶</a></dt>
<spanclass="n">caller</span><spanclass="o">.</span><spanclass="n">msg</span><spanclass="p">(</span><spanclass="s2">"This is a test"</span><spanclass="p">)</span>
<spanclass="c1"># ask user (caller) a question</span>
<spanclass="n">response</span><spanclass="o">=</span><spanclass="k">yield</span><spanclass="p">(</span><spanclass="s2">"Do you want to continue waiting?"</span><spanclass="p">)</span>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">safe_convert_to_types</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">converters</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="n">raise_errors</span><spanclass="o">=</span><spanclass="default_value">True</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#safe_convert_to_types"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.safe_convert_to_types"title="Permalink to this definition">¶</a></dt>
<dd><p>Helper function to safely convert inputs to expected data types.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>converters</strong> (<em>tuple</em>) – A tuple <strong>((converter, converter,…), {kwarg: converter, …})</strong> to
match a converter to each element in <strong>*args</strong> and <strong>**kwargs</strong>.
Each converter will will be called with the arg/kwarg-value as the only argument.
If there are too few converters given, the others will simply not be converter. If the
converter is given as the string ‘py’, it attempts to run
<strong>safe_eval</strong>/<strong>literal_eval</strong> on the input arg or kwarg value. It’s possible to
skip the arg/kwarg part of the tuple, an empty tuple/dict will then be assumed.</p></li>
<li><p><strong>*args</strong>– The arguments to convert with <strong>argtypes</strong>.</p></li>
<li><p><strong>raise_errors</strong> (<em>bool</em><em>, </em><em>optional</em>) – If set, raise any errors. This will
abort the conversion at that arg/kwarg. Otherwise, just skip the
conversion of the failing arg/kwarg. This will be set by the FuncParser if
this is used as a part of a FuncParser callable.</p></li>
<li><p><strong>**kwargs</strong>– The kwargs to convert with <strong>kwargtypes</strong></p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>tuple</em>–<strong>(args, kwargs)</strong> in converted form.</p>
</dd>
<dtclass="field-odd">Raises</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><aclass="reference internal"href="evennia.utils.funcparser.html#evennia.utils.funcparser.ParsingError"title="evennia.utils.funcparser.ParsingError"><strong>utils.funcparser.ParsingError</strong></a>– If parsing failed in the <strong>‘py’</strong>
converter. This also makes this compatible with the FuncParser
interface.</p></li>
<li><p><strong>any</strong>– Any other exception raised from other converters, if raise_errors is True.</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This function is often used to validate/convert input from untrusted sources. For
security, the “py”-converter is deliberately limited and uses <strong>safe_eval</strong>/<strong>literal_eval</strong>
which only supports simple expressions or simple containers with literals. NEVER
use the python <strong>eval</strong> or <strong>exec</strong> methods as a converter for any untrusted input! Allowing
untrusted sources to execute arbitrary python on your server is a severe security risk,</p>
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">strip_unsafe_input</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">txt</span></em>, <emclass="sig-param"><spanclass="n">session</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">bypass_perms</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#strip_unsafe_input"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.strip_unsafe_input"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove ‘unsafe’ text codes from text; these are used to elimitate
exploits in user-provided data, such as html-tags, line breaks etc.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>txt</strong> (<em>str</em>) – The text to clean.</p></li>
<li><p><strong>session</strong> (<aclass="reference internal"href="evennia.server.session.html#evennia.server.session.Session"title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) – A Session in order to determine if
the check should be bypassed by permission (will be checked
with the ‘perm’ lock, taking permission hierarchies into account).</p></li>
<li><p><strong>bypass_perms</strong> (<em>list</em><em>, </em><em>optional</em>) – Iterable of permission strings
to check for bypassing the strip. If not given, use
<codeclass="sig-prename descclassname">evennia.utils.utils.</code><codeclass="sig-name descname">copy_word_case</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">base_word</span></em>, <emclass="sig-param"><spanclass="n">new_word</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#copy_word_case"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.utils.utils.copy_word_case"title="Permalink to this definition">¶</a></dt>
<dd><p>Converts a word to use the same capitalization as a first word.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>base_word</strong> (<em>str</em>) – A word to get the capitalization from.</p></li>
<li><p><strong>new_word</strong> (<em>str</em>) – A new word to capitalize in the same way as <strong>base_word</strong>.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>str</em>– The <strong>new_word</strong> with capitalization matching the first word.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This is meant for words. Longer sentences may get unexpected results.</p>
<p>If the two words have a mix of capital/lower letters _and_ <strong>new_word</strong>
is longer than <strong>base_word</strong>, the excess will retain its original case.</p>