From bfae4fbefe32e66a45f8a69a21ad784254e73edc Mon Sep 17 00:00:00 2001 From: Dave Kuhlman <dkuhlman@davekuhlman.org> Date: Mon, 11 Apr 2016 14:49:09 -0700 Subject: [PATCH] Added missing command line options to generateds_gui.py --- MANIFEST.in | 2 + README | 9 + generateDS.html | 6 +- generateDS.py | 2 +- generateDS.txt | 2 +- generateds_gui_notes.html | 343 ++++++++++++++++++++++++++++++ generateds_gui_notes.txt | 126 +++++++++++ gui/generateds_gui.py | 6 +- librarytemplate_howto.html | 6 +- librarytemplate_howto.txt | 2 +- process_includes.py | 2 +- setup.py | 2 +- tutorial/generateds_tutorial.html | 6 +- tutorial/generateds_tutorial.txt | 2 +- tutorial/generateds_tutorial.zip | Bin 48763 -> 48764 bytes updateversion.py | 14 +- 16 files changed, 503 insertions(+), 27 deletions(-) create mode 100644 generateds_gui_notes.html create mode 100644 generateds_gui_notes.txt diff --git a/MANIFEST.in b/MANIFEST.in index 27da3a9..dfc4c64 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -11,6 +11,8 @@ include process_includes.py include generate_coverage.py include generateDS.html include gends_user_methods.py +include generateds_gui_notes.txt +include generateds_gui_notes.html include Demos/People/people.xsd include Demos/People/people.xml include Demos/People/run_test diff --git a/README b/README index 8328f81..840abf2 100644 --- a/README +++ b/README @@ -141,6 +141,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.22a (04/11/2016) + +- Added support for additional command line options to + generateds_gui.py. Added analogous support to generateDS.py for + use of session files produced by generateds_gui.py. +- There is now a bit of documentation with a few usage notes on + generateds_gui.py. See generateds_gui_notes.txt and + generateds_gui_notes.html. + Version 2.21a (04/01/2016) - The GUI (graphical) front end to generateDS.py has been diff --git a/generateDS.html b/generateDS.html index 903478e..00c93c2 100644 --- a/generateDS.html +++ b/generateDS.html @@ -220,7 +220,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.21a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td> </tr> </tbody> </table> @@ -229,7 +229,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">April 01, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td> </tr> </tbody> </table> @@ -3171,7 +3171,7 @@ following among others:</p> <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateDS.txt">View document source</a>. -Generated on: 2016-04-01 18:00 UTC. +Generated on: 2016-04-11 21:46 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/generateDS.py b/generateDS.py index e63e492..89166d0 100755 --- a/generateDS.py +++ b/generateDS.py @@ -202,7 +202,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.21a' +VERSION = '2.22a' ##VERSION## if sys.version_info.major == 2: diff --git a/generateDS.txt b/generateDS.txt index 8add02e..8f1bf29 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.21a +:revision: 2.22a .. version diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html new file mode 100644 index 0000000..bc5e0c2 --- /dev/null +++ b/generateds_gui_notes.html @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!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" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" /> +<title>GenerateDS GUI Notes</title> +<meta name="author" content="Dave Kuhlman" /> +<style type="text/css"> + +/* css */ + +body { + font: 90% 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + background: #ffffff; + color: black; + margin: 2em; + padding: 2em; +} + +a[href] { + color: #436976; + background-color: transparent; +} + +a.toc-backref { + text-decoration: none; +} + +h1 a[href] { + text-decoration: none; + color: #fcb100; + background-color: transparent; +} + +a.strong { + font-weight: bold; +} + +img { + margin: 0; + border: 0; +} + +p { + margin: 0.5em 0 1em 0; + line-height: 1.5em; +} +p a { + text-decoration: underline; +} +p a:visited { + color: purple; + background-color: transparent; +} +p a:active { + color: red; + background-color: transparent; +} +a:hover { + text-decoration: none; +} +p img { + border: 0; + margin: 0; +} + +h1, h2, h3, h4, h5, h6 { + color: #003a6b; + background-color: transparent; + font: 100% 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + margin: 0; + padding-top: 0.5em; +} + +h1 { + font-size: 160%; + margin-bottom: 0.5em; + border-bottom: 1px solid #fcb100; +} +h2 { + font-size: 140%; + margin-bottom: 0.5em; + border-bottom: 1px solid #aaa; +} +h3 { + font-size: 130%; + margin-bottom: 0.5em; + text-decoration: underline; +} +h4 { + font-size: 110%; + font-weight: bold; +} +h5 { + font-size: 100%; + font-weight: bold; +} +h6 { + font-size: 80%; + font-weight: bold; +} + +ul a, ol a { + text-decoration: underline; +} + +dt { + font-weight: bold; +} +dt a { + text-decoration: none; +} + +dd { + line-height: 1.5em; + margin-bottom: 1em; +} + +legend { + background: #ffffff; + padding: 0.5em; +} + +form { + margin: 0; +} + + +dl.form { + margin: 0; + padding: 1em; +} + +dl.form dt { + width: 30%; + float: left; + margin: 0; + padding: 0 0.5em 0.5em 0; + text-align: right; +} + +input { + font: 100% 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif; + color: black; + background-color: white; + vertical-align: middle; +} + +abbr, acronym, .explain { + color: black; + background-color: transparent; +} + +q, blockquote { +} + +code, pre { + font-family: monospace; + font-size: 1.2em; + display: block; + padding: 10px; + border: 1px solid #838183; + background-color: #eee; + color: #000; + overflow: auto; + margin: 0.5em 1em; +} + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +tt.docutils { + background-color: #dddddd; +} + +ul.auto-toc { + list-style-type: none } + +</style> +</head> +<body> +<div class="document" id="generateds-gui-notes"> +<h1 class="title">GenerateDS GUI Notes</h1> +<table class="docinfo" frame="void" rules="none"> +<col class="docinfo-name" /> +<col class="docinfo-content" /> +<tbody valign="top"> +<tr><th class="docinfo-name">Author:</th> +<td>Dave Kuhlman</td></tr> +<tr><th class="docinfo-name">Contact:</th> +<td>dkuhlman (at) davekuhlman (dot) org</td></tr> +<tr><th class="docinfo-name">Address:</th> +<td><pre class="address"> +<a class="first last reference external" href="http://www.davekuhlman.org">http://www.davekuhlman.org</a> +</pre> +</td></tr> +</tbody> +</table> +<!-- Do not modify the following version comments. +They are used by updateversion.py. --> +<!-- version --> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td> +</tr> +</tbody> +</table> +<!-- version --> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td> +</tr> +</tbody> +</table> +<table class="docutils field-list" frame="void" rules="none"> +<col class="field-name" /> +<col class="field-body" /> +<tbody valign="top"> +<tr class="field"><th class="field-name">copyright:</th><td class="field-body">Copyright (c) 2016 Dave Kuhlman. This documentation +and the software it describes is covered by The MIT License: +<a class="reference external" href="http://www.opensource.org/licenses/mit-license.php">http://www.opensource.org/licenses/mit-license.php</a>.</td> +</tr> +<tr class="field"><th class="field-name">abstract:</th><td class="field-body">This document describes generateds_ui.py, the graphical +front end to generateDS.py.</td> +</tr> +</tbody> +</table> +<div class="section" id="introduction"> +<h1>Introduction</h1> +<p><tt class="docutils literal">generateds_gui.py</tt> provides a graphical front end for +<tt class="docutils literal">generateDS.py</tt>. Some may find it easier to configure and to +select and set options for <tt class="docutils literal">generateDS.py</tt> using this graphical +application.</p> +</div> +<div class="section" id="requirements"> +<h1>Requirements</h1> +<p>You will need Gtk support for Python in order to run +<tt class="docutils literal">generateds_gui.py</tt>.</p> +<p>You must run <tt class="docutils literal">generateds_gui.py</tt> under Python 3. Python 2 is not +supported.</p> +<p>Note that you can use the "--session" command line flag supported by +<tt class="docutils literal">generateDS.py</tt> on a machine that does not have Python Gtk support +installed.</p> +</div> +<div class="section" id="usage-notes"> +<h1>Usage notes</h1> +<div class="section" id="what-it-does"> +<h2>What it does</h2> +<p>Here are some of the different ways that you can use +<tt class="docutils literal">generateds_gui.py</tt>:</p> +<ol class="arabic simple"> +<li>You can generate modules from within <tt class="docutils literal">generateds_gui.py</tt> using +the "Generate" item in the "Tools" menu.</li> +<li>You can produce and view a command line that reflects your +configuration using the "Generate CL" item in the "Tools" menu, +and then you can copy and paste the resulting command line into a +<tt class="docutils literal">bash</tt> script (for Linux) or a <tt class="docutils literal">.bat</tt> file (for MS Windows), +which you can then run from the command line.</li> +<li>You can run the session file that you've saved with the +"--session" command line flag supported by <tt class="docutils literal">generateDS.py</tt>.</li> +<li>You can load a previously saved session file into +<tt class="docutils literal">generateds_gui.py</tt> using the "--session" command line option, +and then modify that session and/or use it to generate modules, +or to generate a command line.</li> +</ol> +</div> +<div class="section" id="how-to-use-it"> +<h2>How to use it</h2> +<p>You can get some help by running the following:</p> +<pre class="literal-block"> +$ ./generateds_gui.py --help +</pre> +<p>Command line options and arguments:</p> +<pre class="literal-block"> +Usage: +python generateds_gui.py [options] --session=<some_session_file.session> +example: + python generateds_gui.py --session=generator01.session +Options: + -h, --help show this help message and exit + --exec-path=EXEC_PATH + path to executable generated in command line. + Example: "python /path/to/generateDS.py". Default: + "./generateDS.py". Use Tools/Generate CL (Ctrl-T) to + see it. + --impl-gui=IMPL_GUI name of glade file that defines the GUI if not + embedded. + -s SESSION, --session=SESSION + name of a session file to be loaded. +</pre> +<dl class="docutils"> +<dt>exec-path</dt> +<dd>If your copy of <tt class="docutils literal">generateDS.py</tt> is in a special location, you +can specify that location using this option. The version of +<tt class="docutils literal">generateDS.py</tt> at that location will be run when you select +the "Generate" item from the "Tools" menu.</dd> +<dt>impl-gui</dt> +<dd>The file <tt class="docutils literal">generateds_gui.glade</tt> specifies and describes the +user interface. This file has been embedded into +<tt class="docutils literal">generateds_gui.py</tt>. If you modify <tt class="docutils literal">generateds_gui.glade</tt> +and want to use that modified version, specify it with this +option.</dd> +<dt>s, session</dt> +<dd>If you have created and saved a session file using +<tt class="docutils literal">generateds_gui.py</tt> and want to load that file the next time +you run <tt class="docutils literal">generateds_gui.py</tt>, use this option. Alternatively, +once <tt class="docutils literal">generateds_gui.py</tt> has been started, you can use the +"Load session" item under the "File" menu.</dd> +</dl> +<!-- vim:ft=rst: --> +</div> +</div> +</div> +<div class="footer"> +<hr class="footer" /> +<a class="reference external" href="generateds_gui_notes.txt">View document source</a>. +Generated on: 2016-04-11 21:46 UTC. +Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. + +</div> +</body> +</html> diff --git a/generateds_gui_notes.txt b/generateds_gui_notes.txt new file mode 100644 index 0000000..6c816b9 --- /dev/null +++ b/generateds_gui_notes.txt @@ -0,0 +1,126 @@ +====================== +GenerateDS GUI Notes +====================== + +:author: Dave Kuhlman +:contact: dkuhlman (at) davekuhlman (dot) org +:address: + http://www.davekuhlman.org + +.. Do not modify the following version comments. + They are used by updateversion.py. + +.. version + +:revision: 2.22a + +.. version + +:date: |date| + +.. |date| date:: %B %d, %Y + + +:copyright: Copyright (c) 2016 Dave Kuhlman. This documentation + and the software it describes is covered by The MIT License: + http://www.opensource.org/licenses/mit-license.php. + +:abstract: This document describes generateds_ui.py, the graphical + front end to generateDS.py. + +Introduction +============== + +``generateds_gui.py`` provides a graphical front end for +``generateDS.py``. Some may find it easier to configure and to +select and set options for ``generateDS.py`` using this graphical +application. + + +Requirements +============== + +You will need Gtk support for Python in order to run +``generateds_gui.py``. + +You must run ``generateds_gui.py`` under Python 3. Python 2 is not +supported. + +Note that you can use the "--session" command line flag supported by +``generateDS.py`` on a machine that does not have Python Gtk support +installed. + + +Usage notes +============= + +What it does +-------------- + +Here are some of the different ways that you can use +``generateds_gui.py``: + +#. You can generate modules from within ``generateds_gui.py`` using + the "Generate" item in the "Tools" menu. + +#. You can produce and view a command line that reflects your + configuration using the "Generate CL" item in the "Tools" menu, + and then you can copy and paste the resulting command line into a + ``bash`` script (for Linux) or a ``.bat`` file (for MS Windows), + which you can then run from the command line. + +#. You can run the session file that you've saved with the + "--session" command line flag supported by ``generateDS.py``. + +#. You can load a previously saved session file into + ``generateds_gui.py`` using the "--session" command line option, + and then modify that session and/or use it to generate modules, + or to generate a command line. + + +How to use it +--------------- + +You can get some help by running the following:: + + $ ./generateds_gui.py --help + +Command line options and arguments:: + + Usage: + python generateds_gui.py [options] --session=<some_session_file.session> + example: + python generateds_gui.py --session=generator01.session + Options: + -h, --help show this help message and exit + --exec-path=EXEC_PATH + path to executable generated in command line. + Example: "python /path/to/generateDS.py". Default: + "./generateDS.py". Use Tools/Generate CL (Ctrl-T) to + see it. + --impl-gui=IMPL_GUI name of glade file that defines the GUI if not + embedded. + -s SESSION, --session=SESSION + name of a session file to be loaded. + +exec-path + If your copy of ``generateDS.py`` is in a special location, you + can specify that location using this option. The version of + ``generateDS.py`` at that location will be run when you select + the "Generate" item from the "Tools" menu. + +impl-gui + The file ``generateds_gui.glade`` specifies and describes the + user interface. This file has been embedded into + ``generateds_gui.py``. If you modify ``generateds_gui.glade`` + and want to use that modified version, specify it with this + option. + +s, session + If you have created and saved a session file using + ``generateds_gui.py`` and want to load that file the next time + you run ``generateds_gui.py``, use this option. Alternatively, + once ``generateds_gui.py`` has been started, you can use the + "Load session" item under the "File" menu. + +.. vim:ft=rst: diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index 70a191a..1c95814 100755 --- a/gui/generateds_gui.py +++ b/gui/generateds_gui.py @@ -39,7 +39,7 @@ from libgenerateDS.gui import generateds_gui_session # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.21a' +VERSION = '2.22a' ##VERSION## @@ -1020,9 +1020,9 @@ def capture_ui_names(): USAGE_TEXT = """ - python %prog [options] <somefile.xxx> + python %prog [options] --session=<some_session_file.session> example: - python %prog somefile.xxx""" + python %prog --session=generator01.session""" def usage(parser): diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index f89453d..3a70634 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.21a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td> </tr> </tbody> </table> @@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">April 01, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td> </tr> </tbody> </table> @@ -380,7 +380,7 @@ this command for your needs. For example, you may need to use <div class="footer"> <hr class="footer" /> <a class="reference external" href="librarytemplate_howto.txt">View document source</a>. -Generated on: 2016-04-01 18:00 UTC. +Generated on: 2016-04-11 21:46 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt index ffd074b..a8e9992 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.21a +:revision: 2.22a .. version diff --git a/process_includes.py b/process_includes.py index 2770899..e60f2ec 100755 --- a/process_includes.py +++ b/process_includes.py @@ -40,7 +40,7 @@ except ImportError: # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.21a' +VERSION = '2.22a' ##VERSION## CatalogDict = {} diff --git a/setup.py b/setup.py index ed4dc1d..1c45b73 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup(name="generateDS", # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## - version="2.21a", + version="2.22a", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@davekuhlman.org", diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index b390c1e..a0f0cf8 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -219,7 +219,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.21a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.22a</td> </tr> </tbody> </table> @@ -228,7 +228,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">April 01, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">April 11, 2016</td> </tr> </tbody> </table> @@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateds_tutorial.txt">View document source</a>. -Generated on: 2016-04-01 18:00 UTC. +Generated on: 2016-04-11 21:46 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt index d526c01..c6e47be 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.21a +:revision: 2.22a .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index 233f9d6a7c04b4859b0250516e4adac39f2de367..e6854f576594abe649425cbf7c8bcdea35ddf43a 100644 GIT binary patch delta 6686 zcmV+(8sX*p`~v*^0uoS50|XQR000O88-IvMu53bzkrF6>H8%)X>IV#0b$AN^0R-p+ z000E&0{{S>Q$26nFc97KD{cvp05KgHnFM5Mvjk0m0`<^NHBFu@qLfbHhaCa=@x7z0 zd}zoJE~1WikMG_+-rap=RR`=b=!EybV6}pWJ_WMbBu72y-oiE~3Qqg#OXzo1RqLEu z3N_s8Bf^h=-1<)U9JMxJj5XMQQwT0~x&q5duK`OOp>U{xSDVsMuh*y3Nxe%_a$G3| z_XIs9=*YTegw!H5<UO5Se}E%~DE%1fI_y(a0=R8)1RW4^L<{>7@?cqpbFLajRdCP$ z+(*EplWh$fwb|&!snpi+BA=IXG;N{8Yq<CZ7xo%|F8)-UYiJmQJG7~W@ADQe%@u5J zZf-y5q?o3QV98`*u4ODm4H=Cz8L3Gp>B1$j7)@|{jKC#^nA_ACcM4ArTX=K^`-t^Y zP8v8&IT#c**M3Ti>&~Us`A5kd_b~-+nDhruav2ZHEsc}T#(_kIDa%|grUrJqH`B4u zyB(Z=T4!3AqY-|N?3rG~)4;bfY-YE>WkaEW;Ir-qkJn(lj?4uc*E_j7UO^M66Gp$E z9wC|*JN?R4m9d|REWrZ~{E?1?E_y6p;l^gL8D*+Ii(M3!g174wJS5OQ(z}KR9U^;$ zGxb#ON!ul`h$v!F#3eh%WFFR*Ca)(8KtzUrWq4?uN1iwvgk@mE$Gk7Xh-5M4J*&b~ zqCtwa_hYG_$yrq#!t)7Wbh!mOWEM8gvwMffa!{~1je(DcK!)FONfQP|GoJCHwdpZM zG^x*BJz21}IHb0Q+p1d0Dk(F@XF0AnK3jQKuRX-Sv){Bz	{Z15ir?1QY-O00;mH z(sheS9iaX?LX*A%C<r?n3|B%J3|F)60we|(^i&d!qn$+l$0h}GcqbX&6s1lfWFCvN zDG9?7f70eQj-&m3f5j#$2Y`Zuq$DTdTeOO%C|MOsN{Nu=l<Yz+i6ylTxXbJUB#{sK z?U}yj+7lq9ByWXPw#YqZdU|?i`gpo$D|;&ts7z#y5o0zN(YcuWn^A6xMt~Yf{x}mH z;W7+<90}S_mac0A^?=2q%`NWnY-mhKT&Ij@e**Gb9AkBp=*+yBU9P~fV>@#$IB^OC zQ_uyE)99=mpR#y>Ya?sN9NV$te?$Hhc(;TE1F_f@^G;y>)o`6=w!BoW(G;s?cSUY! z^3Bb$S>XiXM^J9H&9V|Vq-gOYm(mK0-*}9nB`lY=9Xw|VVNKB339=A{l_UgJ;Y#e# zfBRbQA-HDBv?qkkK1jLd;N#qQ%=8Bo=tZKNySY=gf43#<p2Yw(lI*@2L8wunC^IBJ z&By@a{)ZI%H$H7#XsR9Cq3;LKD((;2EoguExdpIefd6)ZORelMmzf&jI!g&EODfG3 z=p$CDy0-54r9fl+VZorX1h!F*;-ImQe@68-_KNv{D&s1(sff+h6hH*_T1DVK#THca z2#iTF^F)z-xklT~0!l`n-Om{x;=KqO;x?JgLA9d>4R`%Dx&DJPB5NzW%hg(uSBt8G zpb3nl+1t~KQI$@3J926w@&2Z@8*&Fo!XAy4Xyb9)z|Hm{6C<esD5`$CI_nDve`ZXV z2m3*&e$+P=O4>>vmfWE(V|Va2OQEo-(#En>{>U@6ys7&+UBEWrhg`5T|9<#ubQAek zxoi0Gh#J?BB2?G}49k5Qa^T17dZ5R95vAvA4iHm6O5+C3T7>bHG1{>G-l=%+@LgV@ zdISA9Y^y{f?CXfgfm9T_)VJD2e_r9$u}y{$5cmwyU&VntoxvjnBvedvpl2U?shEAZ zTtE9au_7F{PM*Mve3dNucPxv{zpHhMe!+}vPa3cmK0gOaWL!uS=dhS$`I`TXF2SXx zW$Q}m3%+Dg8Yk|+4bp=gts4rDf(HP!Guf`d0M&+ILo1VMC>+{E-Ak@sf1)_C<nXpP z8X+b7;WtGu{KlbB3l==k9}GiBV2}rnz*rLC35<QGV?1rMqB`9+sV`J>hxf17DF-OH zE{+w8!`LK(p=)EkHK~7{9pyfrqJ(5Q!ekX6{Q@>Z`PmZ)xX?}gyz3f(QryHDDQv-f zVnin7^afPPdWeoCwZlPfe+~peAbjUwVWN<pG(I~HAO+%?y5MXf$PL115cQ_B`?zzr zN{4tT8CE{<@`+x>IzH;nJ%1YDyEy~5670mwl86Kbol*)Vp!+3)S{E9@<wh!OJ148t zHne&35n)7JM&Uw(-D+g!#6p=x`6X+IoS1EAlJ=WDUA(?=lC5~^e*#WYG3ljtwwx_Q z78x``$|RJ@f}x5<YG3aQehQt8ZHa?-cXwoPc1awRhlj@R$fMyniI;s^_`^ZJqNKrf zK+h?$mp<`bYM*U8vK<O8;R_#PmaDzsIwR#)o^`6c+%x?(tx9{n1wT@dhQGU1+~2L4 zK>|wg)a-Xnwrojtf5iu-oQ+9%Z4M9OONUFUE&(=#MkW?9C!)gHBNS2f>vI75ivy)( zYoX^lvvZHBiX}Fpi`GoYqwTFAZvh-3P8W{+RbUV$@qvqzfrHjH_aIIer3vSr@=6Dm zrug?#z3!6!jtOJs1*KAz@0d~}K=^ebzglp70AXDx0fgref2P&P%wASB=sBeUAO=Y* zhka62K<dx46>J0eJwvbnYZNKUoo3)CnX6`c-^`UJ687<}@b}>^C?2jht2-0L0$Vy@ zm1=&F%<VT&wS}x|R*+dKwTK^!9<?sU#d59$Wf<-Zf&j<*sTVDjSS)+Puy+<Oi#7ZL zC5#qH-1}u<f0=UcSE2%>b8Gj9T!RNfdo8cP#tVM8kXgo$7DqzYkUPKvn*Lq-M?WMF zVjx#tq>;guiCof+O{lfz4)$6)K!)9;{U<H$^E|Zoz<=YH0e^Q?L#s+8c2hPtuAs<j zWKBM$Q-VmRmP*`8Ya$kWi!_sh>b!I?<K0xt)%AH)f5fQz7a(%=cM&${`lxZ?ia0?m zS8M1E9?3zzxY$V?Y}P@l`XPO!^NQv!V>&sfi`N1!Z|Aw-qLz)`jC*-8`VQekwABX2 zBrUr#9E#dJ8$JoL0s|N9DM3zHq;2DvaM~-mBw&DF$}Q16z4viVJcLW4<cff9)600q ze_-Z4f5avrwmqv85^MM+A?e_;*wRZOr215Ll_Qj#LOc(iA3{kCjBQZzMwDe`GmpeI zuDLB0rC3wv)$0}(x>`l7+K<ekD|2jzwHm7RTz+N4k`Z1VFzm3zaVZ)K=Q-7%O0-p4 zojR;0CIG~tvvjd`;wZYvmmmu5YF}jXO2M%}f1s7OS!mmJEq0T;D3FS8h<fco0Xr~< z=i1b*3A<F8svsj^xHJ@hz_e@#9xCM@&WytRc(!J?C)X0q2O#&?Rj~wf=SCwm@yo`1 zBz1w!LXGPa3m9-}@R^0sqHp(zU4j#Bg{U};+I>skd^fl3lag*gX3F(~>=Y`_GNb9Q ze=}G>p>Q;SFKx77hxVSdt>Kc#%T+F!3p8R%{3F7s^wL4tY`nPasNxtsf!Qm)?*Vla z@Ap~^r(MUg^0s%Yxlu2C96sBzFCn&}O9ugsb>pSG`TKDh;3tzwwV#&s%kp|-u%(pv zBiO;smI2FU%0AX)>3^7*=%aC7xtOC@e`>?G-Q}jphelzdr3zW`8yKU$iNNw<8FQ|M zx{;OI)l#jqCTlyZvRM7jYOL0c`>L{D{l01~*t*_)OLnyJPe9+<mzk);lkbn;PruSc zeSbVX{p(knsG}ba-=Dlb-hQGymqS}ZS;M&q-C#Le9-BaLoW}A}Eyp5sbCBHsf7AqV znGg^X{SC<#Lhc3Wis^#namx&b+e(2Cvpnz%0;*}mGi|f$IA;cd{}`hJ@p28SlX!{& z{~ZA=Q~gWGY5+wRRQ9~=eYPOmrJ@#6u1XYjwK}^fZLa<>k4pihk&TycQ0t+90dvMr zHrco=1)j)IjT^U03WHx9@ZtzZf3XIyb6*hrMD19mGpfdgc>r{S;Jk^`g6ZEahf0bN zLDdV>MJ4MFpb@%JE}&(6@Ob=Y$XW9YvALzHdpIkC$eNfcv^kfXVMRQQ77M^SVbx`- z%SCAhqIL(Yc9)8HQ8G-khK(LN8rKZR1&E`rdNwRt&!L7T<DzBdAMemFf6uiy^{&`w za@6B#v41B)CMzBB_6cSo?(OXCPJViGa*EGeYi&TQq-si#`lt_cWEte>d^s``k6d!^ z!c9<<_<@PnEL4_X#CPySMbqxf&cY3&i~qg?JiE2f*Ar`bKgzU1V>sImmG<7z$bs6y zTLW(?bZd2q+fvo=n2tz7e`_`+N;;xtmUkbT^kPlGMpN@Z(}Jl>R^D0z>61<kLdMlY zwkNK&cFuO6;YN{S2VP}=K+I*F`}A)mG0D8W3r{NRno`zbmM6<<n(>hNjhe#)pRu&Y z1BkQc4J~c9o>!~cH67Oky3><(-RYjEIjJrXS7Mx(u4ZACR@gRoe?eCp{8_PYBya}W zkfdA%-YVQ%xc}*!TpG@QnQxZ#1HA5UeVcg+Y@S%TZ-T}Zjkyr*N3)C>71+rE8`sw; zjmU;-SUyFYO4UeRbvHXdc$<13MQy2%!041QRHgzzn4d@PBAAnwwC_qOaK`PNxYPJ` zwVgfI@hf|vqsjPde{;&KR^+m8$(^AEN!uU*F+dO$M+#z2LY)I39BL;lv0k;wqZJ1- zCNbawi58#%G&%m_P{P%LTf0H>;8B%jGqg^0OQ%g3m}1Ks^yoK}Rgq8BiZ_YV8}?QO z!K2_&^-81e;LTS$Rx(}1;oIyc4F44FKHGoxbpPoe;1um0f6F4{^-Zz|_r`nC7#gzt z)be|2@p9tOF&GE4@F0W;Uhrd_pJhcnqgUbb%V?p@mA=~3lmd+<(Q>()Vj!?|d7<=i z!Wx%uu|fb{;sXQK0fy@OPX<A`q2w$FgN|ui=4<j9Jqn=<@{|KC7XA|aQ%tr_LBGtZ z$uJF95|1w_fAh{`hH<&0ySUG_0Jv5ZiaxwO#-6zXL=aO!wAa|gah_-F_tJx*0iD}r z{Bcm6Q?xgJ_Iu;%r!neI#?EW*pf?@3KQ(PUXyk)Kml}mN7-0;&U&ovhgNR9;cvQ)! zW;Q(ptGckOk!9UD*2c9;&Jp)ga0V^hso`wX($mbqe-`n2NZxhjUn37~dVQ{S;an~E z91eD2pv6RM#2w`Dp?SIqUmJPb!rHFvg`Yf1ir9XP`+FHB3#yF4tSf!+u>AvIK7|7T z&ov<!e#Ep&^~ulrkE8su7>17@|Lqoj<B+7{LcgA?HCq9~fraiKox9P)0wPHoI?a=a z$VmYBf38hF9x=FtQu%Uv2bU@zhVl4vJha*fK_9|enXv|WjrD!%^pnu?ixLPDqw(?d z2s_aO;drM~=FCG>sM6<<9nw{gvp%xO&eY})TE#I}R5(tRP6i@z5cZ<tJV|===m(`N zDgznZ+D>kMU1<(zlR!914H5Y*`q|m9%uR@Ze@i_Pb#=@-3{(J_!S%ut;p74zMTibQ zutfMT%xO>C(>+%dF|2+7W#6LfzJ8kkKCWQjM2lVZBtVta7X~C!P=4Sq{YfGI);_#5 zMDuJ={sM4l^E-q%?YW_Sc(39OA>)&J4dxqO6cm!XzA06${CeS&j$Q8>91~6ju>wcN z8zKDombnD~jPn>jxqfd1A^cg-kr{qAAZd6}lj<mzH}>HWFeX6#san&$O{2@%HB{Nk z)7khcTAqK#hsWx%!T2)IR@X&;@M*M5032xWhzUYNix;%dleZ}=1-IZFIDnJqDJcm% z`xSN_d1ZVNlNl-`e~Wi-#uhX6#2O@%q~*4S+(L}G{han(Dywo<Xn&a<$Q)=cVHgx> zRI@%i==BCwq_L!M2eycu;vTN#fPN7r0aQY|^7@_VjPiG-AjwVB(*FeN|C2z~OAwzU z_`kL0-zyrA@S81pB>CHY{Bx?MqWo@yI}=N}&l=x0ETM;me{VBjT)##bMQSQ#(uo(( z3`(Gmf`RG87t;@?hp&!j)8n6}iariITmKI}6wzh8FTls=&!2<u7e2Ejy<ll2TtxX* zva{fQQ7Q@SYP!_q#&^lG59rnsoEMBlkU8~``t|11?*1<#&#L!6+K}OI4#HhaAEGYl zF-;|akimT2e=(|ue0_cM6p)aBZi$SZp(Qt)0YS4F8*+~%y=s2;fABv{*I4FYp-`XO zAap-s2!aBT4A5$U%ez`%$0KCX)UvAm-{RL4)EUbr>ZXQ}s88=RR}9b~vW-cklUVFF znqy-Y#Q-^jj0~zaiiM$|PJ;wuZt*X|pSAE#+vXMde-$1htRqzs>m;+JPkl!=3IIwi zM+Wi)k)5@j!qAo;fMuqs<N%$X5~T$I=?WyOnNRMJDAi%}=;0GOYHt*cAOUzp2fdFz zM|m0-og?&5DRx+q0gAE1ClEWNnza$;R8ROkdG5xE92x)^9-qQbZV)hp*L1Q4n!XUL z?ISRJe_&V7YLD=DjjnN*UQDb@NUZ7^LdCH@K`78VRl;P2ZLd?vCSMURtgzhwqj&r- zpbXZ*^IEk-ZrgU9l?leYkZ*VDZhsw0s}+Pdr>`pYgP()bb(&olNkM{m%Jp+CECd&B z;4C@s^i;FZ`T=IvJV<XK*{J%;tQ~%H9Yl?)f2@LhEe*tc%$D-eqI+zqTAXLs>kam8 z_ed#Fo6AR5VQJhrzlj6HG@xdym)DNnFat_ij#TK?E(kwQit9zRmP$mGryb$;4C+PD zEn^VBL`g96>L7JUS1hlFly(SVgM3bjgrXOOj$WYmb<#C9+18g?fP|NG6T9s0Pe=JG ze?`z8?(TjWu?}1NGuqm#4(5Ta{V8niay}q#*yWO88h>Zbn5YBYNkLf;U9~}?R^^J} zT!gSq=>Wu7A9Uz-?V^~}ihI3Uei?GQZC?18y~yjhL<x|d$9H#X3%{EDbI!-)RDg_a zEVsJ;X05A`aVG_$KE22E>->=M#ZwnMf8(8JJL*S6vIK?7_j8TpZ7ttop_(BzE>{aD zC6Ku{oOcXx8IrV=Zjs^}&SmEXjZ9WI)W>=gF8~$`@7Q;oS2Vcz64JNeQTvK!&_r<U zx-g5gLvNSVW~H~ah{F%l>0gvMeEj%v{Qmf-pT<Y;-c0`a;?Ey`IC*pUwu3nQe>FUL zeL4-_y$p}uy`3H&O;5jsIJ`f8v7I;^zCSsBd%T%AoTyhe5Qpje!yk`NUcY_ywZviL zJYQOr==3=_&hoaP6SvPWM|DJ&DQvJKLGWc4fjMvm)-~M!=glXNI=fECygoQ64i2O2 zoW}R<Z@>Fv%^7gmj(;eCwU6L^f6R=_@Q{)@r?#gzahd>>-#|4%yEun}22h0jN*~pT z8U0EfP%FOLsEb6|@(nc+yVRSO3JD`FY&QaU%jhb)%P_lP#6=uOP{eVx+clZ+4~j`u zaCoUM=a$jaxfEW>NVlLTl!2oVv2~=7b^MJeVVnlle!O#gfj%#(!+~F8f1aJL-q3Oe zFgMGU(yc)TyPO3VouA{;KU^1*LgBEb%h?R@^>wQyUp=MtQH~H@!5O1n%Zcy)5vH>O zcU?W5oI}SwQ7+vEQ;E8}{j##nlu8;Et<EOSX6aJvP*PR+Sv8q$k1JdDjE_^mxkuEr z$rhx1Q#FkKYOzeN)C4cqe}nKWf<+7SRqYYUp&GjWM^XfZ+7iLH$CAvh2P!`}uurn4 z<Asnh%|53j<>56m&gMhBJnwiuE^6$M5u9DX@waj&SuuhPdbL}`uzkW2ddsdt_9qas z3J2Yk&jQ3kkh%tBuLyNdA@}46+4tajxD_^QIisQ|uDETwN+fr&e<%UVd=*zO4&Zu~ zUIG6DCeyhbZv-3OXIq5&EFL`5AU7l=L2IH2O3=HDnOm1aS4|B+XN!5ktBS`k#Pi_^ zMPanKjn+sIns#)4G~7t^Az_?$5O+M%!m4dc$?}SXBp>m~V<RNH>k72D1Hw^Z;vHF? z$RQF*u8%jPP8_*7e}wcH#Rp}ObE<?_h!^WVm1;L*N=6{<ng*!WX^x7FDL+cpNlY#f z9PlOybGrTr%7Hl*>uiml0@=mw(!g?jhSjZPBfm6dpoes13e;WY3=-FjHJjsqRpRmW z0uJh}PCNb!+&eM1Iwl<BYyZ)y#%hW0mKWN&Nu_WCEcG98e?{8xOMUO_<uE5uLjnp= zevLHdssY|>)*mqEcoPBonpwcxB-wIWowW{GhsOBnkK1RpjwfDTYZhKcxe_QzWu?Eo zbW^oXr&KrJ)(AS(zthV_jc1ky7IbLIp^|m3@}8mh@Tg!Wbto7M^C15Tg2Z&^-o_;r zusMbtJ;wf^f3hhE7na+oDb)-Tq8pqvl-nt*5EmKLuSB&V_pXJL?>ZgUZJpPqPc~oP zDLwSZB)&CAO3~4Upc{+>lWdr!`;c7t?P%xeXm>Z<+ueWqZTMk&WIqFE>~%jhT%@3M zR^o5Jd%?GW2nuREM7y~%6zM4P9H4?qg;*)eVyc?K5q{|LabPClESs<4UwG-e;9s*o zGAxG(8-IvMu53bzlXAH>1T{AZSCfCd8wt{Ni%1=y{yIXF(784QI~xpFlYhJwlOMVy z2|qFb07GwNWiOM_yeN~4G7b$G00000009610JMRAlaIPr0mzf*x>*4nlR>**0Ya0Z zyIldUlmEM30RfX<yjlZ)g#eQwh7*&{yhQ^Ah5(Zxh8>eLy+8xKh5(Zxh7*(Qh6<CW ox+0Ucy&eNZjR2EijT@8ky+8v_l>n1!l^c^!z9t4=xc~qF0HCS2uK)l5 delta 6688 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 diff --git a/updateversion.py b/updateversion.py index b122794..0ec2618 100755 --- a/updateversion.py +++ b/updateversion.py @@ -45,10 +45,8 @@ REPL_SPEC = [ 'pattern': r"(.. version\s*:revision: )([\w\.\-]*)(\s*.. version)", }, { - 'filename': 'generateDS.txt', - 'pattern': r"(\.\. version\s*- My Web site -- \s*" - r"http://www\.rexx\.com/~dkuhlman/generateDS-)" - r"([\w\.\-]*)(\.tar\.gz\s*\.\. version)", + 'filename': 'generateds_gui_notes.txt', + 'pattern': r"(.. version\s*:revision: )([\w\.\-]*)(\s*.. version)", }, { 'filename': 'librarytemplate_howto.txt', @@ -84,23 +82,21 @@ def updateversion(version): update1file(targetfilename, content1) - -# # Classes - # # Functions for internal use and testing def update1file(targetfilename, content): - backupfilename = targetfilename + '.bak' + backupfilename = targetfilename + '.bak' shutil.copy2(targetfilename, backupfilename) targetfile = open(targetfilename, 'w') targetfile.write(content) targetfile.close() #shutil.copymode(backupfilename, targetfilename) + def replfuncmaker(version): def replfunc(matchobj): if VERBOSE: @@ -111,6 +107,7 @@ def replfuncmaker(version): USAGE_TEXT = __doc__ + def usage(): print USAGE_TEXT sys.exit(1) @@ -140,4 +137,3 @@ def main(): if __name__ == '__main__': #import pdb; pdb.set_trace() main() - -- GitLab