541 lines
36 KiB
HTML
541 lines
36 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en" data-content_root="./">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<title>Welcome to state_machine documentation! — state_machine documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
|
||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
|
||
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
|
||
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
|
||
|
||
<script src="_static/documentation_options.js?v=5929fcd5"></script>
|
||
<script src="_static/doctools.js?v=9bcbadda"></script>
|
||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
|
||
<script type="text/javascript" src="_static/copybutton.js"></script>
|
||
<script type="text/javascript" src="_static/menu.js"></script>
|
||
<script type="text/javascript" src="_static/search-focus.js"></script>
|
||
<script type="text/javascript" src="_static/themetoggle.js"></script>
|
||
</head>
|
||
<body>
|
||
<div class="mobile-nav">
|
||
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||
<nav class="nav-content" role="navigation">
|
||
<label for="menuToggler" class="toggler__label">
|
||
<span></span>
|
||
</label>
|
||
<span class="nav-items-wrapper">
|
||
<a href="https://www.python.org/" class="nav-logo">
|
||
<img src="_static/py.svg" alt="Python logo">
|
||
</a>
|
||
<span class="version_switcher_placeholder"></span>
|
||
<form role="search" class="search" action="search.html" method="get">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||
</svg>
|
||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||
<input type="submit" value="Go">
|
||
</form>
|
||
</span>
|
||
</nav>
|
||
<div class="menu-wrapper">
|
||
<nav class="menu" role="navigation" aria-label="main navigation">
|
||
<div class="language_switcher_placeholder"></div>
|
||
|
||
<label class="theme-selector-label">
|
||
Theme
|
||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||
<option value="auto" selected>Auto</option>
|
||
<option value="light">Light</option>
|
||
<option value="dark">Dark</option>
|
||
</select>
|
||
</label>
|
||
<div>
|
||
<h3><a href="#">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Welcome to state_machine documentation!</a><ul>
|
||
<li><a class="reference internal" href="#state-machine-state-machine">state_machine (State Machine)</a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine"><code class="docutils literal notranslate"><span class="pre">state_machine</span></code></a><ul>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.last_transition_condition"><code class="docutils literal notranslate"><span class="pre">state_machine.last_transition_condition()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.last_transition_condition_was"><code class="docutils literal notranslate"><span class="pre">state_machine.last_transition_condition_was()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state_duration"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state_duration()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state_was"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state_was()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.register_state_change_callback"><code class="docutils literal notranslate"><span class="pre">state_machine.register_state_change_callback()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state_duration"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state_duration()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state_is"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state_is()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.work"><code class="docutils literal notranslate"><span class="pre">state_machine.work()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
<div role="note" aria-label="source link">
|
||
<h3>This Page</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="_sources/index.rst.txt"
|
||
rel="nofollow">Show Source</a></li>
|
||
</ul>
|
||
</div>
|
||
<search 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" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</search>
|
||
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="related" role="navigation" aria-label="Related">
|
||
<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><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li class="switchers">
|
||
<div class="language_switcher_placeholder"></div>
|
||
<div class="version_switcher_placeholder"></div>
|
||
</li>
|
||
<li>
|
||
|
||
<a href="#">state_machine documentation</a> »
|
||
|
||
</li>
|
||
<li class="nav-item nav-item-this"><a href="">Welcome to state_machine documentation!</a></li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" role="search">
|
||
<form class="inline-search" action="search.html" method="get">
|
||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||
<input type="submit" value="Go">
|
||
</form>
|
||
</div>
|
||
|
|
||
</li>
|
||
<li class="right">
|
||
<label class="theme-selector-label">
|
||
Theme
|
||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||
<option value="auto" selected>Auto</option>
|
||
<option value="light">Light</option>
|
||
<option value="dark">Dark</option>
|
||
</select>
|
||
</label> |</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<section id="module-state_machine">
|
||
<span id="welcome-to-state-machine-documentation"></span><h1>Welcome to state_machine documentation!<a class="headerlink" href="#module-state_machine" title="Link to this heading">¶</a></h1>
|
||
<section id="state-machine-state-machine">
|
||
<h2>state_machine (State Machine)<a class="headerlink" href="#state-machine-state-machine" title="Link to this heading">¶</a></h2>
|
||
<p><strong>Author:</strong></p>
|
||
<ul class="simple">
|
||
<li><p>Dirk Alders <<a class="reference external" href="mailto:sudo-dirk%40mount-mockery.de">sudo-dirk<span>@</span>mount-mockery<span>.</span>de</a>></p></li>
|
||
</ul>
|
||
<p><strong>Description:</strong></p>
|
||
<blockquote>
|
||
<div><p>This Module helps implementing state machines.</p>
|
||
</div></blockquote>
|
||
<p><strong>Submodules:</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="#state_machine.state_machine" title="state_machine.state_machine"><code class="xref py py-class docutils literal notranslate"><span class="pre">state_machine.state_machine</span></code></a></p></li>
|
||
</ul>
|
||
<p><strong>Unittest:</strong></p>
|
||
<blockquote>
|
||
<div><p>See also the <a class="reference download internal" download="" href="_downloads/342741504ed098ba4b1cb62d5e533c1d/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</p>
|
||
</div></blockquote>
|
||
<p><strong>Module Documentation:</strong></p>
|
||
</section>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine">
|
||
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">state_machine.</span></span><span class="sig-name descname"><span class="pre">state_machine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">default_state</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">log_lvl</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>default_state</strong> – The default state which is set on initialisation.</p></li>
|
||
<li><p><strong>log_lvl</strong> – The log level, this Module logs to (see Loging-Levels of Module <code class="xref py py-mod docutils literal notranslate"><span class="pre">logging</span></code>)</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Additional keyword parameters well be stored as varibles of the instance (e.g. to give variables or methods for transition condition calculation).</p>
|
||
</div>
|
||
<p>A state machine class can be created by deriving it from this class. The transitions are defined by overriding the variable <cite>TRANSITIONS</cite>.
|
||
This Variable is a dictionary, where the key is the start-state and the content is a tuple or list of transitions. Each transition is a tuple or list
|
||
including the following information: (condition-method (str), transition-time (number), target_state (str)).</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>The condition-method needs to be implemented as part of the new class.</p>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>It is usefull to define the states as variables of this class.</p>
|
||
</div>
|
||
<p><strong>Example:</strong></p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
|
||
<span class="c1"># -*- coding: UTF-8 -*-</span>
|
||
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
|
||
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'../..'</span><span class="p">)</span> <span class="c1"># nopep8</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span>
|
||
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">state_machine</span>
|
||
|
||
<span class="n">logger</span> <span class="o">=</span> <span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
|
||
|
||
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">trafic_lights</span><span class="p">(</span><span class="n">state_machine</span><span class="o">.</span><span class="n">state_machine</span><span class="p">):</span>
|
||
<span class="n">LOG_PREFIX</span> <span class="o">=</span> <span class="s1">'TraficLights:'</span>
|
||
|
||
<span class="n">STATE_RED</span> <span class="o">=</span> <span class="s1">'state_red'</span>
|
||
<span class="n">STATE_GREEN</span> <span class="o">=</span> <span class="s1">'state_green'</span>
|
||
|
||
<span class="n">CONDITION_TRUE</span> <span class="o">=</span> <span class="s1">'condition_true'</span>
|
||
<span class="n">CONDITION_PEDASTRIAN_REQUEST</span> <span class="o">=</span> <span class="s1">'condition_pedastrian_request'</span>
|
||
|
||
<span class="n">TRANSITIONS</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="n">STATE_RED</span><span class="p">:</span> <span class="p">(</span>
|
||
<span class="p">(</span><span class="n">CONDITION_PEDASTRIAN_REQUEST</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">STATE_GREEN</span><span class="p">),</span>
|
||
<span class="p">),</span>
|
||
<span class="n">STATE_GREEN</span><span class="p">:</span> <span class="p">(</span>
|
||
<span class="p">(</span><span class="n">CONDITION_TRUE</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">STATE_RED</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">condition_true</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="k">return</span> <span class="kc">True</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">set_padestrian_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="n">logger</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__log_lvl__</span><span class="p">,</span> <span class="s1">'</span><span class="si">%s</span><span class="s1"> Pedestrian gave state change request.'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOG_PREFIX</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">pedastrian_request</span> <span class="o">=</span> <span class="kc">True</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">condition_pedastrian_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pedastrian_request</span>
|
||
|
||
|
||
<span class="n">sm</span> <span class="o">=</span> <span class="n">trafic_lights</span><span class="p">(</span><span class="n">trafic_lights</span><span class="o">.</span><span class="n">STATE_RED</span><span class="p">,</span> <span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span> <span class="n">pedastrian_request</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||
<span class="n">sm</span><span class="o">.</span><span class="n">register_state_change_callback</span><span class="p">(</span><span class="n">sm</span><span class="o">.</span><span class="n">STATE_GREEN</span><span class="p">,</span> <span class="n">sm</span><span class="o">.</span><span class="n">CONDITION_PEDASTRIAN_REQUEST</span><span class="p">,</span> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">,</span>
|
||
<span class="s1">'Callback information: Traffic light had been changed to green caused by pedastrian request'</span><span class="p">)</span>
|
||
<span class="k">while</span> <span class="ow">not</span> <span class="n">sm</span><span class="o">.</span><span class="n">previous_state_was</span><span class="p">(</span><span class="n">sm</span><span class="o">.</span><span class="n">STATE_GREEN</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="n">sm</span><span class="o">.</span><span class="n">this_state_is</span><span class="p">(</span><span class="n">sm</span><span class="o">.</span><span class="n">STATE_RED</span><span class="p">)</span> <span class="ow">and</span> <span class="n">sm</span><span class="o">.</span><span class="n">this_state_duration</span><span class="p">()</span> <span class="o">></span> <span class="mf">0.2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">sm</span><span class="o">.</span><span class="n">condition_pedastrian_request</span><span class="p">():</span>
|
||
<span class="n">sm</span><span class="o">.</span><span class="n">set_padestrian_request</span><span class="p">()</span>
|
||
<span class="n">sm</span><span class="o">.</span><span class="n">work</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">INFO</span> <span class="o">-</span> <span class="n">state_machine</span> <span class="o">-</span> <span class="n">TraficLights</span><span class="p">:</span> <span class="n">State</span> <span class="n">change</span> <span class="p">(</span><span class="s1">'__init__'</span><span class="p">):</span> <span class="kc">None</span> <span class="o">-></span> <span class="s1">'state_red'</span>
|
||
<span class="n">INFO</span> <span class="o">-</span> <span class="n">main</span> <span class="o">-</span> <span class="n">TraficLights</span><span class="p">:</span> <span class="n">Pedestrian</span> <span class="n">gave</span> <span class="n">state</span> <span class="n">change</span> <span class="n">request</span><span class="o">.</span>
|
||
<span class="n">INFO</span> <span class="o">-</span> <span class="n">state_machine</span> <span class="o">-</span> <span class="n">TraficLights</span><span class="p">:</span> <span class="n">State</span> <span class="n">change</span> <span class="p">(</span><span class="s1">'condition_pedastrian_request'</span><span class="p">):</span> <span class="s1">'state_red'</span> <span class="o">-></span> <span class="s1">'state_green'</span>
|
||
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">state_machine</span> <span class="o">-</span> <span class="n">Executing</span> <span class="n">callback</span> <span class="mi">0</span> <span class="o">-</span> <span class="n">logging</span><span class="o">.</span><span class="n">info</span>
|
||
<span class="n">INFO</span> <span class="o">-</span> <span class="n">main</span> <span class="o">-</span> <span class="n">Callback</span> <span class="n">information</span><span class="p">:</span> <span class="n">Traffic</span> <span class="n">light</span> <span class="n">had</span> <span class="n">been</span> <span class="n">changed</span> <span class="n">to</span> <span class="n">green</span> <span class="n">caused</span> <span class="n">by</span> <span class="n">pedastrian</span> <span class="n">request</span>
|
||
<span class="n">INFO</span> <span class="o">-</span> <span class="n">state_machine</span> <span class="o">-</span> <span class="n">TraficLights</span><span class="p">:</span> <span class="n">State</span> <span class="n">change</span> <span class="p">(</span><span class="s1">'condition_true'</span><span class="p">):</span> <span class="s1">'state_green'</span> <span class="o">-></span> <span class="s1">'state_red'</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.last_transition_condition">
|
||
<span class="sig-name descname"><span class="pre">last_transition_condition</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.last_transition_condition" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The last transition condition.</p>
|
||
</dd>
|
||
<dt class="field-even">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>str</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This method returns the last transition condition.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.last_transition_condition_was">
|
||
<span class="sig-name descname"><span class="pre">last_transition_condition_was</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">condition</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.last_transition_condition_was" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>condition</strong> (<em>str</em>) – The condition to be checked</p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>True if the given condition was the last transition condition, else False.</p>
|
||
</dd>
|
||
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>bool</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This methods returns the boolean information if the last transition condition is equivalent to the given condition.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.previous_state">
|
||
<span class="sig-name descname"><span class="pre">previous_state</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.previous_state" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The previous state.</p>
|
||
</dd>
|
||
<dt class="field-even">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>str</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This method returns the previous state of the state machine.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.previous_state_duration">
|
||
<span class="sig-name descname"><span class="pre">previous_state_duration</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.previous_state_duration" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The time how long the previous state was active.</p>
|
||
</dd>
|
||
<dt class="field-even">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>float</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This method returns the time how long the previous state was active.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.previous_state_was">
|
||
<span class="sig-name descname"><span class="pre">previous_state_was</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.previous_state_was" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>state</strong> (<em>str</em>) – The state to be checked</p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>True if the given state was previously active, else False.</p>
|
||
</dd>
|
||
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>bool</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This methods returns the boolean information if the state machine was previously in the given state.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.register_state_change_callback">
|
||
<span class="sig-name descname"><span class="pre">register_state_change_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">condition</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.register_state_change_callback" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>state</strong> (<em>str</em>) – The target state. The callback will be executed, if the state machine changes to this state. None means all states.</p></li>
|
||
<li><p><strong>condition</strong> (<em>str</em>) – The transition condition. The callback will be executed, if this condition is responsible for the state change. None means all conditions.</p></li>
|
||
<li><p><strong>callback</strong> – The callback to be executed.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Additional arguments and keyword parameters are supported. These arguments and parameters will be used as arguments and parameters for the callback execution.</p>
|
||
</div>
|
||
<p>This methods allows to register callbacks which will be executed on state changes.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.this_state">
|
||
<span class="sig-name descname"><span class="pre">this_state</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.this_state" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The current state.</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This method returns the current state of the state machine.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.this_state_duration">
|
||
<span class="sig-name descname"><span class="pre">this_state_duration</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.this_state_duration" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>The time how long the current state is active.</p>
|
||
</dd>
|
||
<dt class="field-even">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>float</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This method returns the time how long the current state is active.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.this_state_is">
|
||
<span class="sig-name descname"><span class="pre">this_state_is</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.this_state_is" title="Link to this definition">¶</a></dt>
|
||
<dd><dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>state</strong> (<em>str</em>) – The state to be checked</p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>True if the given state is currently active, else False.</p>
|
||
</dd>
|
||
<dt class="field-odd">Return type<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p>bool</p>
|
||
</dd>
|
||
</dl>
|
||
<p>This methods returns the boolean information if the state machine is currently in the given state.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="state_machine.state_machine.work">
|
||
<span class="sig-name descname"><span class="pre">work</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#state_machine.state_machine.work" title="Link to this definition">¶</a></dt>
|
||
<dd><p>This Method needs to be executed cyclicly to enable the state machine.</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
<div class="toctree-wrapper compound">
|
||
</div>
|
||
</section>
|
||
<section id="indices-and-tables">
|
||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading">¶</a></h1>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
|
||
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
|
||
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
|
||
</ul>
|
||
</section>
|
||
|
||
|
||
<div class="clearer"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||
<div class="sphinxsidebarwrapper">
|
||
<div>
|
||
<h3><a href="#">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Welcome to state_machine documentation!</a><ul>
|
||
<li><a class="reference internal" href="#state-machine-state-machine">state_machine (State Machine)</a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine"><code class="docutils literal notranslate"><span class="pre">state_machine</span></code></a><ul>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.last_transition_condition"><code class="docutils literal notranslate"><span class="pre">state_machine.last_transition_condition()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.last_transition_condition_was"><code class="docutils literal notranslate"><span class="pre">state_machine.last_transition_condition_was()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state_duration"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state_duration()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.previous_state_was"><code class="docutils literal notranslate"><span class="pre">state_machine.previous_state_was()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.register_state_change_callback"><code class="docutils literal notranslate"><span class="pre">state_machine.register_state_change_callback()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state_duration"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state_duration()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.this_state_is"><code class="docutils literal notranslate"><span class="pre">state_machine.this_state_is()</span></code></a></li>
|
||
<li><a class="reference internal" href="#state_machine.state_machine.work"><code class="docutils literal notranslate"><span class="pre">state_machine.work()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
<div role="note" aria-label="source link">
|
||
<h3>This Page</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="_sources/index.rst.txt"
|
||
rel="nofollow">Show Source</a></li>
|
||
</ul>
|
||
</div>
|
||
<search 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" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</search>
|
||
<script>document.getElementById('searchbox').style.display = "block"</script>
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="related" role="navigation" aria-label="Related">
|
||
<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><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||
<li class="switchers">
|
||
<div class="language_switcher_placeholder"></div>
|
||
<div class="version_switcher_placeholder"></div>
|
||
</li>
|
||
<li>
|
||
|
||
<a href="#">state_machine documentation</a> »
|
||
|
||
</li>
|
||
<li class="nav-item nav-item-this"><a href="">Welcome to state_machine documentation!</a></li>
|
||
<li class="right">
|
||
|
||
|
||
<div class="inline-search" role="search">
|
||
<form class="inline-search" action="search.html" method="get">
|
||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||
<input type="submit" value="Go">
|
||
</form>
|
||
</div>
|
||
|
|
||
</li>
|
||
<li class="right">
|
||
<label class="theme-selector-label">
|
||
Theme
|
||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||
<option value="auto" selected>Auto</option>
|
||
<option value="light">Light</option>
|
||
<option value="dark">Dark</option>
|
||
</select>
|
||
</label> |</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="footer">
|
||
©
|
||
Copyright
|
||
2025, Dirk Alders.
|
||
<br>
|
||
This page is licensed under the Python Software Foundation License Version 2.
|
||
<br>
|
||
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||
<br>
|
||
|
||
|
||
<br>
|
||
|
||
The Python Software Foundation is a non-profit corporation.
|
||
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||
<br>
|
||
<br>
|
||
|
||
<br>
|
||
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||
</div>
|
||
|
||
</body>
|
||
</html> |