From d2f75800c46db8e2d0e9d47f15a6c86db404a26f Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Tue, 9 May 2017 14:58:44 -0700
Subject: [PATCH] New CL options for includes and required -o option

---
 README.rst                        |   9 +++++++--
 generateDS.html                   |   4 ++--
 generateDS.py                     |   7 +++++--
 generateds_gui_notes.html         |   4 ++--
 librarytemplate_howto.html        |   4 ++--
 process_includes.py               |   6 +++++-
 tutorial/generateds_tutorial.html |   4 ++--
 tutorial/generateds_tutorial.zip  | Bin 48769 -> 48768 bytes
 8 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/README.rst b/README.rst
index 4af7898..f352ecf 100644
--- a/README.rst
+++ b/README.rst
@@ -141,7 +141,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
-Version 2.26a (05/01/2017)
+Version 2.26a (05/09/2017)
 
 - Added command line options --no-collect-includes and
   --no-redefine-groups.  These options selectively turn off tasks
@@ -153,7 +153,12 @@ Version 2.26a (05/01/2017)
   Florian Wilmshoever for reporting and working with me on this.
 - Moved README to README.rst so that hopefully Bitbucket will
   render it as reStructuredText (with Docutils).  Also, fixed a
-  number of reST/Docutils errors in README.rst
+  number of reST/Docutils errors in README.rst.
+- Another fix for unicode encoding in process_includes.py.
+- A bug was uncovered when the "-o" command line option is omitted
+  and the Python version is 3.  Added a check that forces the use of
+  the "-o" option unless the one-per option is included.  Thanks to
+  Oskari Petas for reporting this.
 
 Version 2.25a (03/21/2017)
 
diff --git a/generateDS.html b/generateDS.html
index 535d850..cd00184 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -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">May 02, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">May 09, 2017</td>
 </tr>
 </tbody>
 </table>
@@ -3235,7 +3235,7 @@ following among others:</p>
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateDS.txt">View document source</a>.
-Generated on: 2017-05-02 19:14 UTC.
+Generated on: 2017-05-09 21:57 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 693cef9..54f26f7 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -6546,8 +6546,7 @@ def generate(outfileName, subclassFilename, behaviorFilename,
     MappingTypes.clear()
     AlreadyGenerated = set()
     outfile = None
-    if outfileName:
-        outfile = makeFile(outfileName)
+    outfile = makeFile(outfileName)
     if not outfile:
         outfile = os.tmpfile()
     wrt = outfile.write
@@ -6574,6 +6573,8 @@ def generate(outfileName, subclassFilename, behaviorFilename,
         if not isNewState():
             sys.stderr.write('\n*** maxLoops exceeded.  Something is '
                              'wrong with --one-file-per-xsd.\n\n')
+            sys.stderr.write('*** Failed to process the following element '
+                'definitions:\n    %s\n' % (PostponedExtensions))
             break
         element = PostponedExtensions.pop()
         parentName, parent = getParentName(element)
@@ -7197,6 +7198,8 @@ def main():
     TEMPLATE_MAIN = fixSilence(TEMPLATE_MAIN, silent)
     TEMPLATE_SUBCLASS_FOOTER = fixSilence(TEMPLATE_SUBCLASS_FOOTER, silent)
     load_config()
+    if outFilename is None and SingleFileOutput:
+        sys.exit('\nMissing required option "-o" (output module name)\n')
     parseAndGenerate(
         outFilename,
         subclassFilename,
diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html
index 58e6b4e..a34f76b 100644
--- a/generateds_gui_notes.html
+++ b/generateds_gui_notes.html
@@ -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 28, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">May 09, 2017</td>
 </tr>
 </tbody>
 </table>
@@ -401,7 +401,7 @@ $ mv generateds_gui.mo locale/ru/LC_MESSAGES/
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_gui_notes.txt">View document source</a>.
-Generated on: 2017-04-28 21:54 UTC.
+Generated on: 2017-05-09 21:57 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.html b/librarytemplate_howto.html
index b5fa212..5d3738a 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -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 28, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">May 09, 2017</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: 2017-04-28 21:54 UTC.
+Generated on: 2017-05-09 21:57 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/process_includes.py b/process_includes.py
index 17539a0..e030a21 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -213,7 +213,11 @@ def resolve_ref(node, params, options):
             else:
                 if os.path.exists(locn):
                     infile = open(locn)
-                    content = infile.read().encode()
+                    unencoded_content = infile.read()
+                    if sys.version_info.major == 2:
+                        content = unencoded_content
+                    else:
+                        content = unencoded_content.encode()
                     infile.close()
                     params.parent_url = locn
                     params.base_url = os.path.split(locn)[0]
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index 1aa0341..4ee1307 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -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 28, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">May 09, 2017</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: 2017-04-28 21:54 UTC.
+Generated on: 2017-05-09 21:57 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.zip b/tutorial/generateds_tutorial.zip
index 5ac7b6ccf4e3a8b441ef4d6e00a77c913ecfe37a..490a139bad4144c6118c1b4a99694371778130b9 100644
GIT binary patch
delta 9031
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

delta 9021
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

-- 
GitLab