mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 22:06:30 +01:00
612 lines
No EOL
52 KiB
HTML
612 lines
No EOL
52 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>evennia — Evennia 3.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" />
|
|
</head><body>
|
|
|
|
|
|
<div class="admonition important">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
|
|
</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"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Module code</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia</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><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>
|
|
</div>
|
|
</div>
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">Evennia MUD/MUX/MU* creation system</span>
|
|
|
|
<span class="sd">This is the main top-level API for Evennia. You can explore the evennia library</span>
|
|
<span class="sd">by accessing evennia.<subpackage> directly. From inside the game you can read</span>
|
|
<span class="sd">docs of all object by viewing its `__doc__` string, such as through</span>
|
|
|
|
<span class="sd"> py evennia.ObjectDB.__doc__</span>
|
|
|
|
<span class="sd">For full functionality you should explore this module via a django-</span>
|
|
<span class="sd">aware shell. Go to your game directory and use the command</span>
|
|
|
|
<span class="sd"> evennia shell</span>
|
|
|
|
<span class="sd">to launch such a shell (using python or ipython depending on your install).</span>
|
|
<span class="sd">See www.evennia.com for full documentation.</span>
|
|
|
|
<span class="sd">"""</span>
|
|
<span class="kn">import</span> <span class="nn">evennia</span>
|
|
|
|
<span class="c1"># docstring header</span>
|
|
|
|
<span class="n">DOCSTRING</span> <span class="o">=</span> <span class="s2">"""</span>
|
|
<span class="s2">Evennia MU* creation system.</span>
|
|
|
|
<span class="s2">Online manual and API docs are found at http://www.evennia.com.</span>
|
|
|
|
<span class="s2">Flat-API shortcut names:</span>
|
|
<span class="si">{}</span>
|
|
<span class="s2">"""</span>
|
|
|
|
<span class="c1"># Delayed loading of properties</span>
|
|
|
|
<span class="c1"># Typeclasses</span>
|
|
|
|
<span class="n">DefaultAccount</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultGuest</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultObject</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultCharacter</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultRoom</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultExit</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultChannel</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">DefaultScript</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Database models</span>
|
|
<span class="n">ObjectDB</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">AccountDB</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">ScriptDB</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">ChannelDB</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">Msg</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">ServerConfig</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Properties</span>
|
|
<span class="n">AttributeProperty</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">TagProperty</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">TagCategoryProperty</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># commands</span>
|
|
<span class="n">Command</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">CmdSet</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">default_cmds</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">syscmdkeys</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">InterruptCommand</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># search functions</span>
|
|
<span class="n">search_object</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_script</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_account</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_channel</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_message</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_help</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">search_tag</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># create functions</span>
|
|
<span class="n">create_object</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">create_script</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">create_account</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">create_channel</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">create_message</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">create_help_entry</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># utilities</span>
|
|
<span class="n">settings</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">lockfuncs</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">inputhandler</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">logger</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">gametime</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">ansi</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">spawn</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">managers</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">contrib</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EvMenu</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EvTable</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EvForm</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EvEditor</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EvMore</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">ANSIString</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">signals</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">FuncParser</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Handlers</span>
|
|
<span class="n">SESSION_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">PORTAL_SESSION_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">SERVER_SESSION_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">TASK_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">TICKER_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">MONITOR_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Containers</span>
|
|
<span class="n">GLOBAL_SCRIPTS</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">OPTION_CLASSES</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="n">PROCESS_ID</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="n">TWISTED_APPLICATION</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EVENNIA_PORTAL_SERVICE</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">EVENNIA_SERVER_SERVICE</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_create_version</span><span class="p">():</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Helper function for building the version string</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">import</span> <span class="nn">os</span>
|
|
<span class="kn">from</span> <span class="nn">subprocess</span> <span class="kn">import</span> <span class="n">STDOUT</span><span class="p">,</span> <span class="n">CalledProcessError</span><span class="p">,</span> <span class="n">check_output</span>
|
|
|
|
<span class="n">version</span> <span class="o">=</span> <span class="s2">"Unknown"</span>
|
|
<span class="n">root</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s2">"VERSION.txt"</span><span class="p">),</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="n">version</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="ne">IOError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">rev</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">check_output</span><span class="p">(</span><span class="s2">"git rev-parse --short HEAD"</span><span class="p">,</span> <span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">cwd</span><span class="o">=</span><span class="n">root</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">STDOUT</span><span class="p">)</span>
|
|
<span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
<span class="o">.</span><span class="n">decode</span><span class="p">()</span>
|
|
<span class="p">)</span>
|
|
<span class="n">version</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> (rev </span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">version</span><span class="p">,</span> <span class="n">rev</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="n">CalledProcessError</span><span class="p">,</span> <span class="ne">OSError</span><span class="p">):</span>
|
|
<span class="c1"># ignore if we cannot get to git</span>
|
|
<span class="k">pass</span>
|
|
<span class="k">return</span> <span class="n">version</span>
|
|
|
|
|
|
<span class="n">__version__</span> <span class="o">=</span> <span class="n">_create_version</span><span class="p">()</span>
|
|
<span class="k">del</span> <span class="n">_create_version</span>
|
|
|
|
<span class="n">_LOADED</span> <span class="o">=</span> <span class="kc">False</span>
|
|
|
|
<span class="n">PORTAL_MODE</span> <span class="o">=</span> <span class="kc">False</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_init</span><span class="p">(</span><span class="n">portal_mode</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> This function is called automatically by the launcher only after</span>
|
|
<span class="sd"> Evennia has fully initialized all its models. It sets up the API</span>
|
|
<span class="sd"> in a safe environment where all models are available already.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">global</span> <span class="n">_LOADED</span>
|
|
<span class="k">if</span> <span class="n">_LOADED</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
<span class="n">_LOADED</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="k">global</span> <span class="n">DefaultAccount</span><span class="p">,</span> <span class="n">DefaultObject</span><span class="p">,</span> <span class="n">DefaultGuest</span><span class="p">,</span> <span class="n">DefaultCharacter</span>
|
|
<span class="k">global</span> <span class="n">DefaultRoom</span><span class="p">,</span> <span class="n">DefaultExit</span><span class="p">,</span> <span class="n">DefaultChannel</span><span class="p">,</span> <span class="n">DefaultScript</span>
|
|
<span class="k">global</span> <span class="n">ObjectDB</span><span class="p">,</span> <span class="n">AccountDB</span><span class="p">,</span> <span class="n">ScriptDB</span><span class="p">,</span> <span class="n">ChannelDB</span><span class="p">,</span> <span class="n">Msg</span>
|
|
<span class="k">global</span> <span class="n">Command</span><span class="p">,</span> <span class="n">CmdSet</span><span class="p">,</span> <span class="n">default_cmds</span><span class="p">,</span> <span class="n">syscmdkeys</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
|
<span class="k">global</span> <span class="n">search_object</span><span class="p">,</span> <span class="n">search_script</span><span class="p">,</span> <span class="n">search_account</span><span class="p">,</span> <span class="n">search_channel</span>
|
|
<span class="k">global</span> <span class="n">search_help</span><span class="p">,</span> <span class="n">search_tag</span><span class="p">,</span> <span class="n">search_message</span>
|
|
<span class="k">global</span> <span class="n">create_object</span><span class="p">,</span> <span class="n">create_script</span><span class="p">,</span> <span class="n">create_account</span><span class="p">,</span> <span class="n">create_channel</span>
|
|
<span class="k">global</span> <span class="n">create_message</span><span class="p">,</span> <span class="n">create_help_entry</span>
|
|
<span class="k">global</span> <span class="n">signals</span>
|
|
<span class="k">global</span> <span class="n">settings</span><span class="p">,</span> <span class="n">lockfuncs</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span><span class="p">,</span> <span class="n">ansi</span><span class="p">,</span> <span class="n">spawn</span><span class="p">,</span> <span class="n">managers</span>
|
|
<span class="k">global</span> <span class="n">contrib</span><span class="p">,</span> <span class="n">TICKER_HANDLER</span><span class="p">,</span> <span class="n">MONITOR_HANDLER</span><span class="p">,</span> <span class="n">SESSION_HANDLER</span><span class="p">,</span> <span class="n">PROCESS_ID</span>
|
|
<span class="k">global</span> <span class="n">TASK_HANDLER</span><span class="p">,</span> <span class="n">PORTAL_SESSION_HANDLER</span><span class="p">,</span> <span class="n">SERVER_SESSION_HANDLER</span>
|
|
<span class="k">global</span> <span class="n">GLOBAL_SCRIPTS</span><span class="p">,</span> <span class="n">OPTION_CLASSES</span><span class="p">,</span> <span class="n">EVENNIA_PORTAL_SERVICE</span><span class="p">,</span> <span class="n">EVENNIA_SERVER_SERVICE</span><span class="p">,</span> <span class="n">TWISTED_APPLICATION</span>
|
|
<span class="k">global</span> <span class="n">EvMenu</span><span class="p">,</span> <span class="n">EvTable</span><span class="p">,</span> <span class="n">EvForm</span><span class="p">,</span> <span class="n">EvMore</span><span class="p">,</span> <span class="n">EvEditor</span>
|
|
<span class="k">global</span> <span class="n">ANSIString</span><span class="p">,</span> <span class="n">FuncParser</span>
|
|
<span class="k">global</span> <span class="n">AttributeProperty</span><span class="p">,</span> <span class="n">TagProperty</span><span class="p">,</span> <span class="n">TagCategoryProperty</span><span class="p">,</span> <span class="n">ServerConfig</span>
|
|
<span class="k">global</span> <span class="n">PORTAL_MODE</span>
|
|
<span class="n">PORTAL_MODE</span> <span class="o">=</span> <span class="n">portal_mode</span>
|
|
|
|
<span class="c1"># Parent typeclasses</span>
|
|
<span class="c1"># utilities</span>
|
|
<span class="kn">import</span> <span class="nn">os</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">contrib</span>
|
|
<span class="kn">from</span> <span class="nn">.accounts.accounts</span> <span class="kn">import</span> <span class="n">DefaultAccount</span><span class="p">,</span> <span class="n">DefaultGuest</span>
|
|
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.command</span> <span class="kn">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
|
<span class="kn">from</span> <span class="nn">.comms.comms</span> <span class="kn">import</span> <span class="n">DefaultChannel</span>
|
|
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span><span class="p">,</span> <span class="n">Msg</span>
|
|
<span class="kn">from</span> <span class="nn">.locks</span> <span class="kn">import</span> <span class="n">lockfuncs</span>
|
|
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
|
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="kn">import</span> <span class="p">(</span>
|
|
<span class="n">DefaultCharacter</span><span class="p">,</span>
|
|
<span class="n">DefaultExit</span><span class="p">,</span>
|
|
<span class="n">DefaultObject</span><span class="p">,</span>
|
|
<span class="n">DefaultRoom</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="kn">from</span> <span class="nn">.prototypes.spawner</span> <span class="kn">import</span> <span class="n">spawn</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.monitorhandler</span> <span class="kn">import</span> <span class="n">MONITOR_HANDLER</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.scripts</span> <span class="kn">import</span> <span class="n">DefaultScript</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.taskhandler</span> <span class="kn">import</span> <span class="n">TASK_HANDLER</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.tickerhandler</span> <span class="kn">import</span> <span class="n">TICKER_HANDLER</span>
|
|
<span class="kn">from</span> <span class="nn">.server</span> <span class="kn">import</span> <span class="n">signals</span>
|
|
<span class="kn">from</span> <span class="nn">.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
|
<span class="kn">from</span> <span class="nn">.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">AttributeProperty</span>
|
|
<span class="kn">from</span> <span class="nn">.typeclasses.tags</span> <span class="kn">import</span> <span class="n">TagCategoryProperty</span><span class="p">,</span> <span class="n">TagProperty</span>
|
|
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">ansi</span><span class="p">,</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">gametime</span><span class="p">,</span> <span class="n">logger</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">PORTAL_MODE</span><span class="p">:</span>
|
|
<span class="c1"># containers</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.containers</span> <span class="kn">import</span> <span class="n">GLOBAL_SCRIPTS</span><span class="p">,</span> <span class="n">OPTION_CLASSES</span>
|
|
|
|
<span class="c1"># create functions</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="p">(</span>
|
|
<span class="n">create_account</span><span class="p">,</span>
|
|
<span class="n">create_channel</span><span class="p">,</span>
|
|
<span class="n">create_help_entry</span><span class="p">,</span>
|
|
<span class="n">create_message</span><span class="p">,</span>
|
|
<span class="n">create_object</span><span class="p">,</span>
|
|
<span class="n">create_script</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.evform</span> <span class="kn">import</span> <span class="n">EvForm</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.evmenu</span> <span class="kn">import</span> <span class="n">EvMenu</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.evmore</span> <span class="kn">import</span> <span class="n">EvMore</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.funcparser</span> <span class="kn">import</span> <span class="n">FuncParser</span>
|
|
|
|
<span class="c1"># search functions</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="p">(</span>
|
|
<span class="n">search_account</span><span class="p">,</span>
|
|
<span class="n">search_channel</span><span class="p">,</span>
|
|
<span class="n">search_help</span><span class="p">,</span>
|
|
<span class="n">search_message</span><span class="p">,</span>
|
|
<span class="n">search_object</span><span class="p">,</span>
|
|
<span class="n">search_script</span><span class="p">,</span>
|
|
<span class="n">search_tag</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="kn">from</span> <span class="nn">.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span>
|
|
|
|
<span class="n">PROCESS_ID</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">twisted.application.service</span> <span class="kn">import</span> <span class="n">Application</span>
|
|
|
|
<span class="n">TWISTED_APPLICATION</span> <span class="o">=</span> <span class="n">Application</span><span class="p">(</span><span class="s2">"Evennia"</span><span class="p">)</span>
|
|
|
|
<span class="n">_evennia_service_class</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">if</span> <span class="n">portal_mode</span><span class="p">:</span>
|
|
<span class="c1"># Set up the PortalSessionHandler</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.server.portal</span> <span class="kn">import</span> <span class="n">portalsessionhandler</span>
|
|
|
|
<span class="n">portal_sess_handler_class</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">PORTAL_SESSION_HANDLER_CLASS</span><span class="p">)</span>
|
|
<span class="n">portalsessionhandler</span><span class="o">.</span><span class="n">PORTAL_SESSIONS</span> <span class="o">=</span> <span class="n">portal_sess_handler_class</span><span class="p">()</span>
|
|
<span class="n">SESSION_HANDLER</span> <span class="o">=</span> <span class="n">portalsessionhandler</span><span class="o">.</span><span class="n">PORTAL_SESSIONS</span>
|
|
<span class="n">evennia</span><span class="o">.</span><span class="n">PORTAL_SESSION_HANDLER</span> <span class="o">=</span> <span class="n">evennia</span><span class="o">.</span><span class="n">SESSION_HANDLER</span>
|
|
<span class="n">_evennia_service_class</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">EVENNIA_PORTAL_SERVICE_CLASS</span><span class="p">)</span>
|
|
<span class="n">EVENNIA_PORTAL_SERVICE</span> <span class="o">=</span> <span class="n">_evennia_service_class</span><span class="p">()</span>
|
|
<span class="n">EVENNIA_PORTAL_SERVICE</span><span class="o">.</span><span class="n">setServiceParent</span><span class="p">(</span><span class="n">TWISTED_APPLICATION</span><span class="p">)</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">connection</span>
|
|
|
|
<span class="c1"># we don't need a connection to the database so close it right away</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
<span class="k">pass</span>
|
|
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># Create the ServerSesssionHandler</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.server</span> <span class="kn">import</span> <span class="n">sessionhandler</span>
|
|
|
|
<span class="n">sess_handler_class</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">SERVER_SESSION_HANDLER_CLASS</span><span class="p">)</span>
|
|
<span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span> <span class="o">=</span> <span class="n">sess_handler_class</span><span class="p">()</span>
|
|
<span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSION_HANDLER</span> <span class="o">=</span> <span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span>
|
|
<span class="n">SESSION_HANDLER</span> <span class="o">=</span> <span class="n">sessionhandler</span><span class="o">.</span><span class="n">SESSIONS</span>
|
|
<span class="n">SERVER_SESSION_HANDLER</span> <span class="o">=</span> <span class="n">SESSION_HANDLER</span>
|
|
<span class="n">_evennia_service_class</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">EVENNIA_SERVER_SERVICE_CLASS</span><span class="p">)</span>
|
|
<span class="n">EVENNIA_SERVER_SERVICE</span> <span class="o">=</span> <span class="n">_evennia_service_class</span><span class="p">()</span>
|
|
<span class="n">EVENNIA_SERVER_SERVICE</span><span class="o">.</span><span class="n">setServiceParent</span><span class="p">(</span><span class="n">TWISTED_APPLICATION</span><span class="p">)</span>
|
|
|
|
<span class="c1"># API containers</span>
|
|
|
|
<span class="k">class</span> <span class="nc">_EvContainer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Parent for other containers</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_help</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="s2">"Returns list of contents"</span>
|
|
<span class="n">names</span> <span class="o">=</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__dict__</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)]</span>
|
|
<span class="n">names</span> <span class="o">+=</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)]</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__doc__</span> <span class="o">+</span> <span class="s2">"-"</span> <span class="o">*</span> <span class="mi">60</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">names</span><span class="p">))</span>
|
|
|
|
<span class="n">help</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_help</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">DBmanagers</span><span class="p">(</span><span class="n">_EvContainer</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Links to instantiated Django database managers. These are used</span>
|
|
<span class="sd"> to perform more advanced custom database queries than the standard</span>
|
|
<span class="sd"> search functions allow.</span>
|
|
|
|
<span class="sd"> helpentries - HelpEntry.objects</span>
|
|
<span class="sd"> accounts - AccountDB.objects</span>
|
|
<span class="sd"> scripts - ScriptDB.objects</span>
|
|
<span class="sd"> msgs - Msg.objects</span>
|
|
<span class="sd"> channels - Channel.objects</span>
|
|
<span class="sd"> objects - ObjectDB.objects</span>
|
|
<span class="sd"> serverconfigs - ServerConfig.objects</span>
|
|
<span class="sd"> tags - Tags.objects</span>
|
|
<span class="sd"> attributes - Attributes.objects</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
|
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span><span class="p">,</span> <span class="n">Msg</span>
|
|
<span class="kn">from</span> <span class="nn">.help.models</span> <span class="kn">import</span> <span class="n">HelpEntry</span>
|
|
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
|
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
|
|
<span class="kn">from</span> <span class="nn">.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
|
<span class="kn">from</span> <span class="nn">.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">Attribute</span>
|
|
<span class="kn">from</span> <span class="nn">.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span>
|
|
|
|
<span class="c1"># create container's properties</span>
|
|
<span class="n">helpentries</span> <span class="o">=</span> <span class="n">HelpEntry</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">accounts</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">scripts</span> <span class="o">=</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">msgs</span> <span class="o">=</span> <span class="n">Msg</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">channels</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">objects</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">serverconfigs</span> <span class="o">=</span> <span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">attributes</span> <span class="o">=</span> <span class="n">Attribute</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="n">tags</span> <span class="o">=</span> <span class="n">Tag</span><span class="o">.</span><span class="n">objects</span>
|
|
<span class="c1"># remove these so they are not visible as properties</span>
|
|
<span class="k">del</span> <span class="n">HelpEntry</span><span class="p">,</span> <span class="n">AccountDB</span><span class="p">,</span> <span class="n">ScriptDB</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">ChannelDB</span>
|
|
<span class="c1"># del ExternalChannelConnection</span>
|
|
<span class="k">del</span> <span class="n">ObjectDB</span><span class="p">,</span> <span class="n">ServerConfig</span><span class="p">,</span> <span class="n">Tag</span><span class="p">,</span> <span class="n">Attribute</span>
|
|
|
|
<span class="n">managers</span> <span class="o">=</span> <span class="n">DBmanagers</span><span class="p">()</span>
|
|
<span class="k">del</span> <span class="n">DBmanagers</span>
|
|
|
|
<span class="k">class</span> <span class="nc">DefaultCmds</span><span class="p">(</span><span class="n">_EvContainer</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> This container holds direct shortcuts to all default commands in Evennia.</span>
|
|
|
|
<span class="sd"> To access in code, do 'from evennia import default_cmds' then</span>
|
|
<span class="sd"> access the properties on the imported default_cmds object.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_account</span> <span class="kn">import</span> <span class="n">AccountCmdSet</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_character</span> <span class="kn">import</span> <span class="n">CharacterCmdSet</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_session</span> <span class="kn">import</span> <span class="n">SessionCmdSet</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_unloggedin</span> <span class="kn">import</span> <span class="n">UnloggedinCmdSet</span>
|
|
<span class="kn">from</span> <span class="nn">.commands.default.muxcommand</span> <span class="kn">import</span> <span class="n">MuxAccountCommand</span><span class="p">,</span> <span class="n">MuxCommand</span>
|
|
|
|
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="s2">"populate the object with commands"</span>
|
|
|
|
<span class="k">def</span> <span class="nf">add_cmds</span><span class="p">(</span><span class="n">module</span><span class="p">):</span>
|
|
<span class="s2">"helper method for populating this object with cmds"</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
|
|
|
|
<span class="n">cmdlist</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">variable_from_module</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">module</span><span class="o">.</span><span class="n">__all__</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">([(</span><span class="n">c</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">cmdlist</span><span class="p">]))</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">.commands.default</span> <span class="kn">import</span> <span class="p">(</span>
|
|
<span class="n">account</span><span class="p">,</span>
|
|
<span class="n">admin</span><span class="p">,</span>
|
|
<span class="n">batchprocess</span><span class="p">,</span>
|
|
<span class="n">building</span><span class="p">,</span>
|
|
<span class="n">comms</span><span class="p">,</span>
|
|
<span class="n">general</span><span class="p">,</span>
|
|
<span class="n">help</span><span class="p">,</span>
|
|
<span class="n">system</span><span class="p">,</span>
|
|
<span class="n">unloggedin</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">admin</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">building</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">batchprocess</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">building</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">comms</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">general</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">account</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">help</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">system</span><span class="p">)</span>
|
|
<span class="n">add_cmds</span><span class="p">(</span><span class="n">unloggedin</span><span class="p">)</span>
|
|
|
|
<span class="n">default_cmds</span> <span class="o">=</span> <span class="n">DefaultCmds</span><span class="p">()</span>
|
|
<span class="k">del</span> <span class="n">DefaultCmds</span>
|
|
|
|
<span class="k">class</span> <span class="nc">SystemCmds</span><span class="p">(</span><span class="n">_EvContainer</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Creating commands with keys set to these constants will make</span>
|
|
<span class="sd"> them system commands called as a replacement by the parser when</span>
|
|
<span class="sd"> special situations occur. If not defined, the hard-coded</span>
|
|
<span class="sd"> responses in the server are used.</span>
|
|
|
|
<span class="sd"> CMD_NOINPUT - no input was given on command line</span>
|
|
<span class="sd"> CMD_NOMATCH - no valid command key was found</span>
|
|
<span class="sd"> CMD_MULTIMATCH - multiple command matches were found</span>
|
|
<span class="sd"> CMD_LOGINSTART - this command will be called as the very</span>
|
|
<span class="sd"> first command when an account connects to</span>
|
|
<span class="sd"> the server.</span>
|
|
|
|
<span class="sd"> To access in code, do 'from evennia import syscmdkeys' then</span>
|
|
<span class="sd"> access the properties on the imported syscmdkeys object.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">.commands</span> <span class="kn">import</span> <span class="n">cmdhandler</span>
|
|
|
|
<span class="n">CMD_NOINPUT</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_NOINPUT</span>
|
|
<span class="n">CMD_NOMATCH</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_NOMATCH</span>
|
|
<span class="n">CMD_MULTIMATCH</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_MULTIMATCH</span>
|
|
<span class="n">CMD_LOGINSTART</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_LOGINSTART</span>
|
|
<span class="k">del</span> <span class="n">cmdhandler</span>
|
|
|
|
<span class="n">syscmdkeys</span> <span class="o">=</span> <span class="n">SystemCmds</span><span class="p">()</span>
|
|
<span class="k">del</span> <span class="n">SystemCmds</span>
|
|
<span class="k">del</span> <span class="n">_EvContainer</span>
|
|
|
|
|
|
<div class="viewcode-block" id="set_trace"><a class="viewcode-back" href="../api/evennia.html#evennia.set_trace">[docs]</a><span class="k">def</span> <span class="nf">set_trace</span><span class="p">(</span><span class="n">term_size</span><span class="o">=</span><span class="p">(</span><span class="mi">140</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="n">debugger</span><span class="o">=</span><span class="s2">"auto"</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Helper function for running a debugger inside the Evennia event loop.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> term_size (tuple, optional): Only used for Pudb and defines the size of the terminal</span>
|
|
<span class="sd"> (width, height) in number of characters.</span>
|
|
<span class="sd"> debugger (str, optional): One of 'auto', 'pdb' or 'pudb'. Pdb is the standard debugger. Pudb</span>
|
|
<span class="sd"> is an external package with a different, more 'graphical', ncurses-based UI. With</span>
|
|
<span class="sd"> 'auto', will use pudb if possible, otherwise fall back to pdb. Pudb is available through</span>
|
|
<span class="sd"> `pip install pudb`.</span>
|
|
|
|
<span class="sd"> Notes:</span>
|
|
<span class="sd"> To use:</span>
|
|
|
|
<span class="sd"> 1) add this to a line to act as a breakpoint for entering the debugger:</span>
|
|
|
|
<span class="sd"> from evennia import set_trace; set_trace()</span>
|
|
|
|
<span class="sd"> 2) restart evennia in interactive mode</span>
|
|
|
|
<span class="sd"> evennia istart</span>
|
|
|
|
<span class="sd"> 3) debugger will appear in the interactive terminal when breakpoint is reached. Exit</span>
|
|
<span class="sd"> with 'q', remove the break line and restart server when finished.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="kn">import</span> <span class="nn">sys</span>
|
|
|
|
<span class="n">dbg</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">if</span> <span class="n">debugger</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"auto"</span><span class="p">,</span> <span class="s2">"pudb"</span><span class="p">):</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="kn">from</span> <span class="nn">pudb</span> <span class="kn">import</span> <span class="n">debugger</span>
|
|
|
|
<span class="n">dbg</span> <span class="o">=</span> <span class="n">debugger</span><span class="o">.</span><span class="n">Debugger</span><span class="p">(</span><span class="n">stdout</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span><span class="p">,</span> <span class="n">term_size</span><span class="o">=</span><span class="n">term_size</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">debugger</span> <span class="o">==</span> <span class="s2">"pudb"</span><span class="p">:</span>
|
|
<span class="k">raise</span>
|
|
<span class="k">pass</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">dbg</span><span class="p">:</span>
|
|
<span class="kn">import</span> <span class="nn">pdb</span>
|
|
|
|
<span class="n">dbg</span> <span class="o">=</span> <span class="n">pdb</span><span class="o">.</span><span class="n">Pdb</span><span class="p">(</span><span class="n">stdout</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span><span class="p">)</span>
|
|
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="c1"># Start debugger, forcing it up one stack frame (otherwise `set_trace`</span>
|
|
<span class="c1"># will start debugger this point, not the actual code location)</span>
|
|
<span class="n">dbg</span><span class="o">.</span><span class="n">set_trace</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">_getframe</span><span class="p">()</span><span class="o">.</span><span class="n">f_back</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
<span class="c1"># Stopped at breakpoint. Press 'n' to continue into the code.</span>
|
|
<span class="n">dbg</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span></div>
|
|
|
|
|
|
<span class="c1"># initialize the doc string</span>
|
|
<span class="k">global</span> <span class="vm">__doc__</span>
|
|
<span class="vm">__doc__</span> <span class="o">=</span> <span class="n">DOCSTRING</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span>
|
|
<span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"evennia.</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span>
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">globals</span><span class="p">())</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DOCSTRING"</span><span class="p">,)</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
</pre></div>
|
|
|
|
</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="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<div class="admonition important">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
|
|
</div>
|
|
|
|
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2023, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |