source: sphinxdocs/build/html/_modules/GSASIIpath.html @ 1709

Last change on this file since 1709 was 1709, checked in by toby, 8 years ago

change sphinx docs links; rebuild & fixing minor formatting

  • Property svn:mime-type set to text/html
File size: 79.4 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>GSASIIpath &mdash; GSAS-II 0.2.0 documentation</title>
10   
11    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../',
17        VERSION:     '0.2.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../_static/jquery.js"></script>
24    <script type="text/javascript" src="../_static/underscore.js"></script>
25    <script type="text/javascript" src="../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="GSAS-II 0.2.0 documentation" href="../index.html" />
28    <link rel="up" title="Module code" href="index.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
41          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for GSASIIpath</h1><div class="highlight"><pre>
51<span class="c"># -*- coding: utf-8 -*-</span>
52<span class="sd">&#39;&#39;&#39;</span>
53<span class="sd">*GSASIIpath: locations &amp; updates*</span>
54<span class="sd">---------------------------------</span>
55
56<span class="sd">Routines for dealing with file locations, etc.</span>
57
58<span class="sd">Determines the location of the compiled (.pyd or .so) libraries.</span>
59
60<span class="sd">Interfaces with subversion (svn): </span>
61<span class="sd">Determine the subversion release number by determining the highest version number</span>
62<span class="sd">where :func:`SetVersionNumber` is called (best done in every GSASII file).</span>
63<span class="sd">Other routines will update GSASII from the subversion server if svn can be</span>
64<span class="sd">found.</span>
65
66<span class="sd">Accesses configuration options, as defined in config.py</span>
67<span class="sd">&#39;&#39;&#39;</span>
68
69<span class="kn">import</span> <span class="nn">os</span>
70<span class="kn">import</span> <span class="nn">sys</span>
71<span class="kn">import</span> <span class="nn">platform</span>
72<span class="c"># determine a binary path for the pyd files based on the host OS and the python version,  </span>
73<span class="c"># path is relative to location of the script that is called as well as this file</span>
74<span class="c"># this must be imported before anything that imports any .pyd/.so file for GSASII</span>
75<span class="n">bindir</span> <span class="o">=</span> <span class="bp">None</span>
76<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&quot;win32&quot;</span><span class="p">:</span>
77    <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">architecture</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;64bit&#39;</span><span class="p">:</span>
78        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binwin64-</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
79    <span class="k">else</span><span class="p">:</span>
80        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binwin</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
81<span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&quot;darwin&quot;</span><span class="p">:</span>
82    <span class="kn">import</span> <span class="nn">platform</span>
83    <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">architecture</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;64bit&#39;</span><span class="p">:</span>
84        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binmac64-</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
85    <span class="k">else</span><span class="p">:</span>
86        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binmac</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
87    <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">mac_ver</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;10.5.&#39;</span><span class="p">):</span>
88        <span class="n">bindir</span> <span class="o">+=</span> <span class="s">&#39;_10.5&#39;</span>
89<span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&quot;linux2&quot;</span><span class="p">:</span>
90    <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">architecture</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;64bit&#39;</span><span class="p">:</span>
91        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binlinux64-</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
92    <span class="k">else</span><span class="p">:</span>
93        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;binlinux</span><span class="si">%d</span><span class="s">.</span><span class="si">%d</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
94<span class="k">for</span> <span class="n">loc</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">[</span><span class="mi">0</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">]):</span>
95    <span class="k">if</span> <span class="n">bindir</span><span class="p">:</span>
96        <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">exists</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="n">loc</span><span class="p">,</span><span class="n">bindir</span><span class="p">))</span> <span class="ow">and</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">loc</span><span class="p">,</span><span class="n">bindir</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span> 
97            <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</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="n">loc</span><span class="p">,</span><span class="n">bindir</span><span class="p">))</span>
98        <span class="c"># is there a bin directory? (created by a local compile), if so put</span>
99        <span class="c"># that at the top of the path</span>
100    <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">exists</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="n">loc</span><span class="p">,</span><span class="s">&#39;bin&#39;</span><span class="p">))</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</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="n">loc</span><span class="p">,</span><span class="s">&#39;bin&#39;</span><span class="p">)):</span>
101        <span class="n">bindir</span> <span class="o">=</span> <span class="s">&#39;bin&#39;</span>
102        <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">join</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span><span class="s">&#39;bin&#39;</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span> 
103            <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</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="n">loc</span><span class="p">,</span><span class="n">bindir</span><span class="p">))</span>
104<span class="k">print</span> <span class="s">&#39;GSAS-II binary directory: &#39;</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="n">loc</span><span class="p">,</span><span class="n">bindir</span><span class="p">)</span>
105<span class="k">if</span> <span class="n">bindir</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
106    <span class="k">raise</span> <span class="ne">Exception</span><span class="p">,</span><span class="s">&quot;**** ERROR GSAS-II binary libraries not found, GSAS-II fails ****&quot;</span>
107<span class="c"># add the data import and export directory to the search path</span>
108<span class="n">path2GSAS2</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">dirname</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">realpath</span><span class="p">(</span><span class="n">__file__</span><span class="p">))</span> <span class="c"># location of this file; save before any changes in pwd</span>
109<span class="n">newpath</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">path2GSAS2</span><span class="p">,</span><span class="s">&#39;imports&#39;</span><span class="p">)</span>
110<span class="k">if</span> <span class="n">newpath</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">newpath</span><span class="p">)</span>
111<span class="n">newpath</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">path2GSAS2</span><span class="p">,</span><span class="s">&#39;exports&#39;</span><span class="p">)</span>
112<span class="k">if</span> <span class="n">newpath</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">newpath</span><span class="p">)</span>
113
114<span class="c"># setup read of config.py, if present</span>
115<span class="k">try</span><span class="p">:</span>
116    <span class="kn">import</span> <span class="nn">config</span>
117    <span class="n">configDict</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">__dict__</span>
118    <span class="kn">import</span> <span class="nn">inspect</span>
119    <span class="n">vals</span> <span class="o">=</span> <span class="p">[</span><span class="bp">True</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getmembers</span><span class="p">(</span><span class="n">config</span><span class="p">)</span> <span class="k">if</span> <span class="s">&#39;__&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span>
120    <span class="k">print</span> <span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">vals</span><span class="p">))</span><span class="o">+</span><span class="s">&#39; values read from config file &#39;</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">__file__</span><span class="p">)</span>
121<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
122    <span class="n">configDict</span> <span class="o">=</span> <span class="p">{}</span>
123   
124<div class="viewcode-block" id="GetConfigValue"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.GetConfigValue">[docs]</a><span class="k">def</span> <span class="nf">GetConfigValue</span><span class="p">(</span><span class="n">key</span><span class="p">,</span><span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
125    <span class="sd">&#39;&#39;&#39;Return the configuration file value for key or a default value if not present</span>
126<span class="sd">    </span>
127<span class="sd">    :param str key: a value to be found in the configuration (config.py) file</span>
128<span class="sd">    :param default: a value to be supplied is none is in the config file or</span>
129<span class="sd">      the config file is not found. Defaults to None</span>
130<span class="sd">    :returns: the value found or the default.</span>
131<span class="sd">    &#39;&#39;&#39;</span>
132    <span class="k">return</span> <span class="n">configDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span><span class="n">default</span><span class="p">)</span>
133
134<span class="c"># routines for looking a version numbers in files</span></div>
135<span class="n">version</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
136<div class="viewcode-block" id="SetVersionNumber"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.SetVersionNumber">[docs]</a><span class="k">def</span> <span class="nf">SetVersionNumber</span><span class="p">(</span><span class="n">RevString</span><span class="p">):</span>
137    <span class="sd">&#39;&#39;&#39;Set the subversion version number</span>
138
139<span class="sd">    :param str RevString: something like &quot;$Revision: 1701 $&quot;</span>
140<span class="sd">      that is set by subversion when the file is retrieved from subversion.</span>
141
142<span class="sd">    Place ``GSASIIpath.SetVersionNumber(&quot;$Revision: 1701 $&quot;)`` in every python</span>
143<span class="sd">    file.</span>
144<span class="sd">    &#39;&#39;&#39;</span>
145    <span class="k">try</span><span class="p">:</span>
146        <span class="n">RevVersion</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">RevString</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;:&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span>
147        <span class="k">global</span> <span class="n">version</span>
148        <span class="n">version</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">version</span><span class="p">,</span><span class="n">RevVersion</span><span class="p">)</span>
149    <span class="k">except</span><span class="p">:</span>
150        <span class="k">pass</span>
151        </div>
152<div class="viewcode-block" id="GetVersionNumber"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.GetVersionNumber">[docs]</a><span class="k">def</span> <span class="nf">GetVersionNumber</span><span class="p">():</span>
153    <span class="sd">&#39;&#39;&#39;Return the maximum version number seen in :func:`SetVersionNumber`</span>
154<span class="sd">    &#39;&#39;&#39;</span>
155    <span class="k">return</span> <span class="n">version</span>
156</div>
157<div class="viewcode-block" id="LoadConfigFile"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.LoadConfigFile">[docs]</a><span class="k">def</span> <span class="nf">LoadConfigFile</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
158    <span class="sd">&#39;&#39;&#39;Read a GSAS-II configuration file.</span>
159<span class="sd">    Comments (starting with &quot;%&quot;) are removed, as are empty lines</span>
160<span class="sd">    </span>
161<span class="sd">    :param str filename: base file name (such as &#39;file.dat&#39;). Files with this name</span>
162<span class="sd">      are located from the path and the contents of each are concatenated.</span>
163<span class="sd">    :returns: a list containing each non-empty (after removal of comments) line</span>
164<span class="sd">      found in every matching config file.</span>
165<span class="sd">    &#39;&#39;&#39;</span>
166    <span class="n">info</span> <span class="o">=</span> <span class="p">[]</span>
167    <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
168        <span class="n">fil</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">path</span><span class="p">,</span><span class="n">filename</span><span class="p">)</span>
169        <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">fil</span><span class="p">):</span> <span class="k">continue</span>
170        <span class="k">try</span><span class="p">:</span>
171            <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
172            <span class="n">fp</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fil</span><span class="p">,</span><span class="s">&#39;r&#39;</span><span class="p">)</span>
173            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">fp</span><span class="p">:</span>
174                <span class="n">expr</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;#&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
175                <span class="k">if</span> <span class="n">expr</span><span class="p">:</span>
176                    <span class="n">info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expr</span><span class="p">)</span>
177                    <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
178            <span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="s">&#39; lines read from config file &#39;</span><span class="o">+</span><span class="n">fil</span><span class="p">)</span>
179        <span class="k">finally</span><span class="p">:</span>
180            <span class="n">fp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
181    <span class="k">return</span> <span class="n">info</span>
182
183
184<span class="c"># routines to interface with subversion</span></div>
185<div class="viewcode-block" id="whichsvn"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.whichsvn">[docs]</a><span class="k">def</span> <span class="nf">whichsvn</span><span class="p">():</span>
186    <span class="sd">&#39;&#39;&#39;Returns a path to the subversion exe file, if any is found.</span>
187<span class="sd">    Searches the current path as well as subdirectory &quot;svn&quot; and</span>
188<span class="sd">    &quot;svn/bin&quot; in the location of the GSASII source files.</span>
189
190<span class="sd">    :returns: None if svn is not found or an absolute path to the subversion</span>
191<span class="sd">      executable file.</span>
192<span class="sd">    &#39;&#39;&#39;</span>
193    <span class="k">def</span> <span class="nf">is_exe</span><span class="p">(</span><span class="n">fpath</span><span class="p">):</span>
194        <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="n">fpath</span><span class="p">)</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">fpath</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">X_OK</span><span class="p">)</span>
195    <span class="n">svnprog</span> <span class="o">=</span> <span class="s">&#39;svn&#39;</span>
196    <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&quot;win32&quot;</span><span class="p">:</span> <span class="n">svnprog</span> <span class="o">+=</span> <span class="s">&#39;.exe&#39;</span>
197    <span class="n">pathlist</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s">&quot;PATH&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">)</span>
198    <span class="n">pathlist</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;svn&#39;</span><span class="p">))</span>
199    <span class="n">pathlist</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</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="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;svn&#39;</span><span class="p">,</span><span class="s">&#39;bin&#39;</span><span class="p">))</span>
200    <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">pathlist</span><span class="p">:</span>
201        <span class="n">exe_file</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">path</span><span class="p">,</span> <span class="n">svnprog</span><span class="p">)</span>
202        <span class="k">if</span> <span class="n">is_exe</span><span class="p">(</span><span class="n">exe_file</span><span class="p">):</span>
203            <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">abspath</span><span class="p">(</span><span class="n">exe_file</span><span class="p">)</span>
204</div>
205<div class="viewcode-block" id="svnVersion"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnVersion">[docs]</a><span class="k">def</span> <span class="nf">svnVersion</span><span class="p">():</span>
206    <span class="sd">&#39;&#39;&#39;Get the version number of the current subversion executable</span>
207
208<span class="sd">    :returns: a string with a version number such as &quot;1.6.6&quot; or None if</span>
209<span class="sd">      subversion is not found.</span>
210
211<span class="sd">    &#39;&#39;&#39;</span>
212    <span class="kn">import</span> <span class="nn">subprocess</span>
213    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
214    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
215
216    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;--version&#39;</span><span class="p">,</span><span class="s">&#39;--quiet&#39;</span><span class="p">]</span>
217    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span>
218                         <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
219    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
220    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
221        <span class="k">print</span> <span class="s">&#39;subversion error!</span><span class="se">\n</span><span class="s">out=&#39;</span><span class="p">,</span><span class="n">out</span>
222        <span class="k">print</span> <span class="s">&#39;err=&#39;</span><span class="p">,</span><span class="n">err</span>
223        <span class="k">return</span> <span class="bp">None</span>
224    <span class="k">return</span> <span class="n">out</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
225</div>
226<div class="viewcode-block" id="svnVersionNumber"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnVersionNumber">[docs]</a><span class="k">def</span> <span class="nf">svnVersionNumber</span><span class="p">():</span>
227    <span class="sd">&#39;&#39;&#39;Get the version number of the current subversion executable</span>
228
229<span class="sd">    :returns: a fractional version number such as 1.6 or None if</span>
230<span class="sd">      subversion is not found.</span>
231
232<span class="sd">    &#39;&#39;&#39;</span>
233    <span class="n">ver</span> <span class="o">=</span> <span class="n">svnVersion</span><span class="p">()</span>
234    <span class="k">if</span> <span class="ow">not</span> <span class="n">ver</span><span class="p">:</span> <span class="k">return</span> 
235    <span class="n">M</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">svnVersion</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;.&#39;</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span>
236    <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">M</span><span class="p">)</span><span class="o">+</span><span class="nb">int</span><span class="p">(</span><span class="n">m</span><span class="p">)</span><span class="o">/</span><span class="mf">10.</span>
237</div>
238<div class="viewcode-block" id="svnGetLog"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnGetLog">[docs]</a><span class="k">def</span> <span class="nf">svnGetLog</span><span class="p">(</span><span class="n">fpath</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">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="n">version</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
239    <span class="sd">&#39;&#39;&#39;Get the revision log information for a specific version of the specified package</span>
240
241<span class="sd">    :param str fpath: path to repository dictionary, defaults to directory where</span>
242<span class="sd">       the current file is located.</span>
243<span class="sd">    :param int version: the version number to be looked up or None (default)</span>
244<span class="sd">       for the latest version.</span>
245
246<span class="sd">    :returns: a dictionary with keys (one hopes) &#39;author&#39;, &#39;date&#39;, &#39;msg&#39;, and &#39;revision&#39;</span>
247
248<span class="sd">    &#39;&#39;&#39;</span>
249    <span class="kn">import</span> <span class="nn">subprocess</span>
250    <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">ET</span>
251    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
252    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
253    <span class="k">if</span> <span class="n">version</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
254        <span class="n">vstr</span> <span class="o">=</span> <span class="s">&#39;-r&#39;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
255    <span class="k">else</span><span class="p">:</span>
256        <span class="n">vstr</span> <span class="o">=</span> <span class="s">&#39;-rHEAD&#39;</span>
257
258    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;log&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="s">&#39;--xml&#39;</span><span class="p">,</span><span class="n">vstr</span><span class="p">]</span>
259    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span>
260                         <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
261    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
262    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
263        <span class="k">print</span> <span class="s">&#39;out=&#39;</span><span class="p">,</span><span class="n">out</span>
264        <span class="k">print</span> <span class="s">&#39;err=&#39;</span><span class="p">,</span><span class="n">err</span>
265        <span class="k">return</span> <span class="bp">None</span>
266    <span class="n">x</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
267    <span class="n">d</span> <span class="o">=</span> <span class="p">{}</span>
268    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s">&#39;logentry&#39;</span><span class="p">):</span>
269        <span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;revision&#39;</span><span class="p">:</span><span class="n">i</span><span class="o">.</span><span class="n">attrib</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;revision&#39;</span><span class="p">,</span><span class="s">&#39;?&#39;</span><span class="p">)}</span>
270        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">i</span><span class="p">:</span>
271            <span class="n">d</span><span class="p">[</span><span class="n">j</span><span class="o">.</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="n">j</span><span class="o">.</span><span class="n">text</span>
272        <span class="k">break</span> <span class="c"># only need the first</span>
273    <span class="k">return</span> <span class="n">d</span>
274</div>
275<div class="viewcode-block" id="svnGetRev"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnGetRev">[docs]</a><span class="k">def</span> <span class="nf">svnGetRev</span><span class="p">(</span><span class="n">fpath</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">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="n">local</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
276    <span class="sd">&#39;&#39;&#39;Obtain the version number for the either the last update of the local version</span>
277<span class="sd">    or contacts the subversion server to get the latest update version (# of Head).</span>
278
279<span class="sd">    :param str fpath: path to repository dictionary, defaults to directory where</span>
280<span class="sd">       the current file is located</span>
281<span class="sd">    :param bool local: determines the type of version number, where</span>
282<span class="sd">       True (default): returns the latest installed update </span>
283<span class="sd">       False: returns the version number of Head on the server</span>
284
285<span class="sd">    :Returns: the version number as an str or </span>
286<span class="sd">       None if there is a subversion error (likely because the path is</span>
287<span class="sd">       not a repository or svn is not found)</span>
288<span class="sd">    &#39;&#39;&#39;</span>
289
290    <span class="kn">import</span> <span class="nn">subprocess</span>
291    <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">ET</span>
292    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
293    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
294    <span class="k">if</span> <span class="n">local</span><span class="p">:</span>
295        <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;info&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="s">&#39;--xml&#39;</span><span class="p">]</span>
296    <span class="k">else</span><span class="p">:</span>
297        <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;info&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="s">&#39;--xml&#39;</span><span class="p">,</span><span class="s">&#39;-rHEAD&#39;</span><span class="p">]</span>
298    <span class="k">if</span> <span class="n">svnVersionNumber</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mf">1.6</span><span class="p">:</span>
299        <span class="n">cmd</span> <span class="o">+=</span> <span class="p">[</span><span class="s">&#39;--non-interactive&#39;</span><span class="p">,</span> <span class="s">&#39;--trust-server-cert&#39;</span><span class="p">]</span>
300    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
301    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
302    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
303        <span class="k">print</span> <span class="s">&#39;svn failed</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">,</span><span class="n">out</span>
304        <span class="k">print</span> <span class="s">&#39;err=&#39;</span><span class="p">,</span><span class="n">err</span>
305        <span class="k">return</span> <span class="bp">None</span>
306    <span class="n">x</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
307    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s">&#39;entry&#39;</span><span class="p">):</span>
308        <span class="n">rev</span> <span class="o">=</span> <span class="n">i</span><span class="o">.</span><span class="n">attrib</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;revision&#39;</span><span class="p">)</span>
309        <span class="k">if</span> <span class="n">rev</span><span class="p">:</span> <span class="k">return</span> <span class="n">rev</span>
310</div>
311<div class="viewcode-block" id="svnFindLocalChanges"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnFindLocalChanges">[docs]</a><span class="k">def</span> <span class="nf">svnFindLocalChanges</span><span class="p">(</span><span class="n">fpath</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">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">]):</span>
312    <span class="sd">&#39;&#39;&#39;Returns a list of files that were changed locally. If no files are changed,</span>
313<span class="sd">       the list has length 0</span>
314
315<span class="sd">    :param fpath: path to repository dictionary, defaults to directory where</span>
316<span class="sd">       the current file is located</span>
317
318<span class="sd">    :returns: None if there is a subversion error (likely because the path is</span>
319<span class="sd">       not a repository or svn is not found)</span>
320
321<span class="sd">    &#39;&#39;&#39;</span>
322    <span class="kn">import</span> <span class="nn">subprocess</span>
323    <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">ET</span>
324    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
325    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
326    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;status&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="s">&#39;--xml&#39;</span><span class="p">]</span>
327    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span>
328                         <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
329    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
330    <span class="k">if</span> <span class="n">err</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span>
331    <span class="n">x</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
332    <span class="n">changed</span> <span class="o">=</span> <span class="p">[]</span>
333    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s">&#39;entry&#39;</span><span class="p">):</span>
334        <span class="k">if</span> <span class="n">i</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;wc-status&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">attrib</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;item&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s">&#39;modified&#39;</span><span class="p">:</span> 
335            <span class="n">changed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="o">.</span><span class="n">attrib</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;path&#39;</span><span class="p">))</span>
336    <span class="k">return</span> <span class="n">changed</span>
337</div>
338<div class="viewcode-block" id="svnUpdateDir"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnUpdateDir">[docs]</a><span class="k">def</span> <span class="nf">svnUpdateDir</span><span class="p">(</span><span class="n">fpath</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">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="n">version</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
339    <span class="sd">&#39;&#39;&#39;This performs an update of the files in a local directory from a server. </span>
340
341<span class="sd">    :param str fpath: path to repository dictionary, defaults to directory where</span>
342<span class="sd">       the current file is located</span>
343<span class="sd">    :param version: the number of the version to be loaded. Used only</span>
344<span class="sd">       cast as a string, but should be an integer or something that corresponds to a</span>
345<span class="sd">       string representation of an integer value when cast. A value of None (default)</span>
346<span class="sd">       causes the latest version on the server to be used.</span>
347<span class="sd">    &#39;&#39;&#39;</span>
348    <span class="kn">import</span> <span class="nn">subprocess</span>
349    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
350    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
351    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
352        <span class="n">verstr</span> <span class="o">=</span> <span class="s">&#39;-r&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
353    <span class="k">else</span><span class="p">:</span>
354        <span class="n">verstr</span> <span class="o">=</span> <span class="s">&#39;-rHEAD&#39;</span>
355    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;update&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="n">verstr</span><span class="p">,</span>
356           <span class="s">&#39;--non-interactive&#39;</span><span class="p">,</span>
357           <span class="s">&#39;--accept&#39;</span><span class="p">,</span><span class="s">&#39;theirs-conflict&#39;</span><span class="p">,</span><span class="s">&#39;--force&#39;</span><span class="p">]</span>
358    <span class="k">if</span> <span class="n">svnVersionNumber</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mf">1.6</span><span class="p">:</span>
359        <span class="n">cmd</span> <span class="o">+=</span> <span class="p">[</span><span class="s">&#39;--trust-server-cert&#39;</span><span class="p">]</span>
360    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span><span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
361    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
362    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
363        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
364        <span class="k">print</span> <span class="p">(</span><span class="s">&quot;****** An error was noted, see below *********&quot;</span><span class="p">)</span>
365        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
366        <span class="k">print</span> <span class="n">err</span>
367        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
368</div>
369<div class="viewcode-block" id="svnUpgrade"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnUpgrade">[docs]</a><span class="k">def</span> <span class="nf">svnUpgrade</span><span class="p">(</span><span class="n">fpath</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">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">]):</span>
370    <span class="sd">&#39;&#39;&#39;This reformats subversion files, which may be needed if an upgrade of subversion is</span>
371<span class="sd">    done. </span>
372
373<span class="sd">    :param str fpath: path to repository dictionary, defaults to directory where</span>
374<span class="sd">       the current file is located</span>
375<span class="sd">    &#39;&#39;&#39;</span>
376    <span class="kn">import</span> <span class="nn">subprocess</span>
377    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
378    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
379    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;upgrade&#39;</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span><span class="s">&#39;--non-interactive&#39;</span><span class="p">]</span>
380    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span><span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
381    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
382    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
383        <span class="k">print</span><span class="p">(</span><span class="s">&quot;svn upgrade did not happen (this is probably OK). Messages:&quot;</span><span class="p">)</span>
384        <span class="k">print</span> <span class="n">err</span>
385            </div>
386<div class="viewcode-block" id="svnUpdateProcess"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnUpdateProcess">[docs]</a><span class="k">def</span> <span class="nf">svnUpdateProcess</span><span class="p">(</span><span class="n">version</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">projectfile</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
387    <span class="sd">&#39;&#39;&#39;perform an update of GSAS-II in a separate python process&#39;&#39;&#39;</span>
388    <span class="kn">import</span> <span class="nn">subprocess</span>
389    <span class="k">if</span> <span class="ow">not</span> <span class="n">projectfile</span><span class="p">:</span>
390        <span class="n">projectfile</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
391    <span class="k">else</span><span class="p">:</span>
392        <span class="n">projectfile</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">realpath</span><span class="p">(</span><span class="n">projectfile</span><span class="p">)</span>
393        <span class="k">print</span> <span class="s">&#39;restart using&#39;</span><span class="p">,</span><span class="n">projectfile</span>
394    <span class="k">if</span> <span class="ow">not</span> <span class="n">version</span><span class="p">:</span>
395        <span class="n">version</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
396    <span class="k">else</span><span class="p">:</span>
397        <span class="n">version</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
398    <span class="c"># start the upgrade in a separate interpreter (avoids loading .pyd files)</span>
399    <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span><span class="p">,</span><span class="n">__file__</span><span class="p">,</span><span class="n">projectfile</span><span class="p">,</span><span class="n">version</span><span class="p">])</span>
400    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
401</div>
402<div class="viewcode-block" id="svnSwitchDir"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnSwitchDir">[docs]</a><span class="k">def</span> <span class="nf">svnSwitchDir</span><span class="p">(</span><span class="n">rpath</span><span class="p">,</span><span class="n">filename</span><span class="p">,</span><span class="n">baseURL</span><span class="p">,</span><span class="n">loadpath</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
403    <span class="sd">&#39;&#39;&#39;This performs a switch command to move files between subversion trees.</span>
404
405<span class="sd">    This is currently used for moving tutorial web pages and demo files</span>
406<span class="sd">    into the GSAS-II source tree. Note that if the files were previously downloaded</span>
407<span class="sd">    the switch command will update the files to the newest version. </span>
408<span class="sd">    </span>
409<span class="sd">    :param str rpath: path to locate files, relative to the GSAS-II</span>
410<span class="sd">      installation path (defaults to path2GSAS2)</span>
411<span class="sd">    :param str URL: the repository URL</span>
412<span class="sd">    :param str loadpath: the prefix for the path, if specified. Defaults to path2GSAS2</span>
413<span class="sd">    &#39;&#39;&#39;</span>
414    <span class="kn">import</span> <span class="nn">subprocess</span>
415    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
416    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
417    <span class="n">URL</span> <span class="o">=</span> <span class="n">baseURL</span><span class="p">[:]</span>
418    <span class="k">if</span> <span class="n">baseURL</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s">&#39;/&#39;</span><span class="p">:</span>
419        <span class="n">URL</span> <span class="o">=</span> <span class="n">baseURL</span> <span class="o">+</span> <span class="s">&#39;/&#39;</span> <span class="o">+</span> <span class="n">filename</span>
420    <span class="k">else</span><span class="p">:</span>
421        <span class="n">URL</span> <span class="o">=</span> <span class="n">baseURL</span> <span class="o">+</span> <span class="n">filename</span>
422    <span class="k">if</span> <span class="n">loadpath</span><span class="p">:</span>
423        <span class="n">fpath</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">loadpath</span><span class="p">,</span><span class="n">rpath</span><span class="p">,</span><span class="n">filename</span><span class="p">)</span>
424    <span class="k">else</span><span class="p">:</span>
425        <span class="n">fpath</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">path2GSAS2</span><span class="p">,</span><span class="n">rpath</span><span class="p">,</span><span class="n">filename</span><span class="p">)</span>
426    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;switch&#39;</span><span class="p">,</span><span class="n">URL</span><span class="p">,</span><span class="n">fpath</span><span class="p">,</span>
427           <span class="s">&#39;--non-interactive&#39;</span><span class="p">,</span><span class="s">&#39;--trust-server-cert&#39;</span><span class="p">,</span>
428           <span class="s">&#39;--accept&#39;</span><span class="p">,</span><span class="s">&#39;theirs-conflict&#39;</span><span class="p">,</span><span class="s">&#39;--force&#39;</span><span class="p">]</span>
429    <span class="k">if</span> <span class="n">svnVersionNumber</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mf">1.6</span><span class="p">:</span> <span class="n">cmd</span> <span class="o">+=</span> <span class="p">[</span><span class="s">&#39;--ignore-ancestry&#39;</span><span class="p">]</span>
430    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Loading files from &quot;</span><span class="o">+</span><span class="n">URL</span><span class="p">)</span>
431    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span><span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
432    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
433    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
434        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
435        <span class="k">print</span> <span class="p">(</span><span class="s">&quot;****** An error was noted, see below *********&quot;</span><span class="p">)</span>
436        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
437        <span class="k">print</span> <span class="s">&#39;out=&#39;</span><span class="p">,</span><span class="n">out</span>
438        <span class="k">print</span> <span class="s">&#39;err=&#39;</span><span class="p">,</span><span class="n">err</span>
439        <span class="k">return</span> <span class="bp">False</span>
440    <span class="k">return</span> <span class="bp">True</span>
441</div>
442<div class="viewcode-block" id="svnInstallDir"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.svnInstallDir">[docs]</a><span class="k">def</span> <span class="nf">svnInstallDir</span><span class="p">(</span><span class="n">URL</span><span class="p">,</span><span class="n">loadpath</span><span class="p">):</span>
443    <span class="sd">&#39;&#39;&#39;Load a subversion tree into a specified directory</span>
444
445<span class="sd">    :param str rpath: path to locate files, relative to the GSAS-II</span>
446<span class="sd">      installation path (defaults to path2GSAS2)</span>
447<span class="sd">    :param str URL: the repository URL</span>
448<span class="sd">    &#39;&#39;&#39;</span>
449    <span class="kn">import</span> <span class="nn">subprocess</span>
450    <span class="n">svn</span> <span class="o">=</span> <span class="n">whichsvn</span><span class="p">()</span>
451    <span class="k">if</span> <span class="ow">not</span> <span class="n">svn</span><span class="p">:</span> <span class="k">return</span>
452    <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">svn</span><span class="p">,</span><span class="s">&#39;co&#39;</span><span class="p">,</span><span class="n">URL</span><span class="p">,</span><span class="n">loadpath</span><span class="p">,</span><span class="s">&#39;--non-interactive&#39;</span><span class="p">]</span>
453    <span class="k">if</span> <span class="n">svnVersionNumber</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mf">1.6</span><span class="p">:</span> <span class="n">cmd</span> <span class="o">+=</span> <span class="p">[</span><span class="s">&#39;--trust-server-cert&#39;</span><span class="p">]</span>
454    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Loading files from &quot;</span><span class="o">+</span><span class="n">URL</span><span class="p">)</span>
455    <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span><span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
456    <span class="n">out</span><span class="p">,</span><span class="n">err</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
457    <span class="k">if</span> <span class="n">err</span><span class="p">:</span>
458        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
459        <span class="k">print</span> <span class="p">(</span><span class="s">&quot;****** An error was noted, see below *********&quot;</span><span class="p">)</span>
460        <span class="k">print</span><span class="p">(</span><span class="mi">60</span><span class="o">*</span><span class="s">&quot;=&quot;</span><span class="p">)</span>
461        <span class="k">print</span> <span class="n">err</span>
462        <span class="k">return</span> <span class="bp">False</span>
463    <span class="k">return</span> <span class="bp">True</span>
464            </div>
465<div class="viewcode-block" id="IPyBreak_base"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.IPyBreak_base">[docs]</a><span class="k">def</span> <span class="nf">IPyBreak_base</span><span class="p">():</span>
466    <span class="sd">&#39;&#39;&#39;A routine that invokes an IPython session at the calling location</span>
467<span class="sd">    This routine is only used when debug=True is set in config.py</span>
468<span class="sd">    &#39;&#39;&#39;</span>
469    <span class="n">savehook</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="c"># save the exception hook</span>
470    <span class="k">try</span><span class="p">:</span> 
471        <span class="kn">from</span> <span class="nn">IPython.terminal.embed</span> <span class="kn">import</span> <span class="n">InteractiveShellEmbed</span>
472    <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
473        <span class="k">try</span><span class="p">:</span>
474            <span class="c"># try the IPython 0.12 approach</span>
475            <span class="kn">from</span> <span class="nn">IPython.frontend.terminal.embed</span> <span class="kn">import</span> <span class="n">InteractiveShellEmbed</span>
476        <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
477            <span class="k">print</span> <span class="s">&#39;IPython InteractiveShellEmbed not found&#39;</span>
478            <span class="k">return</span>
479    <span class="kn">import</span> <span class="nn">inspect</span>
480    <span class="n">ipshell</span> <span class="o">=</span> <span class="n">InteractiveShellEmbed</span><span class="p">()</span>
481
482    <span class="n">frame</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">()</span><span class="o">.</span><span class="n">f_back</span>
483    <span class="n">msg</span>   <span class="o">=</span> <span class="s">&#39;Entering IPython console inside {0.f_code.co_filename} at line {0.f_lineno}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
484    <span class="n">ipshell</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span><span class="n">stack_depth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="c"># Go up one level, to see the calling routine</span>
485    <span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="o">=</span> <span class="n">savehook</span> <span class="c"># reset IPython&#39;s change to the exception hook</span>
486</div>
487<div class="viewcode-block" id="exceptHook"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.exceptHook">[docs]</a><span class="k">def</span> <span class="nf">exceptHook</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
488    <span class="sd">&#39;&#39;&#39;A routine to be called when an exception occurs. It prints the traceback</span>
489<span class="sd">    with fancy formatting and then calls an IPython shell with the environment</span>
490<span class="sd">    of the exception location.</span>
491<span class="sd">    </span>
492<span class="sd">    This routine is only used when debug=True is set in config.py    </span>
493<span class="sd">    &#39;&#39;&#39;</span>
494    <span class="kn">from</span> <span class="nn">IPython.core</span> <span class="kn">import</span> <span class="n">ultratb</span>
495    <span class="k">if</span> <span class="s">&#39;win&#39;</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="p">:</span>
496        <span class="n">ultratb</span><span class="o">.</span><span class="n">FormattedTB</span><span class="p">(</span><span class="n">call_pdb</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span><span class="n">color_scheme</span><span class="o">=</span><span class="s">&#39;NoColor&#39;</span><span class="p">)(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
497    <span class="k">else</span><span class="p">:</span>
498        <span class="n">ultratb</span><span class="o">.</span><span class="n">FormattedTB</span><span class="p">(</span><span class="n">call_pdb</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span><span class="n">color_scheme</span><span class="o">=</span><span class="s">&#39;LightBG&#39;</span><span class="p">)(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
499    <span class="k">try</span><span class="p">:</span> 
500        <span class="kn">from</span> <span class="nn">IPython.terminal.embed</span> <span class="kn">import</span> <span class="n">InteractiveShellEmbed</span>
501    <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
502        <span class="k">try</span><span class="p">:</span>
503            <span class="c"># try the IPython 0.12 approach</span>
504            <span class="kn">from</span> <span class="nn">IPython.frontend.terminal.embed</span> <span class="kn">import</span> <span class="n">InteractiveShellEmbed</span>
505        <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
506            <span class="k">print</span> <span class="s">&#39;IPython InteractiveShellEmbed not found&#39;</span>
507            <span class="k">return</span>
508    <span class="kn">import</span> <span class="nn">inspect</span>
509    <span class="n">frame</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getinnerframes</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">])[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
510    <span class="n">msg</span>   <span class="o">=</span> <span class="s">&#39;Entering IPython console at {0.f_code.co_filename} at line {0.f_lineno}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span>
511    <span class="n">savehook</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="c"># save the exception hook</span>
512    <span class="n">InteractiveShellEmbed</span><span class="p">(</span><span class="n">banner1</span><span class="o">=</span><span class="n">msg</span><span class="p">)(</span><span class="n">local_ns</span><span class="o">=</span><span class="n">frame</span><span class="o">.</span><span class="n">f_locals</span><span class="p">,</span><span class="n">global_ns</span><span class="o">=</span><span class="n">frame</span><span class="o">.</span><span class="n">f_globals</span><span class="p">)</span>
513    <span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="o">=</span> <span class="n">savehook</span> <span class="c"># reset IPython&#39;s change to the exception hook</span>
514</div>
515<div class="viewcode-block" id="DoNothing"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.DoNothing">[docs]</a><span class="k">def</span> <span class="nf">DoNothing</span><span class="p">():</span>
516    <span class="sd">&#39;&#39;&#39;A routine that does nothing. This is called in place of IPyBreak and pdbBreak</span>
517<span class="sd">    except when the debug option is set True in config.py</span>
518<span class="sd">    &#39;&#39;&#39;</span>
519    <span class="k">pass</span> 
520</div>
521<span class="n">IPyBreak</span> <span class="o">=</span> <span class="n">DoNothing</span>
522<span class="n">pdbBreak</span> <span class="o">=</span> <span class="n">DoNothing</span>
523<div class="viewcode-block" id="InvokeDebugOpts"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIpath.InvokeDebugOpts">[docs]</a><span class="k">def</span> <span class="nf">InvokeDebugOpts</span><span class="p">():</span>
524    <span class="s">&#39;Called in GSASII.py to set up debug options&#39;</span>
525    <span class="k">if</span> <span class="n">GetConfigValue</span><span class="p">(</span><span class="s">&#39;debug&#39;</span><span class="p">):</span>
526        <span class="k">print</span> <span class="s">&#39;Debug on: IPython: Exceptions and G2path.IPyBreak(); pdb: G2path.pdbBreak()&#39;</span>
527        <span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="o">=</span> <span class="n">exceptHook</span>
528        <span class="kn">import</span> <span class="nn">pdb</span>
529        <span class="k">global</span> <span class="n">pdbBreak</span>
530        <span class="n">pdbBreak</span> <span class="o">=</span> <span class="n">pdb</span><span class="o">.</span><span class="n">set_trace</span>
531        <span class="k">global</span> <span class="n">IPyBreak</span>
532        <span class="n">IPyBreak</span> <span class="o">=</span> <span class="n">IPyBreak_base</span>
533    </div>
534<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
535    <span class="sd">&#39;&#39;&#39;What follows is called to update (or downdate) GSAS-II in a separate process. </span>
536<span class="sd">    &#39;&#39;&#39;</span>
537    <span class="kn">import</span> <span class="nn">subprocess</span>
538    <span class="kn">import</span> <span class="nn">time</span>
539    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c"># delay to give the main process a chance to exit</span>
540    <span class="c"># perform an update and restart GSAS-II</span>
541    <span class="n">project</span><span class="p">,</span><span class="n">version</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">]</span>
542    <span class="n">loc</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">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span>
543    <span class="k">if</span> <span class="n">version</span><span class="p">:</span>
544        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Regress to version &quot;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">version</span><span class="p">))</span>
545        <span class="n">svnUpdateDir</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span><span class="n">version</span><span class="o">=</span><span class="n">version</span><span class="p">)</span>
546    <span class="k">else</span><span class="p">:</span>
547        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Update to current version&quot;</span><span class="p">)</span>
548        <span class="n">svnUpdateDir</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
549    <span class="k">if</span> <span class="n">project</span><span class="p">:</span>
550        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Restart GSAS-II with project file &quot;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">project</span><span class="p">))</span>
551        <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</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="n">loc</span><span class="p">,</span><span class="s">&#39;GSASII.py&#39;</span><span class="p">),</span><span class="n">project</span><span class="p">])</span>
552    <span class="k">else</span><span class="p">:</span>
553        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Restart GSAS-II without a project file &quot;</span><span class="p">)</span>
554        <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</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="n">loc</span><span class="p">,</span><span class="s">&#39;GSASII.py&#39;</span><span class="p">)])</span>
555    <span class="k">print</span> <span class="s">&#39;exiting update process&#39;</span>
556    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
557   
558</pre></div>
559
560          </div>
561        </div>
562      </div>
563      <div class="sphinxsidebar">
564        <div class="sphinxsidebarwrapper">
565            <p class="logo"><a href="../index.html">
566              <img class="logo" src="../_static/G2_html_logo.png" alt="Logo"/>
567            </a></p>
568<div id="searchbox" style="display: none">
569  <h3>Quick search</h3>
570    <form class="search" action="../search.html" method="get">
571      <input type="text" name="q" />
572      <input type="submit" value="Go" />
573      <input type="hidden" name="check_keywords" value="yes" />
574      <input type="hidden" name="area" value="default" />
575    </form>
576    <p class="searchtip" style="font-size: 90%">
577    Enter search terms or a module, class or function name.
578    </p>
579</div>
580<script type="text/javascript">$('#searchbox').show(0);</script>
581        </div>
582      </div>
583      <div class="clearer"></div>
584    </div>
585    <div class="related">
586      <h3>Navigation</h3>
587      <ul>
588        <li class="right" style="margin-right: 10px">
589          <a href="../genindex.html" title="General Index"
590             >index</a></li>
591        <li class="right" >
592          <a href="../py-modindex.html" title="Python Module Index"
593             >modules</a> |</li>
594        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
595          <li><a href="index.html" >Module code</a> &raquo;</li> 
596      </ul>
597    </div>
598    <div class="footer">
599        &copy; Copyright 2013, Von Dreele and Toby for Argonne National Laboratory.
600      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
601    </div>
602  </body>
603</html>
Note: See TracBrowser for help on using the repository browser.