Salome HOME
sat #8897 : prise en compte du cas overwrite où version est un dictionnaire
[tools/sat.git] / doc / build / html / _modules / src.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 &#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</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
53 <span class="sd">&quot;&quot;&quot;\</span>
54 <span class="sd">initial imports and utilities methods for salomeTools</span>
55 <span class="sd">&quot;&quot;&quot;</span>
56
57 <span class="kn">import</span> <span class="nn">os</span>
58 <span class="kn">import</span> <span class="nn">shutil</span>
59 <span class="kn">import</span> <span class="nn">errno</span>
60 <span class="kn">import</span> <span class="nn">stat</span>
61
62 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">pyconf</span>
63 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">architecture</span>
64 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">printcolors</span>
65 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">options</span>
66 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">system</span>
67 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">ElementTree</span>
68 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">logger</span>
69 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">product</span>
70 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">environment</span>
71 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">fileEnviron</span>
72 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">compilation</span>
73 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">test_module</span>
74 <span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">template</span>
75
76 <span class="kn">import</span> <span class="nn">platform</span>
77 <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;Windows&quot;</span> <span class="p">:</span>
78     <span class="kn">import</span> <span class="nn">colorama</span>
79     <span class="n">colorama</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
80
81 <span class="n">OK_STATUS</span> <span class="o">=</span> <span class="s2">&quot;OK&quot;</span>
82 <span class="n">KO_STATUS</span> <span class="o">=</span> <span class="s2">&quot;KO&quot;</span>
83 <span class="n">NA_STATUS</span> <span class="o">=</span> <span class="s2">&quot;NA&quot;</span>
84 <span class="n">KNOWNFAILURE_STATUS</span> <span class="o">=</span> <span class="s2">&quot;KF&quot;</span>
85 <span class="n">TIMEOUT_STATUS</span> <span class="o">=</span> <span class="s2">&quot;TIMEOUT&quot;</span>
86
87 <span class="n">CONFIG_FILENAME</span> <span class="o">=</span> <span class="s2">&quot;sat-config.pyconf&quot;</span>
88
89 <div class="viewcode-block" id="SatException"><a class="viewcode-back" href="../commands/apidoc/src.html#src.SatException">[docs]</a><span class="k">class</span> <span class="nc">SatException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
90     <span class="sd">&quot;&quot;&quot;rename Exception Class&quot;&quot;&quot;</span>
91     <span class="k">pass</span></div>
92
93 <div class="viewcode-block" id="ensure_path_exists"><a class="viewcode-back" href="../commands/apidoc/src.html#src.ensure_path_exists">[docs]</a><span class="k">def</span> <span class="nf">ensure_path_exists</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
94     <span class="sd">&quot;&quot;&quot;Create a path if not existing</span>
95 <span class="sd">    </span>
96 <span class="sd">    :param p str: The path.</span>
97 <span class="sd">    &quot;&quot;&quot;</span>
98     <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">p</span><span class="p">):</span>
99         <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">p</span><span class="p">)</span></div>
100         
101 <div class="viewcode-block" id="check_config_has_application"><a class="viewcode-back" href="../commands/apidoc/src.html#src.check_config_has_application">[docs]</a><span class="k">def</span> <span class="nf">check_config_has_application</span><span class="p">(</span> <span class="n">config</span><span class="p">,</span> <span class="n">details</span> <span class="o">=</span> <span class="kc">None</span> <span class="p">):</span>
102     <span class="sd">&quot;&quot;&quot;check that the config has the key APPLICATION. Else raise an exception.</span>
103 <span class="sd">    </span>
104 <span class="sd">    :param config class &#39;common.pyconf.Config&#39;: The config.</span>
105 <span class="sd">    &quot;&quot;&quot;</span>
106     <span class="k">if</span> <span class="s1">&#39;APPLICATION&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">config</span><span class="p">:</span>
107         <span class="n">message</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">&quot;An APPLICATION is required. Use &#39;config --list&#39; to get&quot;</span>
108                     <span class="s2">&quot; the list of available applications.</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
109         <span class="k">if</span> <span class="n">details</span> <span class="p">:</span>
110             <span class="n">details</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
111         <span class="k">raise</span> <span class="n">SatException</span><span class="p">(</span> <span class="n">message</span> <span class="p">)</span></div>
112
113 <div class="viewcode-block" id="check_config_has_profile"><a class="viewcode-back" href="../commands/apidoc/src.html#src.check_config_has_profile">[docs]</a><span class="k">def</span> <span class="nf">check_config_has_profile</span><span class="p">(</span> <span class="n">config</span><span class="p">,</span> <span class="n">details</span> <span class="o">=</span> <span class="kc">None</span> <span class="p">):</span>
114     <span class="sd">&quot;&quot;&quot;\</span>
115 <span class="sd">    check that the config has the key APPLICATION.profile.</span>
116 <span class="sd">    else, raise an exception.</span>
117 <span class="sd">    </span>
118 <span class="sd">    :param config class &#39;common.pyconf.Config&#39;: The config.</span>
119 <span class="sd">    &quot;&quot;&quot;</span>
120     <span class="n">check_config_has_application</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
121     <span class="k">if</span> <span class="s1">&#39;profile&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="p">:</span>
122         <span class="n">message</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">&quot;A profile section is required in your application.</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
123         <span class="k">if</span> <span class="n">details</span> <span class="p">:</span>
124             <span class="n">details</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
125         <span class="k">raise</span> <span class="n">SatException</span><span class="p">(</span> <span class="n">message</span> <span class="p">)</span></div>
126
127 <div class="viewcode-block" id="config_has_application"><a class="viewcode-back" href="../commands/apidoc/src.html#src.config_has_application">[docs]</a><span class="k">def</span> <span class="nf">config_has_application</span><span class="p">(</span> <span class="n">config</span> <span class="p">):</span>
128     <span class="k">return</span> <span class="s1">&#39;APPLICATION&#39;</span> <span class="ow">in</span> <span class="n">config</span></div>
129
130 <div class="viewcode-block" id="get_cfg_param"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_cfg_param">[docs]</a><span class="k">def</span> <span class="nf">get_cfg_param</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="n">param_name</span><span class="p">,</span> <span class="n">default</span><span class="p">):</span>
131     <span class="sd">&quot;&quot;&quot;\</span>
132 <span class="sd">    eearch for param_name value in config.</span>
133 <span class="sd">    if param_name is not in config </span>
134 <span class="sd">    then return default,</span>
135 <span class="sd">    else return the found value</span>
136 <span class="sd">       </span>
137 <span class="sd">    :param config class &#39;common.pyconf.Config&#39;: The config.</span>
138 <span class="sd">    :param param_name str: the name of the parameter to get the value</span>
139 <span class="sd">    :param default str: The value to return if param_name is not in config</span>
140 <span class="sd">    :return: see initial description of the function</span>
141 <span class="sd">    :rtype: str</span>
142 <span class="sd">    &quot;&quot;&quot;</span>
143     <span class="k">if</span> <span class="n">param_name</span> <span class="ow">in</span> <span class="n">config</span><span class="p">:</span>
144         <span class="k">return</span> <span class="n">config</span><span class="p">[</span><span class="n">param_name</span><span class="p">]</span>
145     <span class="k">return</span> <span class="n">default</span></div>
146
147 <div class="viewcode-block" id="print_info"><a class="viewcode-back" href="../commands/apidoc/src.html#src.print_info">[docs]</a><span class="k">def</span> <span class="nf">print_info</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">info</span><span class="p">):</span>
148     <span class="sd">&quot;&quot;&quot;\</span>
149 <span class="sd">    Prints the tuples that are in info variable in a formatted way.</span>
150 <span class="sd">    </span>
151 <span class="sd">    :param logger Logger: The logging instance to use for the prints.</span>
152 <span class="sd">    :param info list: The list of tuples to display</span>
153 <span class="sd">    &quot;&quot;&quot;</span>
154     <span class="c1"># find the maximum length of the first value of the tuples in info</span>
155     <span class="n">smax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">l</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">info</span><span class="p">))</span>
156     <span class="c1"># Print each item of info with good indentation</span>
157     <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">info</span><span class="p">:</span>
158         <span class="n">sp</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span> <span class="o">*</span> <span class="p">(</span><span class="n">smax</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
159         <span class="n">printcolors</span><span class="o">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">sp</span> <span class="o">+</span> <span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">i</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">2</span><span class="p">)</span>
160     <span class="n">logger</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span></div>
161
162 <div class="viewcode-block" id="get_base_path"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_base_path">[docs]</a><span class="k">def</span> <span class="nf">get_base_path</span><span class="p">(</span><span class="n">config</span><span class="p">):</span>
163     <span class="sd">&quot;&quot;&quot;\</span>
164 <span class="sd">    Returns the path of the products base.</span>
165 <span class="sd">    </span>
166 <span class="sd">    :param config Config: The global Config instance.</span>
167 <span class="sd">    :return: The path of the products base.</span>
168 <span class="sd">    :rtype: str</span>
169 <span class="sd">    &quot;&quot;&quot;</span>
170     <span class="k">if</span> <span class="s2">&quot;base&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">:</span>
171         <span class="n">local_file_path</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">join</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">salometoolsway</span><span class="p">,</span>
172                                       <span class="s2">&quot;data&quot;</span><span class="p">,</span>
173                                       <span class="s2">&quot;local.pyconf&quot;</span><span class="p">)</span>
174         <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">&quot;Please define a base path in the file </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">local_file_path</span><span class="p">)</span>
175         <span class="k">raise</span> <span class="n">SatException</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
176         
177     <span class="n">base_path</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">abspath</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">LOCAL</span><span class="o">.</span><span class="n">base</span><span class="p">)</span>
178     
179     <span class="k">return</span> <span class="n">base_path</span></div>
180
181 <div class="viewcode-block" id="get_launcher_name"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_launcher_name">[docs]</a><span class="k">def</span> <span class="nf">get_launcher_name</span><span class="p">(</span><span class="n">config</span><span class="p">):</span>
182     <span class="sd">&quot;&quot;&quot;\</span>
183 <span class="sd">    Returns the name of salome launcher.</span>
184 <span class="sd">    </span>
185 <span class="sd">    :param config Config: The global Config instance.</span>
186 <span class="sd">    :return: The name of salome launcher.</span>
187 <span class="sd">    :rtype: str</span>
188 <span class="sd">    &quot;&quot;&quot;</span>
189     <span class="n">check_config_has_application</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
190     <span class="k">if</span> <span class="s1">&#39;profile&#39;</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span> <span class="ow">and</span> <span class="s1">&#39;launcher_name&#39;</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">profile</span><span class="p">:</span>
191         <span class="n">launcher_name</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">profile</span><span class="o">.</span><span class="n">launcher_name</span>
192     <span class="k">else</span><span class="p">:</span>
193         <span class="n">launcher_name</span> <span class="o">=</span> <span class="s1">&#39;salome&#39;</span>
194
195     <span class="k">return</span> <span class="n">launcher_name</span></div>
196
197 <div class="viewcode-block" id="get_log_path"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_log_path">[docs]</a><span class="k">def</span> <span class="nf">get_log_path</span><span class="p">(</span><span class="n">config</span><span class="p">):</span>
198     <span class="sd">&quot;&quot;&quot;\</span>
199 <span class="sd">    Returns the path of the logs.</span>
200 <span class="sd">    </span>
201 <span class="sd">    :param config Config: The global Config instance.</span>
202 <span class="sd">    :return: The path of the logs.</span>
203 <span class="sd">    :rtype: str</span>
204 <span class="sd">    &quot;&quot;&quot;</span>
205     <span class="k">if</span> <span class="s2">&quot;log_dir&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">:</span>
206         <span class="n">local_file_path</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">join</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">salometoolsway</span><span class="p">,</span>
207                                       <span class="s2">&quot;data&quot;</span><span class="p">,</span>
208                                       <span class="s2">&quot;local.pyconf&quot;</span><span class="p">)</span>
209         <span class="n">msg</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">&quot;Please define a log_dir in the file </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">local_file_path</span><span class="p">)</span>
210         <span class="k">raise</span> <span class="n">SatException</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
211       
212     <span class="n">log_dir_path</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">abspath</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">LOCAL</span><span class="o">.</span><span class="n">log_dir</span><span class="p">)</span>
213     
214     <span class="k">return</span> <span class="n">log_dir_path</span></div>
215
216 <div class="viewcode-block" id="get_salome_version"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_salome_version">[docs]</a><span class="k">def</span> <span class="nf">get_salome_version</span><span class="p">(</span><span class="n">config</span><span class="p">):</span>
217     <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="p">,</span> <span class="s1">&#39;version_salome&#39;</span><span class="p">):</span>
218         <span class="n">Version</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">version_salome</span>
219     <span class="k">else</span><span class="p">:</span>
220         <span class="n">KERNEL_info</span> <span class="o">=</span> <span class="n">product</span><span class="o">.</span><span class="n">get_product_config</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="s2">&quot;KERNEL&quot;</span><span class="p">)</span>
221         <span class="n">VERSION</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">join</span><span class="p">(</span>
222                             <span class="n">KERNEL_info</span><span class="o">.</span><span class="n">install_dir</span><span class="p">,</span>
223                             <span class="s2">&quot;bin&quot;</span><span class="p">,</span>
224                             <span class="s2">&quot;salome&quot;</span><span class="p">,</span>
225                             <span class="s2">&quot;VERSION&quot;</span><span class="p">)</span>
226         <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">VERSION</span><span class="p">):</span>
227             <span class="k">return</span> <span class="kc">None</span>
228             
229         <span class="n">fVERSION</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">VERSION</span><span class="p">)</span>
230         <span class="n">Version</span> <span class="o">=</span> <span class="n">fVERSION</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
231         <span class="n">fVERSION</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
232         
233     <span class="n">VersionSalome</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">only_numbers</span><span class="p">(</span><span class="n">Version</span><span class="p">))</span>    
234     <span class="k">return</span> <span class="n">VersionSalome</span></div>
235
236 <div class="viewcode-block" id="only_numbers"><a class="viewcode-back" href="../commands/apidoc/src.html#src.only_numbers">[docs]</a><span class="k">def</span> <span class="nf">only_numbers</span><span class="p">(</span><span class="n">str_num</span><span class="p">):</span>
237     <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">nb</span> <span class="k">for</span> <span class="n">nb</span> <span class="ow">in</span> <span class="n">str_num</span> <span class="k">if</span> <span class="n">nb</span> <span class="ow">in</span> <span class="s1">&#39;0123456789&#39;</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;0&#39;</span><span class="p">)</span></div>
238
239 <div class="viewcode-block" id="read_config_from_a_file"><a class="viewcode-back" href="../commands/apidoc/src.html#src.read_config_from_a_file">[docs]</a><span class="k">def</span> <span class="nf">read_config_from_a_file</span><span class="p">(</span><span class="n">filePath</span><span class="p">):</span>
240         <span class="k">try</span><span class="p">:</span>
241             <span class="n">cfg_file</span> <span class="o">=</span> <span class="n">pyconf</span><span class="o">.</span><span class="n">Config</span><span class="p">(</span><span class="n">filePath</span><span class="p">)</span>
242         <span class="k">except</span> <span class="n">pyconf</span><span class="o">.</span><span class="n">ConfigError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
243             <span class="k">raise</span> <span class="n">SatException</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">&quot;Error in configuration file: </span><span class="si">%(file)s</span><span class="se">\n</span><span class="s2">  </span><span class="si">%(error)s</span><span class="s2">&quot;</span><span class="p">)</span> <span class="o">%</span> \
244                 <span class="p">{</span> <span class="s1">&#39;file&#39;</span><span class="p">:</span> <span class="n">filePath</span><span class="p">,</span> <span class="s1">&#39;error&#39;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="p">})</span>
245         <span class="k">return</span> <span class="n">cfg_file</span></div>
246
247 <div class="viewcode-block" id="get_tmp_filename"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_tmp_filename">[docs]</a><span class="k">def</span> <span class="nf">get_tmp_filename</span><span class="p">(</span><span class="n">cfg</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
248     <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">cfg</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">tmp_root</span><span class="p">):</span>
249         <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">cfg</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">tmp_root</span><span class="p">)</span>
250
251     <span class="k">return</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">cfg</span><span class="o">.</span><span class="n">VARS</span><span class="o">.</span><span class="n">tmp_root</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
252
253 <span class="c1">##</span>
254 <span class="c1"># Utils class to simplify path manipulations.</span>
255 <div class="viewcode-block" id="Path"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path">[docs]</a><span class="k">class</span> <span class="nc">Path</span><span class="p">:</span>
256     <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
257         <span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
258
259     <span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
260         <span class="k">return</span> <span class="n">Path</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="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">other</span><span class="p">)))</span>
261
262     <span class="k">def</span> <span class="nf">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
263         <span class="k">return</span> <span class="n">Path</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="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">))</span>
264
265     <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
266         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span>
267
268     <span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
269         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">path</span>
270
271 <div class="viewcode-block" id="Path.exists"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.exists">[docs]</a>    <span class="k">def</span> <span class="nf">exists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
272         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">islink</span><span class="p">()</span> <span class="ow">or</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span></div>
273
274 <div class="viewcode-block" id="Path.islink"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.islink">[docs]</a>    <span class="k">def</span> <span class="nf">islink</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
275         <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">islink</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span></div>
276
277 <div class="viewcode-block" id="Path.isdir"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.isdir">[docs]</a>    <span class="k">def</span> <span class="nf">isdir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
278         <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span></div>
279
280 <div class="viewcode-block" id="Path.isfile"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.isfile">[docs]</a>    <span class="k">def</span> <span class="nf">isfile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
281         <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span></div>
282
283 <div class="viewcode-block" id="Path.list"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.list">[docs]</a>    <span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
284         <span class="k">return</span> <span class="p">[</span><span class="n">Path</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)]</span></div>
285
286 <div class="viewcode-block" id="Path.dir"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.dir">[docs]</a>    <span class="k">def</span> <span class="nf">dir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
287         <span class="k">return</span> <span class="n">Path</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">dirname</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">))</span></div>
288
289 <div class="viewcode-block" id="Path.base"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.base">[docs]</a>    <span class="k">def</span> <span class="nf">base</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
290         <span class="k">return</span> <span class="n">Path</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">basename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">))</span></div>
291
292 <div class="viewcode-block" id="Path.make"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.make">[docs]</a>    <span class="k">def</span> <span class="nf">make</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
293         <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>        
294         <span class="k">if</span> <span class="n">mode</span><span class="p">:</span>
295             <span class="n">os</span><span class="o">.</span><span class="n">chmod</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span></div>
296         
297 <div class="viewcode-block" id="Path.chmod"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.chmod">[docs]</a>    <span class="k">def</span> <span class="nf">chmod</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">):</span>
298         <span class="n">os</span><span class="o">.</span><span class="n">chmod</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span></div>
299
300 <div class="viewcode-block" id="Path.rm"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.rm">[docs]</a>    <span class="k">def</span> <span class="nf">rm</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    
301         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">islink</span><span class="p">():</span>
302             <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
303         <span class="k">else</span><span class="p">:</span>
304             <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">onerror</span> <span class="o">=</span> <span class="n">handleRemoveReadonly</span> <span class="p">)</span></div>
305
306 <div class="viewcode-block" id="Path.copy"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">smart</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
307         <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">Path</span><span class="p">):</span>
308             <span class="n">path</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
309
310         <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">islink</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">):</span>
311             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copylink</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
312         <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">):</span>
313             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copydir</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">smart</span><span class="p">)</span>
314         <span class="k">else</span><span class="p">:</span>
315             <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copyfile</span><span class="p">(</span><span class="n">path</span><span class="p">)</span></div>
316
317 <div class="viewcode-block" id="Path.smartcopy"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.smartcopy">[docs]</a>    <span class="k">def</span> <span class="nf">smartcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
318         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span></div>
319
320 <div class="viewcode-block" id="Path.readlink"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.readlink">[docs]</a>    <span class="k">def</span> <span class="nf">readlink</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
321         <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">islink</span><span class="p">():</span>
322             <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">readlink</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
323         <span class="k">else</span><span class="p">:</span>
324             <span class="k">return</span> <span class="kc">False</span></div>
325
326 <div class="viewcode-block" id="Path.symlink"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.symlink">[docs]</a>    <span class="k">def</span> <span class="nf">symlink</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
327         <span class="k">try</span><span class="p">:</span>
328             <span class="n">os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
329             <span class="k">return</span> <span class="kc">True</span>
330         <span class="k">except</span><span class="p">:</span>
331             <span class="k">return</span> <span class="kc">False</span></div>
332
333 <div class="viewcode-block" id="Path.copylink"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.copylink">[docs]</a>    <span class="k">def</span> <span class="nf">copylink</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
334         <span class="k">try</span><span class="p">:</span>
335             <span class="n">os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">readlink</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
336             <span class="k">return</span> <span class="kc">True</span>
337         <span class="k">except</span><span class="p">:</span>
338             <span class="k">return</span> <span class="kc">False</span></div>
339
340 <div class="viewcode-block" id="Path.copydir"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.copydir">[docs]</a>    <span class="k">def</span> <span class="nf">copydir</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">,</span> <span class="n">smart</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
341         <span class="k">try</span><span class="p">:</span>
342             <span class="n">names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list</span><span class="p">()</span>
343
344             <span class="k">if</span> <span class="ow">not</span> <span class="n">dst</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
345                 <span class="n">dst</span><span class="o">.</span><span class="n">make</span><span class="p">()</span>
346
347             <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span>
348                 <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span>
349                     <span class="k">continue</span>
350                 <span class="k">if</span> <span class="n">smart</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;.git&quot;</span><span class="p">,</span> <span class="s2">&quot;CVS&quot;</span><span class="p">,</span> <span class="s2">&quot;.svn&quot;</span><span class="p">]):</span>
351                     <span class="k">continue</span>
352                 <span class="n">srcname</span> <span class="o">=</span> <span class="bp">self</span> <span class="o">+</span> <span class="n">name</span>
353                 <span class="n">dstname</span> <span class="o">=</span> <span class="n">dst</span> <span class="o">+</span> <span class="n">name</span>
354                 <span class="n">srcname</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">dstname</span><span class="p">,</span> <span class="n">smart</span><span class="p">)</span>
355             <span class="k">return</span> <span class="kc">True</span>
356         <span class="k">except</span><span class="p">:</span>
357             <span class="k">return</span> <span class="kc">False</span></div>
358
359 <div class="viewcode-block" id="Path.copyfile"><a class="viewcode-back" href="../commands/apidoc/src.html#src.Path.copyfile">[docs]</a>    <span class="k">def</span> <span class="nf">copyfile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
360         <span class="k">try</span><span class="p">:</span>
361             <span class="n">shutil</span><span class="o">.</span><span class="n">copy2</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
362             <span class="k">return</span> <span class="kc">True</span>
363         <span class="k">except</span><span class="p">:</span>
364             <span class="k">return</span> <span class="kc">False</span></div></div>
365
366 <div class="viewcode-block" id="find_file_in_lpath"><a class="viewcode-back" href="../commands/apidoc/src.html#src.find_file_in_lpath">[docs]</a><span class="k">def</span> <span class="nf">find_file_in_lpath</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">lpath</span><span class="p">,</span> <span class="n">additional_dir</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">):</span>
367     <span class="sd">&quot;&quot;&quot;\</span>
368 <span class="sd">    Find in all the directories in lpath list the file that has the same name</span>
369 <span class="sd">    as file_name. </span>
370 <span class="sd">    If it is found </span>
371 <span class="sd">    then return the full path of the file</span>
372 <span class="sd">    else return False.</span>
373 <span class="sd"> </span>
374 <span class="sd">    The additional_dir (optional) is the name of the directory to add to all </span>
375 <span class="sd">    paths in lpath.</span>
376 <span class="sd">    </span>
377 <span class="sd">    :param file_name str: The file name to search</span>
378 <span class="sd">    :param lpath List: The list of directories where to search</span>
379 <span class="sd">    :param additional_dir str: The name of the additional directory</span>
380 <span class="sd">    :return: the full path of the file or False if not found</span>
381 <span class="sd">    :rtype: str</span>
382 <span class="sd">    &quot;&quot;&quot;</span>
383     <span class="k">for</span> <span class="n">directory</span> <span class="ow">in</span> <span class="n">lpath</span><span class="p">:</span>
384         <span class="n">dir_complete</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">join</span><span class="p">(</span><span class="n">directory</span><span class="p">,</span> <span class="n">additional_dir</span><span class="p">)</span>
385         <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">dir_complete</span><span class="p">):</span>
386             <span class="k">continue</span>
387         <span class="n">l_files</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">dir_complete</span><span class="p">)</span>
388         <span class="k">for</span> <span class="n">file_n</span> <span class="ow">in</span> <span class="n">l_files</span><span class="p">:</span>
389             <span class="k">if</span> <span class="n">file_n</span> <span class="o">==</span> <span class="n">file_name</span><span class="p">:</span>
390                 <span class="k">return</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">dir_complete</span><span class="p">,</span> <span class="n">file_name</span><span class="p">)</span>
391     <span class="k">return</span> <span class="kc">False</span></div>
392
393 <div class="viewcode-block" id="handleRemoveReadonly"><a class="viewcode-back" href="../commands/apidoc/src.html#src.handleRemoveReadonly">[docs]</a><span class="k">def</span> <span class="nf">handleRemoveReadonly</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">exc</span><span class="p">):</span>
394     <span class="n">excvalue</span> <span class="o">=</span> <span class="n">exc</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
395     <span class="k">if</span> <span class="n">func</span> <span class="ow">in</span> <span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">rmdir</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">)</span> <span class="ow">and</span> <span class="n">excvalue</span><span class="o">.</span><span class="n">errno</span> <span class="o">==</span> <span class="n">errno</span><span class="o">.</span><span class="n">EACCES</span><span class="p">:</span>
396         <span class="n">os</span><span class="o">.</span><span class="n">chmod</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">stat</span><span class="o">.</span><span class="n">S_IRWXU</span><span class="o">|</span> <span class="n">stat</span><span class="o">.</span><span class="n">S_IRWXG</span><span class="o">|</span> <span class="n">stat</span><span class="o">.</span><span class="n">S_IRWXO</span><span class="p">)</span> <span class="c1"># 0777</span>
397         <span class="n">func</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
398     <span class="k">else</span><span class="p">:</span>
399         <span class="k">raise</span></div>
400
401 <div class="viewcode-block" id="deepcopy_list"><a class="viewcode-back" href="../commands/apidoc/src.html#src.deepcopy_list">[docs]</a><span class="k">def</span> <span class="nf">deepcopy_list</span><span class="p">(</span><span class="n">input_list</span><span class="p">):</span>
402     <span class="sd">&quot;&quot;&quot;\</span>
403 <span class="sd">    Do a deep copy of a list</span>
404 <span class="sd">    </span>
405 <span class="sd">    :param input_list List: The list to copy</span>
406 <span class="sd">    :return: The copy of the list</span>
407 <span class="sd">    :rtype: List</span>
408 <span class="sd">    &quot;&quot;&quot;</span>
409     <span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
410     <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">input_list</span><span class="p">:</span>
411         <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">elem</span><span class="p">)</span>
412     <span class="k">return</span> <span class="n">res</span></div>
413
414 <div class="viewcode-block" id="remove_item_from_list"><a class="viewcode-back" href="../commands/apidoc/src.html#src.remove_item_from_list">[docs]</a><span class="k">def</span> <span class="nf">remove_item_from_list</span><span class="p">(</span><span class="n">input_list</span><span class="p">,</span> <span class="n">item</span><span class="p">):</span>
415     <span class="sd">&quot;&quot;&quot;\</span>
416 <span class="sd">    Remove all occurences of item from input_list</span>
417 <span class="sd">    </span>
418 <span class="sd">    :param input_list List: The list to modify</span>
419 <span class="sd">    :return: The without any item</span>
420 <span class="sd">    :rtype: List</span>
421 <span class="sd">    &quot;&quot;&quot;</span>
422     <span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
423     <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">input_list</span><span class="p">:</span>
424         <span class="k">if</span> <span class="n">elem</span> <span class="o">==</span> <span class="n">item</span><span class="p">:</span>
425             <span class="k">continue</span>
426         <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">elem</span><span class="p">)</span>
427     <span class="k">return</span> <span class="n">res</span></div>
428
429 <div class="viewcode-block" id="parse_date"><a class="viewcode-back" href="../commands/apidoc/src.html#src.parse_date">[docs]</a><span class="k">def</span> <span class="nf">parse_date</span><span class="p">(</span><span class="n">date</span><span class="p">):</span>
430     <span class="sd">&quot;&quot;&quot;\</span>
431 <span class="sd">    Transform YYYYMMDD_hhmmss into YYYY-MM-DD hh:mm:ss.</span>
432 <span class="sd">    </span>
433 <span class="sd">    :param date str: The date to transform</span>
434 <span class="sd">    :return: The date in the new format</span>
435 <span class="sd">    :rtype: str</span>
436 <span class="sd">    &quot;&quot;&quot;</span>
437     <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">date</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">15</span><span class="p">:</span>
438         <span class="k">return</span> <span class="n">date</span>
439     <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="si">%s</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="si">%s</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="n">date</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">],</span>
440                                  <span class="n">date</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">6</span><span class="p">],</span>
441                                  <span class="n">date</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">8</span><span class="p">],</span>
442                                  <span class="n">date</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">11</span><span class="p">],</span>
443                                  <span class="n">date</span><span class="p">[</span><span class="mi">11</span><span class="p">:</span><span class="mi">13</span><span class="p">],</span>
444                                  <span class="n">date</span><span class="p">[</span><span class="mi">13</span><span class="p">:])</span>
445     <span class="k">return</span> <span class="n">res</span></div>
446
447 <div class="viewcode-block" id="merge_dicts"><a class="viewcode-back" href="../commands/apidoc/src.html#src.merge_dicts">[docs]</a><span class="k">def</span> <span class="nf">merge_dicts</span><span class="p">(</span><span class="o">*</span><span class="n">dict_args</span><span class="p">):</span>
448     <span class="sd">&quot;&quot;&quot;\</span>
449 <span class="sd">    Given any number of dicts, shallow copy and merge into a new dict,</span>
450 <span class="sd">    precedence goes to key value pairs in latter dicts.</span>
451 <span class="sd">    &quot;&quot;&quot;</span>
452     <span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
453     <span class="k">for</span> <span class="n">dictionary</span> <span class="ow">in</span> <span class="n">dict_args</span><span class="p">:</span>
454         <span class="n">result</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">dictionary</span><span class="p">)</span>
455     <span class="k">return</span> <span class="n">result</span></div>
456
457 <div class="viewcode-block" id="replace_in_file"><a class="viewcode-back" href="../commands/apidoc/src.html#src.replace_in_file">[docs]</a><span class="k">def</span> <span class="nf">replace_in_file</span><span class="p">(</span><span class="n">filein</span><span class="p">,</span> <span class="n">strin</span><span class="p">,</span> <span class="n">strout</span><span class="p">):</span>
458     <span class="sd">&quot;&quot;&quot;Replace &lt;strin&gt; by &lt;strout&gt; in file &lt;filein&gt;&quot;&quot;&quot;</span>
459     <span class="n">shutil</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">filein</span><span class="p">,</span> <span class="n">filein</span> <span class="o">+</span> <span class="s2">&quot;_old&quot;</span><span class="p">)</span>
460     <span class="n">fileout</span><span class="o">=</span> <span class="n">filein</span>
461     <span class="n">filein</span> <span class="o">=</span> <span class="n">filein</span> <span class="o">+</span> <span class="s2">&quot;_old&quot;</span>
462     <span class="n">fin</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filein</span><span class="p">,</span> <span class="s2">&quot;r&quot;</span><span class="p">)</span>
463     <span class="n">fout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileout</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
464     <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">fin</span><span class="p">:</span>
465         <span class="n">fout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">strin</span><span class="p">,</span> <span class="n">strout</span><span class="p">))</span></div>
466
467 <div class="viewcode-block" id="get_property_in_product_cfg"><a class="viewcode-back" href="../commands/apidoc/src.html#src.get_property_in_product_cfg">[docs]</a><span class="k">def</span> <span class="nf">get_property_in_product_cfg</span><span class="p">(</span><span class="n">product_cfg</span><span class="p">,</span> <span class="n">pprty</span><span class="p">):</span>
468     <span class="k">if</span> <span class="ow">not</span> <span class="s2">&quot;properties&quot;</span> <span class="ow">in</span> <span class="n">product_cfg</span><span class="p">:</span>
469         <span class="k">return</span> <span class="kc">None</span>
470     <span class="k">if</span> <span class="ow">not</span> <span class="n">pprty</span> <span class="ow">in</span> <span class="n">product_cfg</span><span class="o">.</span><span class="n">properties</span><span class="p">:</span>
471         <span class="k">return</span> <span class="kc">None</span>
472     <span class="k">return</span> <span class="n">product_cfg</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="n">pprty</span><span class="p">]</span></div>
473
474 <div class="viewcode-block" id="activate_mesa_property"><a class="viewcode-back" href="../commands/apidoc/src.html#src.activate_mesa_property">[docs]</a><span class="k">def</span> <span class="nf">activate_mesa_property</span><span class="p">(</span><span class="n">config</span><span class="p">):</span>
475     <span class="sd">&quot;&quot;&quot;Add mesa property into application properties</span>
476 <span class="sd">    </span>
477 <span class="sd">    :param config Config: The global configuration. It must have an application!</span>
478 <span class="sd">    &quot;&quot;&quot;</span>
479     <span class="c1"># Verify the existence of the file</span>
480     <span class="k">if</span> <span class="ow">not</span> <span class="s1">&#39;properties&#39;</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="p">:</span>
481         <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">addMapping</span><span class="p">(</span> <span class="s1">&#39;properties&#39;</span><span class="p">,</span> <span class="n">pyconf</span><span class="o">.</span><span class="n">Mapping</span><span class="p">(),</span> <span class="kc">None</span> <span class="p">)</span>
482     <span class="n">config</span><span class="o">.</span><span class="n">APPLICATION</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">use_mesa</span><span class="o">=</span><span class="s2">&quot;yes&quot;</span></div>
483
484 </pre></div>
485
486           </div>
487         </div>
488       </div>
489       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
490         <div class="sphinxsidebarwrapper">
491             <p class="logo"><a href="../index.html">
492               <img class="logo" src="../_static/sat_v5.0.png" alt="Logo"/>
493             </a></p><div class="relations">
494 <h3>Related Topics</h3>
495 <ul>
496   <li><a href="../index.html">Documentation overview</a><ul>
497   <li><a href="index.html">Module code</a><ul>
498   </ul></li>
499   </ul></li>
500 </ul>
501 </div>
502 <div id="searchbox" style="display: none" role="search">
503   <h3>Quick search</h3>
504     <div class="searchformwrapper">
505     <form class="search" action="../search.html" method="get">
506       <input type="text" name="q" />
507       <input type="submit" value="Go" />
508       <input type="hidden" name="check_keywords" value="yes" />
509       <input type="hidden" name="area" value="default" />
510     </form>
511     </div>
512 </div>
513 <script type="text/javascript">$('#searchbox').show(0);</script>
514         </div>
515       </div>
516       <div class="clearer"></div>
517     </div>
518     <div class="footer">
519       &copy;2018, CEA.
520       
521       |
522       Powered by <a href="http://sphinx-doc.org/">Sphinx 1.7.3</a>
523       &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
524       
525     </div>
526
527     
528
529     
530   </body>
531 </html>