evennia/docs/2.x/api/evennia.utils.optionhandler.html
Evennia docbuilder action e535f5782a Updated HTML docs.
2023-10-19 20:22:27 +00:00

274 lines
No EOL
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.utils.optionhandler &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.utils.picklefield" href="evennia.utils.picklefield.html" />
<link rel="prev" title="evennia.utils.optionclasses" href="evennia.utils.optionclasses.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.utils.picklefield.html" title="evennia.utils.picklefield"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.utils.optionclasses.html" title="evennia.utils.optionclasses"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.utils.html" accesskey="U">evennia.utils</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.optionhandler</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.utils.optionclasses.html"
title="previous chapter">evennia.utils.optionclasses</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.utils.picklefield.html"
title="next chapter">evennia.utils.picklefield</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.utils.optionhandler.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li><a href="evennia.utils.optionhandler.html">2.x (main branch)</a></li>
<ul>
<li><a href="../1.3.0/index.html">1.3.0 (v1.3.0 branch)</a></li>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.utils.optionhandler">
<span id="evennia-utils-optionhandler"></span><h1>evennia.utils.optionhandler<a class="headerlink" href="#module-evennia.utils.optionhandler" title="Permalink to this headline"></a></h1>
<dl class="py class">
<dt id="evennia.utils.optionhandler.InMemorySaveHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.optionhandler.</code><code class="sig-name descname">InMemorySaveHandler</code><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#InMemorySaveHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.InMemorySaveHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Fallback SaveHandler, implementing a minimum of the required save mechanism
and storing data in memory.</p>
<dl class="py method">
<dt id="evennia.utils.optionhandler.InMemorySaveHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#InMemorySaveHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.InMemorySaveHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.utils.optionhandler.InMemorySaveHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#InMemorySaveHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.InMemorySaveHandler.add" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.utils.optionhandler.InMemorySaveHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#InMemorySaveHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.InMemorySaveHandler.get" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.utils.optionhandler.OptionHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.optionhandler.</code><code class="sig-name descname">OptionHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">options_dict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">savefunc</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">loadfunc</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">save_kwargs</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">load_kwargs</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#OptionHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.OptionHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This is a generic Option handler. Retrieve options either as properties on
this handler or by using the .get method.</p>
<p>This is used for Account.options but it could be used by Scripts or Objects
just as easily. All it needs to be provided is an options_dict.</p>
<dl class="py method">
<dt id="evennia.utils.optionhandler.OptionHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">options_dict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">savefunc</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">loadfunc</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">save_kwargs</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">load_kwargs</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#OptionHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.OptionHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize an OptionHandler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>obj</strong> (<em>object</em>) The object this handler sits on. This is usually a TypedObject.</p></li>
<li><p><strong>options_dict</strong> (<em>dict</em>) A dictionary of option keys, where the values
are options. The format of those tuples is: (key, “Description to
show”, option_type, &lt;default value&gt;)</p></li>
<li><p><strong>savefunc</strong> (<em>callable</em>) A callable for all options to call when saving itself.
It will be called as <strong>savefunc(key, value, **save_kwargs)</strong>. A common one
to pass would be AttributeHandler.add.</p></li>
<li><p><strong>loadfunc</strong> (<em>callable</em>) A callable for all options to call when loading data into
itself. It will be called as <strong>loadfunc(key, default=default, **load_kwargs)</strong>.
A common one to pass would be AttributeHandler.get.</p></li>
<li><p><strong>save_kwargs</strong> (<em>any</em>) Optional extra kwargs to pass into <strong>savefunc</strong> above.</p></li>
<li><p><strong>load_kwargs</strong> (<em>any</em>) Optional extra kwargs to pass into <strong>loadfunc</strong> above.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Both loadfunc and savefunc must be specified. If only one is given, the other
will be ignored and in-memory storage will be used.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.utils.optionhandler.OptionHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">return_obj</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">raise_error</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#OptionHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.OptionHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Retrieves an Option stored in the handler. Will load it if it doesnt exist.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>str</em>) The option key to retrieve.</p></li>
<li><p><strong>default</strong> (<em>any</em>) What to return if the option is defined.</p></li>
<li><p><strong>return_obj</strong> (<em>bool</em><em>, </em><em>optional</em>) If True, returns the actual option
object instead of its value.</p></li>
<li><p><strong>raise_error</strong> (<em>bool</em><em>, </em><em>optional</em>) Raise Exception if key is not found in options.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>option_value (any or Option)</em> An option value the Option itself.</p>
</dd>
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><p><strong>KeyError</strong> If option is not defined.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.utils.optionhandler.OptionHandler.set">
<code class="sig-name descname">set</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">value</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#OptionHandler.set"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.OptionHandler.set" title="Permalink to this definition"></a></dt>
<dd><p>Change an individual option.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>str</em>) The key of an option that can be changed. Allows partial matching.</p></li>
<li><p><strong>value</strong> (<em>str</em>) The value that should be checked, coerced, and stored.:</p></li>
<li><p><strong>kwargs</strong> (<em>any</em><em>, </em><em>optional</em>) These are passed into the Options validation function,
save function and display function and allows to customize either.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>value (any)</em> Value stored in option, after validation.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.utils.optionhandler.OptionHandler.all">
<code class="sig-name descname">all</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">return_objs</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/optionhandler.html#OptionHandler.all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.optionhandler.OptionHandler.all" title="Permalink to this definition"></a></dt>
<dd><p>Get all options defined on this handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>return_objs</strong> (<em>bool</em><em>, </em><em>optional</em>) Return the actual Option objects rather
than their values.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><p><em>all_options (dict)</em> </p>
<dl class="simple">
<dt>All options on this handler, either <strong>{key: value}</strong></dt><dd><p>or <strong>{key: &lt;Option&gt;}</strong> if <strong>return_objs</strong> is <strong>True</strong>.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.utils.picklefield.html" title="evennia.utils.picklefield"
>next</a> |</li>
<li class="right" >
<a href="evennia.utils.optionclasses.html" title="evennia.utils.optionclasses"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.utils.html" >evennia.utils</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.optionhandler</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>