Salome HOME
sat #8897 : prise en compte du cas overwrite où version est un dictionnaire
[tools/sat.git] / doc / build / html / _modules / src / options.html
1
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
8     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9     <title>src.options &#8212; salomeTools 5.0.0dev documentation</title>
10     <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
11     <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
12     <script type="text/javascript" src="../../_static/documentation_options.js"></script>
13     <script type="text/javascript" src="../../_static/jquery.js"></script>
14     <script type="text/javascript" src="../../_static/underscore.js"></script>
15     <script type="text/javascript" src="../../_static/doctools.js"></script>
16     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
17     <link rel="index" title="Index" href="../../genindex.html" />
18     <link rel="search" title="Search" href="../../search.html" />
19    
20   <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
21   
22   
23   <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
24
25   </head><body>
26   
27
28     <div class="document">
29       <div class="documentwrapper">
30         <div class="bodywrapper">
31           <div class="body" role="main">
32             
33   <h1>Source code for src.options</h1><div class="highlight"><pre>
34 <span></span><span class="ch">#!/usr/bin/env python</span>
35 <span class="c1">#-*- coding:utf-8 -*-</span>
36 <span class="c1">#  Copyright (C) 2010-2013  CEA/DEN</span>
37 <span class="c1">#</span>
38 <span class="c1">#  This library is free software; you can redistribute it and/or</span>
39 <span class="c1">#  modify it under the terms of the GNU Lesser General Public</span>
40 <span class="c1">#  License as published by the Free Software Foundation; either</span>
41 <span class="c1">#  version 2.1 of the License.</span>
42 <span class="c1">#</span>
43 <span class="c1">#  This library is distributed in the hope that it will be useful,</span>
44 <span class="c1">#  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
45 <span class="c1">#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
46 <span class="c1">#  Lesser General Public License for more details.</span>
47 <span class="c1">#</span>
48 <span class="c1">#  You should have received a copy of the GNU Lesser General Public</span>
49 <span class="c1">#  License along with this library; if not, write to the Free Software</span>
50 <span class="c1">#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA</span>
51
52 <span class="sd">&quot;&quot;&quot;</span>
53 <span class="sd">The Options class that manages the access to all options passed as </span>
54 <span class="sd">parameters in salomeTools command lines</span>
55 <span class="sd">&quot;&quot;&quot;</span>
56
57 <span class="kn">import</span> <span class="nn">getopt</span>
58 <span class="kn">import</span> <span class="nn">sys</span>
59 <span class="kn">import</span> <span class="nn">pprint</span> <span class="k">as</span> <span class="nn">PP</span>
60
61 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">printcolors</span>
62
63 <span class="kn">import</span> <span class="nn">src</span>
64 <span class="kn">import</span> <span class="nn">src.debug</span> <span class="k">as</span> <span class="nn">DBG</span> <span class="c1"># Easy print stderr (for DEBUG only)</span>
65
66 <div class="viewcode-block" id="OptResult"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.OptResult">[docs]</a><span class="k">class</span> <span class="nc">OptResult</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
67     <span class="sd">&quot;&quot;&quot;</span>
68 <span class="sd">    An instance of this class will be the object manipulated</span>
69 <span class="sd">    in code of all salomeTools commands</span>
70 <span class="sd">    The aim of this class is to have an elegant syntax to manipulate the options.</span>
71 <span class="sd">    </span>
72 <span class="sd">    | Example:        </span>
73 <span class="sd">    | &gt;&gt; options, remainderArgs = command.parseArguments(args)</span>
74 <span class="sd">    | &gt;&gt; print(options.output_verbose_level)</span>
75 <span class="sd">    | &gt;&gt; &#39;INFO&#39;</span>
76 <span class="sd">    &quot;&quot;&quot;</span>
77     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
78         <span class="sd">&quot;&quot;&quot;Initialization</span>
79 <span class="sd">        &quot;&quot;&quot;</span>
80         <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
81
82     <span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
83         <span class="sd">&quot;&quot;&quot;</span>
84 <span class="sd">        Overwrite of the __getattr__ function </span>
85 <span class="sd">        to customize it for option usage</span>
86 <span class="sd">        </span>
87 <span class="sd">        :param name: (str) The attribute to get the value.</span>
88 <span class="sd">        :return: (str int list boolean level)</span>
89 <span class="sd">          the value corresponding to the attribute.</span>
90 <span class="sd">        &quot;&quot;&quot;</span>
91         <span class="k">if</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="p">:</span>
92             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
93         <span class="k">else</span><span class="p">:</span>
94             <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;--&quot;</span> <span class="o">+</span> <span class="n">name</span> <span class="o">+</span> <span class="n">_</span><span class="p">(</span><span class="sa">u</span><span class="s2">&quot; is not a valid option&quot;</span><span class="p">))</span>
95
96     <span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
97         <span class="sd">&quot;&quot;&quot;</span>
98 <span class="sd">        Overwrite of the __setattr__ function </span>
99 <span class="sd">        to customize it for option usage</span>
100 <span class="sd">        </span>
101 <span class="sd">        :param name: (str) The attribute to set.</span>
102 <span class="sd">        :param value: (str) The value  corresponding to the attribute.</span>
103 <span class="sd">        :return: None</span>
104 <span class="sd">        &quot;&quot;&quot;</span>
105         <span class="nb">object</span><span class="o">.</span><span class="fm">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
106
107     <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
108         <span class="n">aStr</span> <span class="o">=</span> <span class="n">PP</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">)</span>
109         <span class="n">res</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">(</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="se">\n</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">aStr</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
110         <span class="k">return</span> <span class="n">res</span></div>
111
112 <div class="viewcode-block" id="Options"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options">[docs]</a><span class="k">class</span> <span class="nc">Options</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
113     <span class="sd">&quot;&quot;&quot;</span>
114 <span class="sd">    Class to manage all salomeTools options</span>
115 <span class="sd">    &quot;&quot;&quot;</span>
116     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
117         <span class="sd">&quot;&quot;&quot;Initialization</span>
118 <span class="sd">        &quot;&quot;&quot;</span>
119         <span class="c1"># The options field stocks all options of a command </span>
120         <span class="c1"># in a list that contains dicts</span>
121         <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">[]</span>
122         <span class="c1"># The list of available option type</span>
123         <span class="bp">self</span><span class="o">.</span><span class="n">availableOptions</span> <span class="o">=</span> <span class="s2">&quot;noboolean boolean string int float long list list2 level&quot;</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
124         <span class="bp">self</span><span class="o">.</span><span class="n">noArgOptions</span> <span class="o">=</span> <span class="s2">&quot;noboolean boolean&quot;</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
125         <span class="bp">self</span><span class="o">.</span><span class="n">default</span> <span class="o">=</span> <span class="kc">None</span>
126         <span class="bp">self</span><span class="o">.</span><span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
127
128 <div class="viewcode-block" id="Options.add_option"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.add_option">[docs]</a>    <span class="k">def</span> <span class="nf">add_option</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">shortName</span><span class="p">,</span> <span class="n">longName</span><span class="p">,</span> <span class="n">optionType</span><span class="p">,</span> <span class="n">destName</span><span class="p">,</span> <span class="n">helpString</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
129         <span class="sd">&quot;&quot;&quot;</span>
130 <span class="sd">        Add an option to a command. It gets all attributes</span>
131 <span class="sd">        of an option and append it in the options field</span>
132 <span class="sd">        </span>
133 <span class="sd">        :param shortName: (str) </span>
134 <span class="sd">          The short name of the option (as &#39;-l&#39; for level option).</span>
135 <span class="sd">        :param longName: (str) </span>
136 <span class="sd">          The long name of the option (as &#39;--level&#39; for level option).</span>
137 <span class="sd">        :param optionType: (str) The type of the option (ex &quot;int&quot;).</span>
138 <span class="sd">        :param destName: (str) The name that will be used in the code.</span>
139 <span class="sd">        :param helpString: (str) </span>
140 <span class="sd">          The text to display when user ask for help on a command.     </span>
141 <span class="sd">        :return: None</span>
142 <span class="sd">        &quot;&quot;&quot;</span>
143         <span class="n">tmp</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="k">if</span> <span class="n">o</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">]</span>
144         <span class="k">if</span> <span class="n">shortName</span> <span class="ow">in</span> <span class="n">tmp</span><span class="p">:</span> 
145           <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;option &#39;-</span><span class="si">%s</span><span class="s2">&#39; existing yet&quot;</span> <span class="o">%</span> <span class="n">shortName</span><span class="p">)</span>
146         <span class="n">tmp</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="k">if</span> <span class="n">o</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">]</span>
147         <span class="k">if</span> <span class="n">longName</span> <span class="ow">in</span> <span class="n">tmp</span><span class="p">:</span> 
148           <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;option &#39;--</span><span class="si">%s</span><span class="s2">&#39; existing yet&quot;</span> <span class="o">%</span> <span class="n">longName</span><span class="p">)</span>
149
150         <span class="n">option</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
151         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">shortName</span>
152         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">longName</span>
153
154         <span class="k">if</span> <span class="n">optionType</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">availableOptions</span><span class="p">:</span>
155           <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;error optionType &#39;</span><span class="si">%s</span><span class="s2">&#39; not available.&quot;</span> <span class="o">%</span> <span class="n">optionType</span><span class="p">)</span>
156
157         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;optionType&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">optionType</span>
158         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;destName&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">destName</span>
159         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;helpString&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">helpString</span>
160         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">default</span>
161         
162         <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">option</span><span class="p">)</span></div>
163         
164 <div class="viewcode-block" id="Options.getDetailOption"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.getDetailOption">[docs]</a>    <span class="k">def</span> <span class="nf">getDetailOption</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">option</span><span class="p">):</span>
165         <span class="sd">&quot;&quot;&quot;</span>
166 <span class="sd">        for convenience </span>
167 <span class="sd">        </span>
168 <span class="sd">        :return: (tuple) 4-elements (shortName, longName, optionType, helpString)</span>
169 <span class="sd">        &quot;&quot;&quot;</span>
170         <span class="n">oos</span> <span class="o">=</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span>
171         <span class="n">ool</span> <span class="o">=</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span>
172         <span class="n">oot</span> <span class="o">=</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;optionType&#39;</span><span class="p">]</span>
173         <span class="n">ooh</span> <span class="o">=</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;helpString&#39;</span><span class="p">]</span>
174         <span class="k">return</span> <span class="p">(</span><span class="n">oos</span><span class="p">,</span> <span class="n">ool</span><span class="p">,</span> <span class="n">oot</span><span class="p">,</span> <span class="n">ooh</span><span class="p">)</span></div>
175
176 <div class="viewcode-block" id="Options.get_help"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.get_help">[docs]</a>    <span class="k">def</span> <span class="nf">get_help</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
177         <span class="sd">&quot;&quot;&quot;</span>
178 <span class="sd">        Returns all options stored in self.options </span>
179 <span class="sd">        as help message colored string</span>
180 <span class="sd">        </span>
181 <span class="sd">        :return: (str) colored string</span>
182 <span class="sd">        &quot;&quot;&quot;</span>
183         <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
184         <span class="c1"># Do nothing if there are no options</span>
185
186         <span class="c1">#there is -h option, always</span>
187         <span class="c1">#if len(self.options) == 0:</span>
188         <span class="c1">#    return _(&quot;No available options.&quot;)</span>
189
190         <span class="c1"># for all options, gets its values. </span>
191         <span class="c1"># &quot;shortname&quot; is an mandatory field of the options, could be &#39;&#39; </span>
192         <span class="n">msg</span> <span class="o">+=</span> <span class="n">printcolors</span><span class="o">.</span><span class="n">printcHeader</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">&quot;Available options are:&quot;</span><span class="p">))</span>
193         <span class="k">for</span> <span class="n">option</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
194             <span class="n">oos</span><span class="p">,</span> <span class="n">ool</span><span class="p">,</span> <span class="n">oot</span><span class="p">,</span> <span class="n">ooh</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">getDetailOption</span><span class="p">(</span><span class="n">option</span><span class="p">)</span>
195             <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">oos</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
196                 <span class="n">msg</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> -</span><span class="si">%1s</span><span class="s2">, --</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">oos</span><span class="p">,</span> <span class="n">ool</span><span class="p">,</span> <span class="n">oot</span><span class="p">)</span>
197             <span class="k">else</span><span class="p">:</span>
198                 <span class="n">msg</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> --</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ool</span><span class="p">,</span> <span class="n">oot</span><span class="p">)</span>
199                 
200             <span class="n">msg</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">ooh</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
201         <span class="k">return</span> <span class="n">msg</span></div>
202
203 <div class="viewcode-block" id="Options.indent"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.indent">[docs]</a>    <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">amount</span><span class="p">,</span> <span class="n">car</span><span class="o">=</span><span class="s2">&quot; &quot;</span><span class="p">):</span>
204         <span class="sd">&quot;&quot;&quot;indent multi lines message&quot;&quot;&quot;</span>
205         <span class="n">padding</span> <span class="o">=</span> <span class="n">amount</span> <span class="o">*</span> <span class="n">car</span>
206         <span class="k">return</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">padding</span> <span class="o">+</span> <span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">text</span><span class="o">.</span><span class="n">splitlines</span><span class="p">(</span><span class="kc">True</span><span class="p">))</span></div>
207                
208 <div class="viewcode-block" id="Options.parse_args"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.parse_args">[docs]</a>    <span class="k">def</span> <span class="nf">parse_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">argList</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
209         <span class="sd">&quot;&quot;&quot;</span>
210 <span class="sd">        Instantiates the class OptResult </span>
211 <span class="sd">        that gives access to all options in the code</span>
212 <span class="sd">        </span>
213 <span class="sd">        :param argList: (list) the raw list of arguments that were passed</span>
214 <span class="sd">        :return: (OptResult, list) as (optResult, args) </span>
215 <span class="sd">          optResult is the option instance to manipulate in the code. </span>
216 <span class="sd">          args is the full raw list of passed options </span>
217 <span class="sd">        &quot;&quot;&quot;</span>
218         <span class="c1"># see https://pymotw.com/2/getopt/</span>
219         <span class="k">if</span> <span class="n">argList</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
220             <span class="n">argList</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
221         
222         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;parse_args&quot;</span><span class="p">,</span> <span class="n">argList</span><span class="p">)</span>
223         <span class="c1"># DBG.write(&quot;options&quot;, self.options)</span>
224         <span class="c1"># format shortNameOption and longNameOption </span>
225         <span class="c1"># to make right arguments to getopt.getopt function</span>
226         <span class="n">shortNameOption</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
227         <span class="n">longNameOption</span> <span class="o">=</span> <span class="p">[]</span>
228         <span class="k">for</span> <span class="n">option</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
229             <span class="n">shortNameOption</span> <span class="o">=</span> <span class="n">shortNameOption</span> <span class="o">+</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span>
230             <span class="k">if</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span> <span class="ow">and</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;optionType&#39;</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">noArgOptions</span><span class="p">:</span>
231                 <span class="n">shortNameOption</span> <span class="o">=</span> <span class="n">shortNameOption</span> <span class="o">+</span> <span class="s2">&quot;:&quot;</span>
232
233             <span class="k">if</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
234                 <span class="k">if</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;optionType&#39;</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">noArgOptions</span><span class="p">:</span>
235                     <span class="n">longNameOption</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;=&quot;</span><span class="p">)</span>
236                 <span class="k">else</span><span class="p">:</span>
237                     <span class="n">longNameOption</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">])</span>
238
239         <span class="c1"># call to getopt.getopt function to get the option </span>
240         <span class="c1"># passed in the command regarding the available options</span>
241         <span class="k">try</span><span class="p">:</span>
242           <span class="n">optlist</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">getopt</span><span class="o">.</span><span class="n">getopt</span><span class="p">(</span><span class="n">argList</span><span class="p">,</span> <span class="n">shortNameOption</span><span class="p">,</span> <span class="n">longNameOption</span><span class="p">)</span>
243         <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
244           <span class="n">msg</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; on &#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="se">\n\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">argList</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_help</span><span class="p">()</span>
245           <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
246
247         <span class="c1"># instantiate and completing the optResult that will be returned</span>
248         <span class="n">optResult</span> <span class="o">=</span> <span class="n">OptResult</span><span class="p">()</span>
249         <span class="k">for</span> <span class="n">option</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
250             <span class="n">shortOption</span> <span class="o">=</span> <span class="s2">&quot;-&quot;</span> <span class="o">+</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;shortName&#39;</span><span class="p">]</span>
251             <span class="n">longOption</span> <span class="o">=</span> <span class="s2">&quot;--&quot;</span> <span class="o">+</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;longName&#39;</span><span class="p">]</span>
252             <span class="n">optionType</span> <span class="o">=</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;optionType&#39;</span><span class="p">]</span>
253             <span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">optlist</span><span class="p">:</span>
254                 <span class="k">if</span> <span class="n">opt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="n">shortOption</span><span class="p">,</span> <span class="n">longOption</span><span class="p">]:</span>
255                     <span class="k">if</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;string&quot;</span><span class="p">:</span>
256                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
257                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;boolean&quot;</span><span class="p">:</span>
258                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
259                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;noboolean&quot;</span><span class="p">:</span>
260                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
261                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;int&quot;</span><span class="p">:</span>
262                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
263                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;float&quot;</span><span class="p">:</span>
264                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
265                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;long&quot;</span><span class="p">:</span>
266                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">long</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
267                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;list&quot;</span><span class="p">:</span>
268                         <span class="k">if</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
269                             <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
270                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
271                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;level&quot;</span><span class="p">:</span> <span class="c1">#logger logging levels</span>
272                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filterLevel</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
273                     <span class="k">elif</span> <span class="n">optionType</span> <span class="o">==</span> <span class="s2">&quot;list2&quot;</span><span class="p">:</span>
274                         <span class="k">if</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
275                             <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
276                         <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filterList2</span><span class="p">(</span><span class="n">opt</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
277
278             <span class="n">optResult</span><span class="o">.</span><span class="fm">__setattr__</span><span class="p">(</span><span class="n">option</span><span class="p">[</span><span class="s1">&#39;destName&#39;</span><span class="p">],</span> <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">])</span>
279             <span class="c1"># free the option in order to be able to make </span>
280             <span class="c1"># a new free call of options (API case)</span>
281             <span class="n">option</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
282
283         <span class="bp">self</span><span class="o">.</span><span class="n">results</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;optlist&quot;</span><span class="p">:</span> <span class="n">optlist</span><span class="p">,</span> <span class="s2">&quot;optResult&quot;</span><span class="p">:</span> <span class="n">optResult</span><span class="p">,</span> <span class="s2">&quot;args&quot;</span><span class="p">:</span> <span class="n">args</span><span class="p">,</span> <span class="s2">&quot;argList&quot;</span><span class="p">:</span> <span class="n">argList</span><span class="p">}</span>
284         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;results&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="p">)</span>
285         <span class="k">return</span> <span class="n">optResult</span><span class="p">,</span> <span class="n">args</span></div>
286         
287 <div class="viewcode-block" id="Options.filterLevel"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.filterLevel">[docs]</a>    <span class="k">def</span> <span class="nf">filterLevel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aLevel</span><span class="p">):</span>
288       <span class="sd">&quot;&quot;&quot;filter level logging values&quot;&quot;&quot;</span>
289       <span class="kn">import</span> <span class="nn">src.loggingSimple</span> <span class="k">as</span> <span class="nn">LOG</span>
290       <span class="n">aLev</span> <span class="o">=</span> <span class="n">aLevel</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
291       <span class="n">knownLevels</span> <span class="o">=</span> <span class="n">LOG</span><span class="o">.</span><span class="n">_knownLevels</span>
292       <span class="n">maxLen</span> <span class="o">=</span> <span class="nb">max</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">knownLevels</span><span class="p">])</span>
293       <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">maxLen</span><span class="p">):</span>
294         <span class="k">for</span> <span class="n">lev</span> <span class="ow">in</span> <span class="n">knownLevels</span><span class="p">:</span>
295           <span class="k">if</span> <span class="n">aLev</span> <span class="o">==</span> <span class="n">lev</span><span class="p">[:</span><span class="n">i</span><span class="p">]:</span>
296             <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;filterLevel&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> -&gt; </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">aLevel</span><span class="p">,</span> <span class="n">lev</span><span class="p">))</span> 
297             <span class="k">return</span> <span class="n">lev</span>
298       <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;Unknown level &#39;</span><span class="si">%s</span><span class="s2">&#39;, accepted are:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">aLev</span><span class="p">,</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">knownLevels</span><span class="p">))</span>
299       <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></div>
300       
301 <div class="viewcode-block" id="Options.filterList2"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.filterList2">[docs]</a>    <span class="k">def</span> <span class="nf">filterList2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aStr</span><span class="p">):</span>
302       <span class="sd">&quot;&quot;&quot;filter a list as &#39;KERNEL,YACS,etc.&#39;&quot;&quot;&quot;</span>
303       <span class="n">aList</span> <span class="o">=</span> <span class="n">aStr</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)</span>
304       <span class="c1"># fix list leading &#39;,&#39; as &#39;,KERNEL,...&#39;</span>
305       <span class="n">aList</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">aList</span> <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="s2">&quot;&quot;</span><span class="p">]</span> <span class="c1"># split old list leadin &quot;,&quot; as &quot;,KERNEL,ETC...&quot;</span>
306       <span class="k">return</span> <span class="n">aList</span></div>
307       
308
309     <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
310         <span class="sd">&quot;&quot;&quot;</span>
311 <span class="sd">        repr for only self.options and self.results (if present)</span>
312 <span class="sd">        &quot;&quot;&quot;</span>
313         <span class="n">aDict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;options&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">,</span> <span class="s1">&#39;results&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="p">}</span>
314         <span class="n">aStr</span> <span class="o">=</span> <span class="n">PP</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="n">aDict</span><span class="p">)</span>
315         <span class="n">res</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">(</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="se">\n</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">aStr</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
316         <span class="k">return</span> <span class="n">res</span>
317         
318     <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
319         <span class="sd">&quot;&quot;&quot;</span>
320 <span class="sd">        str for only resume expected self.options</span>
321 <span class="sd">        &quot;&quot;&quot;</span>
322         <span class="c1">#aDict = [(k[&quot;longName&quot;], k[&quot;shortName&quot;, k[&quot;helpString&quot;]) for k in self.options}</span>
323         <span class="c1">#aList = [(k, self.options[k]) for k in sorted(self.options.keys())]</span>
324         <span class="n">aDict</span> <span class="o">=</span> <span class="p">{}</span>
325         <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
326           <span class="n">aDict</span><span class="p">[</span><span class="n">o</span><span class="p">[</span><span class="s2">&quot;longName&quot;</span><span class="p">]]</span> <span class="o">=</span> <span class="p">(</span><span class="n">o</span><span class="p">[</span><span class="s2">&quot;shortName&quot;</span><span class="p">],</span> <span class="n">o</span><span class="p">[</span><span class="s2">&quot;helpString&quot;</span><span class="p">])</span>
327         <span class="n">aStr</span> <span class="o">=</span> <span class="n">PP</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="n">aDict</span><span class="p">)</span>
328         <span class="n">res</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">(</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">aStr</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
329         <span class="k">return</span> <span class="n">res</span>
330         
331 <div class="viewcode-block" id="Options.debug_write"><a class="viewcode-back" href="../../commands/apidoc/src.html#src.options.Options.debug_write">[docs]</a>    <span class="k">def</span> <span class="nf">debug_write</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
332         <span class="n">DBG</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;options and results&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span></div></div>
333
334
335 </pre></div>
336
337           </div>
338         </div>
339       </div>
340       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
341         <div class="sphinxsidebarwrapper">
342             <p class="logo"><a href="../../index.html">
343               <img class="logo" src="../../_static/sat_v5.0.png" alt="Logo"/>
344             </a></p><div class="relations">
345 <h3>Related Topics</h3>
346 <ul>
347   <li><a href="../../index.html">Documentation overview</a><ul>
348   <li><a href="../index.html">Module code</a><ul>
349   <li><a href="../src.html">src</a><ul>
350   </ul></li>
351   </ul></li>
352   </ul></li>
353 </ul>
354 </div>
355 <div id="searchbox" style="display: none" role="search">
356   <h3>Quick search</h3>
357     <div class="searchformwrapper">
358     <form class="search" action="../../search.html" method="get">
359       <input type="text" name="q" />
360       <input type="submit" value="Go" />
361       <input type="hidden" name="check_keywords" value="yes" />
362       <input type="hidden" name="area" value="default" />
363     </form>
364     </div>
365 </div>
366 <script type="text/javascript">$('#searchbox').show(0);</script>
367         </div>
368       </div>
369       <div class="clearer"></div>
370     </div>
371     <div class="footer">
372       &copy;2018, CEA.
373       
374       |
375       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.7.3</a>
376       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
377       
378     </div>
379
380     
381
382     
383   </body>
384 </html>