Skip to content
Snippets Groups Projects
helper.html 20.11 KiB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>promod3.core.helper &mdash; ProMod3 1.1.0 documentation</title>
    
    <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../../',
        VERSION:     '1.1.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../../_static/doctools.js"></script>
    <link rel="top" title="ProMod3 1.1.0 documentation" href="../../../index.html" />
    <link rel="up" title="promod3" href="../../promod3.html" />
   
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">

  </head>
  <body role="document">  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <h1>Source code for promod3.core.helper</h1><div class="highlight"><pre>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Uncategorised functions which may come handy at several places.</span>
<span class="sd">&quot;&quot;&quot;</span>

<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">ost</span>

<div class="viewcode-block" id="MsgErrorAndExit"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.MsgErrorAndExit">[docs]</a><span class="k">def</span> <span class="nf">MsgErrorAndExit</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">):</span>
    <span class="sd">&#39;&#39;&#39;</span>
<span class="sd">    Send a messages to the |ost_s| :ost_docs:`error log &lt;base/logging/&gt;` and</span>
<span class="sd">    exit the Python interpreter.</span>

<span class="sd">    :param msg: The message.</span>
<span class="sd">    :type msg: :class:`str`</span>

<span class="sd">    :param exit_status: Exit code, ends up in ``$?`` in the shell. ``0`` is</span>
<span class="sd">                      traditionally reserved to successful commands.</span>
<span class="sd">    :type exit_status: :class:`int`</span>

<span class="sd">    :returns: No return value, exits script with value ``exit_status``.</span>
<span class="sd">    &#39;&#39;&#39;</span>
    <span class="n">ost</span><span class="o">.</span><span class="n">LogError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">exit_status</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="FileExists"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileExists">[docs]</a><span class="k">def</span> <span class="nf">FileExists</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
    <span class="sd">&#39;&#39;&#39;</span>
<span class="sd">    Checks if a file exists, terminates if not. The error message displayed is</span>
<span class="sd">    fixed and only needs a *prefix* describing the specimen of file.</span>
<span class="sd">    :param prefix: String to put in front of the failure-message</span>
<span class="sd">                   &quot;file does not exist: ``file``&quot;.</span>
<span class="sd">    :type prefix: :class:`str`</span>

<span class="sd">    :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span>
<span class="sd">           shell. ``0`` is traditionally reserved to successful commands.</span>
<span class="sd">    :type exit_status: :class:`int`</span>

<span class="sd">    :param file: Path including file name to be checked.</span>
<span class="sd">    :type file: :class:`str`</span>

<span class="sd">    :returns: No return value, exits script with value ``exit_status`` if file</span>
<span class="sd">              is missing.</span>
<span class="sd">    &#39;&#39;&#39;</span>
    <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">filename</span><span class="p">):</span>
        <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file does not exist: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">filename</span><span class="p">),</span>
                        <span class="n">exit_status</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="FileGzip"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileGzip">[docs]</a><span class="k">def</span> <span class="nf">FileGzip</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">allowed</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
    <span class="sd">&#39;&#39;&#39;</span>
<span class="sd">    See if a file is gzipped or not. This is basically done by checking for a</span>
<span class="sd">    &quot;gz&quot; suffix. May also be used to verify that a file is not compressed where</span>
<span class="sd">    it does not apply. That is where *allowed* comes in. If &quot;gz&quot; is not allowed,</span>
<span class="sd">    terminates the script on gzip files.</span>

<span class="sd">    :param prefix: String to put in front of the failure-message where gzip</span>
<span class="sd">                   files are not allowed.</span>
<span class="sd">    :type prefix: :class:`str`</span>

<span class="sd">    :param exit_status: Exit code on gzip files to be avoided, ends up in</span>
<span class="sd">                        ``$?`` in the shell. ``0`` is traditionally reserved to</span>
<span class="sd">                        successful commands.</span>
<span class="sd">    :type exit_status: :class:`int`</span>

<span class="sd">    :param filename: Path including file name to be checked.</span>
<span class="sd">    :type filename: :class:`str`</span>

<span class="sd">    :param allowed: Set to ``False`` if gzipped files are not allowed. Then the</span>
<span class="sd">                    script will terminate if a gzip file is found.</span>
<span class="sd">    :type allowed: :class:`bool`</span>

<span class="sd">    :returns: Flag to indicate if file is gzipped (:class:`bool`).</span>
<span class="sd">    &#39;&#39;&#39;</span>
    <span class="n">_</span><span class="p">,</span> <span class="n">fileext</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">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
    <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">False</span>
    <span class="k">if</span> <span class="n">fileext</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;.gz&#39;</span><span class="p">:</span>
        <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">True</span>
        <span class="k">if</span> <span class="ow">not</span> <span class="n">allowed</span><span class="p">:</span>
            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file in Gzip not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
                                                                     <span class="n">filename</span><span class="p">),</span>
                            <span class="n">exit_status</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">is_gz</span>
</div>
<div class="viewcode-block" id="FileExtension"><a class="viewcode-back" href="../../../core/helper.html#promod3.core.helper.FileExtension">[docs]</a><span class="k">def</span> <span class="nf">FileExtension</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">exit_status</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">extensions</span><span class="p">,</span> <span class="n">gzip</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
    <span class="sd">&#39;&#39;&#39;</span>
<span class="sd">    Checks a file to carry a known extension given by a list of strings. Since</span>
<span class="sd">    files are very often compressed these days, an additional &quot;gz&quot; suffix can be</span>
<span class="sd">    tracked automatically by this function. Thus, the list of *extensions* only</span>
<span class="sd">    needs to contain what you are really looking for, e.g. (&quot;pdb&quot;) instead of</span>
<span class="sd">    (&quot;pdb&quot;, &quot;pdb.gz&quot;). The *gzip* flag also determines the output of this</span>
<span class="sd">    function. If enabled, a triple is returned: name of the file without</span>
<span class="sd">    extension, its extension and a Boolean to tell whether the file carries the</span>
<span class="sd">    gzip extension or not. If *gzip* detection is turned of, only a tuple is</span>
<span class="sd">    returned: file name  and extension. If the tested file name has an</span>
<span class="sd">    unrecognised extension, this function terminates the script.</span>

<span class="sd">    :param prefix: String to put in front of the failure-message</span>
<span class="sd">                   &quot;file extension not supported: ``filename``&quot;.</span>
<span class="sd">    :type prefix: :class:`str`</span>
<span class="sd">    :param exit_status: Exit code on missing file, ends up in ``$?`` in the</span>
<span class="sd">           shell. ``0`` is traditionally reserved to successful commands.</span>
<span class="sd">    :type exit_status: :class:`int`</span>

<span class="sd">    :param filename: Path including file name to be checked.</span>
<span class="sd">    :type filename: :class:`str`</span>

<span class="sd">    :param extensions: List of strings without a leading &quot;.&quot;.</span>
<span class="sd">    :type extensions: :class:`list`</span>

<span class="sd">    :param gzip: Indicates whether to check for an additional &quot;gz&quot; extension.</span>
<span class="sd">    :type gzip: :class:`bool`</span>

<span class="sd">    :returns: (base name of ``filename`` (:class:`str`), extension of file</span>
<span class="sd">              without a &quot;.gz&quot; (:class:`str`), flag to indicate an additional</span>
<span class="sd">              &quot;.gz&quot; (:class:`bool`)) **if** ``gzip`` is set, (base name of</span>
<span class="sd">              ``filename`` (:class:`str`), extension of file) **if not**.</span>
<span class="sd">    &#39;&#39;&#39;</span>
    <span class="n">pfilename</span><span class="p">,</span> <span class="n">fileext</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">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
    <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">False</span>
    <span class="k">if</span> <span class="n">fileext</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;.gz&#39;</span><span class="p">:</span>
        <span class="n">is_gz</span> <span class="o">=</span> <span class="bp">True</span>
        <span class="n">pfilename</span><span class="p">,</span> <span class="n">fileext</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">splitext</span><span class="p">(</span><span class="n">pfilename</span><span class="p">)</span>
        <span class="k">if</span> <span class="ow">not</span> <span class="n">gzip</span><span class="p">:</span>
            <span class="n">extension_string</span> <span class="o">=</span> <span class="s">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
                                                                      <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
                            <span class="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
                            <span class="n">exit_status</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="s">&#39;&#39;</span><span class="p">:</span>
        <span class="n">extension_string</span> <span class="o">=</span> <span class="s">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
            <span class="n">extension_string</span> <span class="o">+=</span> <span class="s">&#39;, &#39;</span> <span class="o">+</span> <span class="s">&#39;.gz, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;.gz&#39;</span>
            <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
                                                                      <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
                            <span class="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
                            <span class="n">exit_status</span><span class="p">)</span>
    <span class="n">fileext</span> <span class="o">=</span> <span class="n">fileext</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
    <span class="k">for</span> <span class="n">ext</span> <span class="ow">in</span> <span class="n">extensions</span><span class="p">:</span>
        <span class="k">if</span> <span class="n">fileext</span> <span class="o">==</span> <span class="n">ext</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
            <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
                <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">basename</span><span class="p">(</span><span class="n">pfilename</span><span class="p">),</span> <span class="n">fileext</span><span class="p">,</span> <span class="n">is_gz</span>
            <span class="k">else</span><span class="p">:</span>
                <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">basename</span><span class="p">(</span><span class="n">pfilename</span><span class="p">),</span> <span class="n">fileext</span>
    <span class="n">extension_string</span> <span class="o">=</span> <span class="s">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">gzip</span><span class="p">:</span>
        <span class="n">extension_string</span> <span class="o">+=</span> <span class="s">&#39;, &#39;</span> <span class="o">+</span> <span class="s">&#39;.gz, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">extensions</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;.gz&#39;</span>
    <span class="n">MsgErrorAndExit</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> file extension not supported: </span><span class="si">%s</span><span class="s">. &#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span>
                                                               <span class="n">filename</span><span class="p">)</span><span class="o">+</span>
                    <span class="s">&#39;Allowed extensions are: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">extension_string</span><span class="p">,</span>
                    <span class="n">exit_status</span><span class="p">)</span>
</div>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span>
    <span class="s">&#39;MsgErrorAndExit&#39;</span><span class="p">,</span>
    <span class="s">&#39;FileExists&#39;</span><span class="p">,</span>
    <span class="s">&#39;FileExtension&#39;</span><span class="p">,</span>
<span class="p">)</span>

<span class="c">#  LocalWords:  gzipped gz param str gzip bool</span>
</pre></div>

          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper"><div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="../../../index.html">Documentation overview</a><ul>
  <li><a href="../../index.html">Module code</a><ul>
  <li><a href="../../promod3.html">promod3</a><ul>
  </ul></li>
  </ul></li>
  </ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="../../../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      &copy;2017, ProMod3 authors.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.3.1</a>
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.6</a>
      
    </div>

    

    
  </body>
</html>