<spanid="evennia-utils-utils"></span><h1>evennia.utils.utils<aclass="headerlink"href="#module-evennia.utils.utils"title="Link to this heading">¶</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
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">is_iter</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#is_iter"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.is_iter"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">make_iter</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#make_iter"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.make_iter"title="Link to this definition">¶</a></dt>
<dd><p>Makes sure that the object is always iterable.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">wrap</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">indent</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/utils/utils.html#wrap"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.wrap"title="Link to this definition">¶</a></dt>
<dd><p>Safely wrap text to a certain number of characters.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">fill</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">indent</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">0</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.fill"title="Link to this definition">¶</a></dt>
<dd><p>Safely wrap text to a certain number of characters.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">pad</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">align</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'c'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">fillchar</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'</span><spanclass="pre">'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#pad"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.pad"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">crop</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">suffix</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'[...]'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#crop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.crop"title="Link to this definition">¶</a></dt>
<dd><p>Crop text to a certain width, throwing away text from too-long
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">dedent</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">baseline_index</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">indent</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dedent"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.dedent"title="Link to this definition">¶</a></dt>
<dd><p>Safely clean all whitespace at the left of a paragraph.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">iter_to_str</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">iterable</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">','</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">endsep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">',</span><spanclass="pre">and'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">addquote</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#iter_to_str"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.iter_to_str"title="Link to this definition">¶</a></dt>
<dd><p>This pretty-formats an iterable list as string output, adding an optional
alternative separator to the second to last entry. If <strong>addquote</strong>
is <strong>True</strong>, the outgoing strings will be surrounded by quotes.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">list_to_string</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">iterable</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">','</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">endsep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">',</span><spanclass="pre">and'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">addquote</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.list_to_string"title="Link to this definition">¶</a></dt>
<dd><p>This pretty-formats an iterable list as string output, adding an optional
alternative separator to the second to last entry. If <strong>addquote</strong>
is <strong>True</strong>, the outgoing strings will be surrounded by quotes.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">iter_to_string</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">iterable</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">','</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">endsep</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">',</span><spanclass="pre">and'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">addquote</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.iter_to_string"title="Link to this definition">¶</a></dt>
<dd><p>This pretty-formats an iterable list as string output, adding an optional
alternative separator to the second to last entry. If <strong>addquote</strong>
is <strong>True</strong>, the outgoing strings will be surrounded by quotes.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">compress_whitespace</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">max_linebreaks</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">1</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">max_spacing</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">2</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#compress_whitespace"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.compress_whitespace"title="Link to this definition">¶</a></dt>
<dd><p>Removes extra sequential whitespace in a block of text. This will also remove any trailing
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">wildcard_to_regexp</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">instring</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#wildcard_to_regexp"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.wildcard_to_regexp"title="Link to this definition">¶</a></dt>
<dd><p>Converts a player-supplied string that may have wildcards in it to
regular expressions. This is useful for name matching.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">time_format</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">seconds</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">style</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/utils/utils.html#time_format"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.time_format"title="Link to this definition">¶</a></dt>
<dd><p>Function to return a ‘prettified’ version of a value in seconds.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">datetime_format</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">dtobj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#datetime_format"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.datetime_format"title="Link to this definition">¶</a></dt>
<dd><p>Pretty-prints the time since a given time.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">host_os_is</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">osname</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#host_os_is"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.host_os_is"title="Link to this definition">¶</a></dt>
<dd><p>Check to see if the host OS matches the query.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">get_evennia_version</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">mode</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'long'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_evennia_version"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.get_evennia_version"title="Link to this definition">¶</a></dt>
<dd><p>Helper method for getting the current evennia version.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">pypath_to_realpath</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">python_path</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">file_ending</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'.py'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">pypath_prefixes</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#pypath_to_realpath"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.pypath_to_realpath"title="Link to this definition">¶</a></dt>
<dd><p>Converts a dotted Python path to an absolute path under the
Evennia library directory or under the current game directory.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">dbref</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">inp</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">reqhash</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dbref"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.dbref"title="Link to this definition">¶</a></dt>
<dd><p>Converts/checks if input is a valid dbref.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">dbref_to_obj</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">inp</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">objclass</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">raise_errors</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#dbref_to_obj"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.dbref_to_obj"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">dbid_to_obj</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">inp</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">objclass</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">raise_errors</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.dbid_to_obj"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">latinify</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">string</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'?'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">pure_ascii</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#latinify"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.latinify"title="Link to this definition">¶</a></dt>
<dd><p>Convert a unicode string to “safe” ascii/latin-1 characters.
This is used as a last resort when normal encoding does not work.</p>
<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>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">to_bytes</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">session</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#to_bytes"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.to_bytes"title="Link 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>
<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>
</dd>
</dl>
</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>If <strong>text</strong> is already bytes, return it as is.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">to_str</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">session</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#to_str"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.to_str"title="Link 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>
<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
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">validate_email_address</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">emailaddress</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#validate_email_address"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.validate_email_address"title="Link to this definition">¶</a></dt>
<dd><p>Checks if an email address is syntactically correct. Makes use
of the django email-validator for consistency.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">inherits_from</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">parent</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#inherits_from"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.inherits_from"title="Link to this definition">¶</a></dt>
<dd><p>Takes an object and tries to determine if it inherits at <em>any</em>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">server_services</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#server_services"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.server_services"title="Link 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
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">uses_database</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'sqlite3'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#uses_database"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.uses_database"title="Link to this definition">¶</a></dt>
<dd><p>Checks if the game is currently using a given database. This is a
shortcut to having to use the full backend name.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">delay</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">timedelay</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">callback</span></span></em>, <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/utils/utils.html#delay"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.delay"title="Link to this definition">¶</a></dt>
<dd><p>Delay the calling of a callback (function).</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">unrepeat</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">store_key</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#unrepeat"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.unrepeat"title="Link to this definition">¶</a></dt>
<dd><p>This is used to stop a ticker previously started with <strong>repeat</strong>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">run_async</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">to_execute</span></span></em>, <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/utils/utils.html#run_async"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.run_async"title="Link to this definition">¶</a></dt>
<dd><p>Runs a function or executes a code snippet asynchronously.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">check_evennia_dependencies</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#check_evennia_dependencies"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.check_evennia_dependencies"title="Link to this definition">¶</a></dt>
<dd><p>Checks the versions of Evennia’s dependencies including making
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">has_parent</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">basepath</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#has_parent"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.has_parent"title="Link to this definition">¶</a></dt>
<dd><p>Checks if <strong>basepath</strong> is somewhere in obj’s parent tree.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">mod_import_from_path</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">path</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#mod_import_from_path"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.mod_import_from_path"title="Link to this definition">¶</a></dt>
<dd><p>Load a Python module at the specified path.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">mod_import</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#mod_import"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.mod_import"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">all_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#all_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.all_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Return all global-level variables defined in a module.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">callables_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#callables_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.callables_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Return all global-level callables defined in a module.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">variable_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">variable</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#variable_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.variable_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Retrieve a variable or list of variables from a module. The
variable(s) must be defined globally in the module. If no variable
is given (or a list entry is <strong>None</strong>), all global variables are
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">string_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">variable</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.string_from_module"title="Link to this definition">¶</a></dt>
<dd><p>This is a wrapper for <strong>variable_from_module</strong> that requires return
value to be a string to pass. It’s primarily used by login screen.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">random_string_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">module</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#random_string_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.random_string_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Returns a random global string from a module.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">fuzzy_import_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">path</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">variable</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">defaultpaths</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#fuzzy_import_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.fuzzy_import_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Import a variable based on a fuzzy path. First the literal
<strong>path</strong> will be tried, then all given <strong>defaultpaths</strong> will be
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">class_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">path</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">defaultpaths</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">fallback</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#class_from_module"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.class_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Return a class from a module, given the class’ full python path. This is
primarily used to convert db_typeclass_path:s to classes.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">object_from_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">path</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">defaultpaths</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">fallback</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.utils.utils.object_from_module"title="Link to this definition">¶</a></dt>
<dd><p>Return a class from a module, given the class’ full python path. This is
primarily used to convert db_typeclass_path:s to classes.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">init_new_account</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">account</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#init_new_account"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.init_new_account"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">string_similarity</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">string1</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">string2</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_similarity"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.string_similarity"title="Link to this definition">¶</a></dt>
<dd><p>This implements a “cosine-similarity” algorithm as described for example in
<em>Proceedings of the 22nd International Conference on Computation
Linguistics</em> (Coling 2008), pages 593-600, Manchester, August 2008.
The measure-vectors used is simply a “bag of words” type histogram
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">string_suggestions</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">string</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">vocabulary</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">cutoff</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">0.6</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">maxnum</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">3</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_suggestions"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.string_suggestions"title="Link to this definition">¶</a></dt>
<dd><p>Given a <strong>string</strong> and a <strong>vocabulary</strong>, return a match or a list of
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">string_partial_matching</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">alternatives</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">inp</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">ret_index</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#string_partial_matching"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.string_partial_matching"title="Link to this definition">¶</a></dt>
<dd><p>Partially matches a string based on a list of <strong>alternatives</strong>.
Matching is made from the start of each subword in each
alternative. Case is not important. So e.g. “bi sh sw” or just
“big” or “shiny” or “sw” will match “Big shiny sword”. Scoring is
done to allow to separate by most common denominator. You will get
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">group_objects_by_key_and_desc</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">objects</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">caller</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/utils/utils.html#group_objects_by_key_and_desc"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.group_objects_by_key_and_desc"title="Link to this definition">¶</a></dt>
<dd><p>Groups a list of objects by their key and description. This is used to group
visibly identical objects together, for example for inventory listings.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">format_table</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">table</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">extra_space</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">1</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#format_table"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.format_table"title="Link to this definition">¶</a></dt>
<dd><p>Format a 2D array of strings into a multi-column table.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">percent</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">value</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">minval</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">maxval</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">formatting</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'{:3.1f}%'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#percent"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.percent"title="Link 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>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">percentile</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">iterable</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">percent</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">key=<function</span><spanclass="pre"><lambda>></span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#percentile"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.percentile"title="Link to this definition">¶</a></dt>
<dd><p>Find the percentile of a list of values.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">get_evennia_pids</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_evennia_pids"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.get_evennia_pids"title="Link to this definition">¶</a></dt>
<dd><p>Get the currently valid PIDs (Process IDs) of the Portal and
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">deepsize</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">max_depth</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">4</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#deepsize"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.deepsize"title="Link to this definition">¶</a></dt>
<dd><p>Get not only size of the given object, but also the size of
objects referenced by the object, down to <strong>max_depth</strong> distance
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">lazy_property</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">func</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">TProp</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">doc</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.lazy_property"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">func</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">TProp</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">doc</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.lazy_property.__init__"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">strip_control_sequences</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">string</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#strip_control_sequences"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.strip_control_sequences"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">calledby</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">callerdepth</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">1</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#calledby"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.calledby"title="Link to this definition">¶</a></dt>
<dd><p>Only to be used for debug purposes. Insert this debug function in
another function; it will print which function called it.</p>
<ddclass="field-odd"><p><strong>callerdepth</strong> (<em>int</em><em> or </em><em>None</em>) – If None, show entire stack. If int, must be larger than 0.
When > 1, it will print the sequence to that depth.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">m_len</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">target</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#m_len"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.m_len"title="Link to this definition">¶</a></dt>
<dd><p>Provides length checking for strings with MXP patterns, and falls
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">display_len</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">target</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#display_len"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.display_len"title="Link to this definition">¶</a></dt>
<dd><p>Calculate the ‘visible width’ of text. This is not necessarily the same as the
number of characters in the case of certain asian characters. This will also
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">LimitedSizeOrderedDict</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/utils/utils.html#LimitedSizeOrderedDict"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</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/utils/utils.html#LimitedSizeOrderedDict.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict.__init__"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">update</span></span><spanclass="sig-paren">(</span><spanclass="optional">[</span><emclass="sig-param"><spanclass="n"><spanclass="pre">E</span></span></em>, <spanclass="optional">]</span><emclass="sig-param"><spanclass="n"><spanclass="pre">**F</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None.</span> <spanclass="pre">Update</span><spanclass="pre">D</span><spanclass="pre">from</span><spanclass="pre">mapping/iterable</span><spanclass="pre">E</span><spanclass="pre">and</span><spanclass="pre">F.</span></span></span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#LimitedSizeOrderedDict.update"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.LimitedSizeOrderedDict.update"title="Link to this definition">¶</a></dt>
<dd><p>If E is present and has a .keys() method, then does: for k in E.keys(): 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>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">get_game_dir_path</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_game_dir_path"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.get_game_dir_path"title="Link to this definition">¶</a></dt>
<dd><p>This is called by settings_default in order to determine the path
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">get_all_typeclasses</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">parent</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_all_typeclasses"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.get_all_typeclasses"title="Link to this definition">¶</a></dt>
<dd><p>List available typeclasses from all available modules.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">get_all_cmdsets</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">parent</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#get_all_cmdsets"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.get_all_cmdsets"title="Link to this definition">¶</a></dt>
<dd><p>List available cmdsets from all available modules.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">interactive</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">func</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#interactive"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.interactive"title="Link to this definition">¶</a></dt>
<dd><p>Decorator to make a method pausable with <strong>yield(seconds)</strong>
and able to ask for user-input with <strong>response=yield(question)</strong>.
For the question-asking to work, one of the args or kwargs to the
<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>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">safe_convert_to_types</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">converters</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">raise_errors</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/utils/utils.html#safe_convert_to_types"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.safe_convert_to_types"title="Link to this definition">¶</a></dt>
<dd><p>Helper function to safely convert inputs to expected data types.</p>
<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>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">strip_unsafe_input</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">txt</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">session</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">bypass_perms</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#strip_unsafe_input"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.strip_unsafe_input"title="Link 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>
<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
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">copy_word_case</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">base_word</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">new_word</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#copy_word_case"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.copy_word_case"title="Link to this definition">¶</a></dt>
<dd><p>Converts a word to use the same capitalization as a first word.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">run_in_main_thread</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">function_or_method</span></span></em>, <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/utils/utils.html#run_in_main_thread"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.run_in_main_thread"title="Link to this definition">¶</a></dt>
<dd><p>Force a callable to execute in the main Evennia thread. This is only relevant when
calling code from e.g. web views, which run in a separate threadpool. Use this
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">int2str</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">number</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">adjective</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#int2str"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.int2str"title="Link to this definition">¶</a></dt>
<dd><p>Convert a number to an English string for better display; so 1 -> one, 2 -> two etc
up until 12, after which it will be ‘13’, ‘14’ etc.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">str2int</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">number</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#str2int"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.str2int"title="Link to this definition">¶</a></dt>
<ddclass="field-odd"><p><strong>number</strong> (<em>str</em>) – The string to convert. It can be a digit such as “1”, or a number word such as “one”.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">match_ip</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">address</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">pattern</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">bool</span></span></span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#match_ip"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.match_ip"title="Link to this definition">¶</a></dt>
<dd><p>Check if an IP address matches a given pattern. The pattern can be a single IP address
such as 8.8.8.8 or a CIDR-formatted subnet like 10.0.0.0/8</p>
<p>IPv6 is supported to, with CIDR-subnets looking like 2001:db8::/48</p>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">ip_from_request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">request</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">exclude</span></span><spanclass="o"><spanclass="pre">=</span></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">str</span></span></span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#ip_from_request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.ip_from_request"title="Link to this definition">¶</a></dt>
<dd><p>Retrieves the IP address from a web Request, while respecting X-Forwarded-For and
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.utils.utils.</span></span><spanclass="sig-name descname"><spanclass="pre">value_is_integer</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">value</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#value_is_integer"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.utils.utils.value_is_integer"title="Link to this definition">¶</a></dt>
<dd><p>Determines if a value can be type-cast to an integer.</p>