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