2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
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 — 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" />
20 <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
23 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
28 <div class="document">
29 <div class="documentwrapper">
30 <div class="bodywrapper">
31 <div class="body" role="main">
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>
53 <span class="sd">"""\</span>
54 <span class="sd">initial imports and utilities methods for salomeTools</span>
55 <span class="sd">"""</span>
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>
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>
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">"Windows"</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>
81 <span class="n">OK_STATUS</span> <span class="o">=</span> <span class="s2">"OK"</span>
82 <span class="n">KO_STATUS</span> <span class="o">=</span> <span class="s2">"KO"</span>
83 <span class="n">NA_STATUS</span> <span class="o">=</span> <span class="s2">"NA"</span>
84 <span class="n">KNOWNFAILURE_STATUS</span> <span class="o">=</span> <span class="s2">"KF"</span>
85 <span class="n">TIMEOUT_STATUS</span> <span class="o">=</span> <span class="s2">"TIMEOUT"</span>
87 <span class="n">CONFIG_FILENAME</span> <span class="o">=</span> <span class="s2">"sat-config.pyconf"</span>
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">"""rename Exception Class"""</span>
91 <span class="k">pass</span></div>
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">"""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"> """</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>
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">"""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 'common.pyconf.Config': The config.</span>
105 <span class="sd"> """</span>
106 <span class="k">if</span> <span class="s1">'APPLICATION'</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">"An APPLICATION is required. Use 'config --list' to get"</span>
108 <span class="s2">" the list of available applications.</span><span class="se">\n</span><span class="s2">"</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>
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">"""\</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 'common.pyconf.Config': The config.</span>
119 <span class="sd"> """</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">'profile'</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">"A profile section is required in your application.</span><span class="se">\n</span><span class="s2">"</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>
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">'APPLICATION'</span> <span class="ow">in</span> <span class="n">config</span></div>
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">"""\</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 'common.pyconf.Config': 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"> """</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>
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">"""\</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"> """</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">" "</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">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span></div>
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">"""\</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"> """</span>
170 <span class="k">if</span> <span class="s2">"base"</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">"data"</span><span class="p">,</span>
173 <span class="s2">"local.pyconf"</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">"Please define a base path in the file </span><span class="si">%s</span><span class="s2">"</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>
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>
179 <span class="k">return</span> <span class="n">base_path</span></div>
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">"""\</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"> """</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">'profile'</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">'launcher_name'</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">'salome'</span>
195 <span class="k">return</span> <span class="n">launcher_name</span></div>
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">"""\</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"> """</span>
205 <span class="k">if</span> <span class="s2">"log_dir"</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">"data"</span><span class="p">,</span>
208 <span class="s2">"local.pyconf"</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">"Please define a log_dir in the file </span><span class="si">%s</span><span class="s2">"</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>
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>
214 <span class="k">return</span> <span class="n">log_dir_path</span></div>
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">'version_salome'</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">"KERNEL"</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">"bin"</span><span class="p">,</span>
224 <span class="s2">"salome"</span><span class="p">,</span>
225 <span class="s2">"VERSION"</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>
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>
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>
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">''</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">'0123456789'</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">'0'</span><span class="p">)</span></div>
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">"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">"</span><span class="p">)</span> <span class="o">%</span> \
244 <span class="p">{</span> <span class="s1">'file'</span><span class="p">:</span> <span class="n">filePath</span><span class="p">,</span> <span class="s1">'error'</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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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">".git"</span><span class="p">,</span> <span class="s2">"CVS"</span><span class="p">,</span> <span class="s2">".svn"</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>
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>
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">""</span><span class="p">):</span>
367 <span class="sd">"""\</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"> """</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>
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>
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">"""\</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"> """</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>
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">"""\</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"> """</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>
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">"""\</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"> """</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">"</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">"</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>
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">"""\</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"> """</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>
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">"""Replace <strin> by <strout> in file <filein>"""</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">"_old"</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">"_old"</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">"r"</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">"w"</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>
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">"properties"</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>
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">"""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"> """</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">'properties'</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">'properties'</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">"yes"</span></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>
496 <li><a href="../index.html">Documentation overview</a><ul>
497 <li><a href="index.html">Module code</a><ul>
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" />
513 <script type="text/javascript">$('#searchbox').show(0);</script>
516 <div class="clearer"></div>
522 Powered by <a href="http://sphinx-doc.org/">Sphinx 1.7.3</a>
523 & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>