From c4c1034e4ef25275c8261d88a18d62ef45eeb880 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 21 Aug 2017 13:33:07 +0200 Subject: [PATCH] Py3: replace sq_slice and sq_ass_slice with mp_subscript and mp_ass_subscript because they are not used any more in Py3 --- src/Base/VectorPy.xml | 4 +- src/Tools/generateBase/generateDS.py | 10 +- .../generateBase/generateMetaModel_Module.xsd | 4 +- .../generateBase/generateModel_Module.py | 106 +++++++++--------- .../templateClassPyExport.py | 54 +++++---- 5 files changed, 96 insertions(+), 82 deletions(-) diff --git a/src/Base/VectorPy.xml b/src/Base/VectorPy.xml index b26041a136..625dbe8cc8 100644 --- a/src/Base/VectorPy.xml +++ b/src/Base/VectorPy.xml @@ -182,9 +182,9 @@ sq_concat="false" sq_repeat="false" sq_item="true" - sq_slice="false" + mp_subscript="false" sq_ass_item="true" - sq_ass_slice="false" + mp_ass_subscript="false" sq_contains="false" sq_inplace_concat="false" sq_inplace_repeat="false"> diff --git a/src/Tools/generateBase/generateDS.py b/src/Tools/generateBase/generateDS.py index c9d79d4bc7..5d774dc92d 100644 --- a/src/Tools/generateBase/generateDS.py +++ b/src/Tools/generateBase/generateDS.py @@ -2286,7 +2286,7 @@ class Sax%sHandler(handler.ContentHandler): self.locator = locator def showError(self, msg): - print '*** (showError):', msg + print('*** (showError):', msg) sys.exit(-1) """ @@ -2392,6 +2392,8 @@ TEMPLATE_HEADER = """\ # WARNING! All changes made in this file will be lost! # +from __future__ import print_function # this allows py2 to print(str1,str2) correctly + import sys import getopt from xml.dom import minidom @@ -2529,7 +2531,7 @@ Options: \"\"\" def usage(): - print USAGE_TEXT + print(USAGE_TEXT) sys.exit(-1) @@ -2558,10 +2560,10 @@ def parseSelect(inFileName): except StopIteration: topElementName = documentHandler.getTopElementName() if topElementName is None: - raise RuntimeError, 'no top level element' + raise RuntimeError('no top level element') topElementName = topElementName.replace('-', '_').replace(':', '_') if topElementName not in globals(): - raise RuntimeError, 'no class for top element: %%s' %% topElementName + raise RuntimeError('no class for top element: %%s' %% topElementName) topElement = globals()[topElementName] infile.seek(0) doc = minidom.parse(infile) diff --git a/src/Tools/generateBase/generateMetaModel_Module.xsd b/src/Tools/generateBase/generateMetaModel_Module.xsd index 535807dc42..dfd25df4a8 100644 --- a/src/Tools/generateBase/generateMetaModel_Module.xsd +++ b/src/Tools/generateBase/generateMetaModel_Module.xsd @@ -43,9 +43,9 @@ - + - + diff --git a/src/Tools/generateBase/generateModel_Module.py b/src/Tools/generateBase/generateModel_Module.py index 468c0d16cd..72d718eb86 100644 --- a/src/Tools/generateBase/generateModel_Module.py +++ b/src/Tools/generateBase/generateModel_Module.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -# Generated Thu Apr 27 21:48:12 2017 by generateDS.py. +# Generated Mon Aug 21 13:00:21 2017 by generateDS.py. # Update it with: python generateDS.py -o generateModel_Module.py generateMetaModel_Module.xsd # # WARNING! All changes made in this file will be lost! @@ -744,14 +744,14 @@ class Attribute: class Sequence: subclass = None - def __init__(self, sq_slice=0, sq_item=0, sq_concat=0, sq_inplace_repeat=0, sq_ass_slice=0, sq_contains=0, sq_ass_item=0, sq_repeat=0, sq_length=0, sq_inplace_concat=0, valueOf_=''): - self.sq_slice = sq_slice + def __init__(self, sq_ass_item=0, sq_item=0, sq_concat=0, sq_inplace_repeat=0, mp_ass_subscript=0, mp_subscript=0, sq_contains=0, sq_repeat=0, sq_length=0, sq_inplace_concat=0, valueOf_=''): + self.sq_ass_item = sq_ass_item self.sq_item = sq_item self.sq_concat = sq_concat self.sq_inplace_repeat = sq_inplace_repeat - self.sq_ass_slice = sq_ass_slice + self.mp_ass_subscript = mp_ass_subscript + self.mp_subscript = mp_subscript self.sq_contains = sq_contains - self.sq_ass_item = sq_ass_item self.sq_repeat = sq_repeat self.sq_length = sq_length self.sq_inplace_concat = sq_inplace_concat @@ -762,20 +762,20 @@ class Sequence: else: return Sequence(*args_, **kwargs_) factory = staticmethod(factory) - def getSq_slice(self): return self.sq_slice - def setSq_slice(self, sq_slice): self.sq_slice = sq_slice + def getSq_ass_item(self): return self.sq_ass_item + def setSq_ass_item(self, sq_ass_item): self.sq_ass_item = sq_ass_item def getSq_item(self): return self.sq_item def setSq_item(self, sq_item): self.sq_item = sq_item def getSq_concat(self): return self.sq_concat def setSq_concat(self, sq_concat): self.sq_concat = sq_concat def getSq_inplace_repeat(self): return self.sq_inplace_repeat def setSq_inplace_repeat(self, sq_inplace_repeat): self.sq_inplace_repeat = sq_inplace_repeat - def getSq_ass_slice(self): return self.sq_ass_slice - def setSq_ass_slice(self, sq_ass_slice): self.sq_ass_slice = sq_ass_slice + def getMp_ass_subscript(self): return self.mp_ass_subscript + def setMp_ass_subscript(self, mp_ass_subscript): self.mp_ass_subscript = mp_ass_subscript + def getMp_subscript(self): return self.mp_subscript + def setMp_subscript(self, mp_subscript): self.mp_subscript = mp_subscript def getSq_contains(self): return self.sq_contains def setSq_contains(self, sq_contains): self.sq_contains = sq_contains - def getSq_ass_item(self): return self.sq_ass_item - def setSq_ass_item(self, sq_ass_item): self.sq_ass_item = sq_ass_item def getSq_repeat(self): return self.sq_repeat def setSq_repeat(self, sq_repeat): self.sq_repeat = sq_repeat def getSq_length(self): return self.sq_length @@ -793,13 +793,13 @@ class Sequence: showIndent(outfile, level) outfile.write('\n' % name_) def exportAttributes(self, outfile, level, name_='Sequence'): - outfile.write(' sq_slice="%s"' % (self.getSq_slice(), )) + outfile.write(' sq_ass_item="%s"' % (self.getSq_ass_item(), )) outfile.write(' sq_item="%s"' % (self.getSq_item(), )) outfile.write(' sq_concat="%s"' % (self.getSq_concat(), )) outfile.write(' sq_inplace_repeat="%s"' % (self.getSq_inplace_repeat(), )) - outfile.write(' sq_ass_slice="%s"' % (self.getSq_ass_slice(), )) + outfile.write(' mp_ass_subscript="%s"' % (self.getMp_ass_subscript(), )) + outfile.write(' mp_subscript="%s"' % (self.getMp_subscript(), )) outfile.write(' sq_contains="%s"' % (self.getSq_contains(), )) - outfile.write(' sq_ass_item="%s"' % (self.getSq_ass_item(), )) outfile.write(' sq_repeat="%s"' % (self.getSq_repeat(), )) outfile.write(' sq_length="%s"' % (self.getSq_length(), )) outfile.write(' sq_inplace_concat="%s"' % (self.getSq_inplace_concat(), )) @@ -811,7 +811,7 @@ class Sequence: self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, name_): showIndent(outfile, level) - outfile.write('sq_slice = "%s",\n' % (self.getSq_slice(),)) + outfile.write('sq_ass_item = "%s",\n' % (self.getSq_ass_item(),)) showIndent(outfile, level) outfile.write('sq_item = "%s",\n' % (self.getSq_item(),)) showIndent(outfile, level) @@ -819,12 +819,12 @@ class Sequence: showIndent(outfile, level) outfile.write('sq_inplace_repeat = "%s",\n' % (self.getSq_inplace_repeat(),)) showIndent(outfile, level) - outfile.write('sq_ass_slice = "%s",\n' % (self.getSq_ass_slice(),)) + outfile.write('mp_ass_subscript = "%s",\n' % (self.getMp_ass_subscript(),)) + showIndent(outfile, level) + outfile.write('mp_subscript = "%s",\n' % (self.getMp_subscript(),)) showIndent(outfile, level) outfile.write('sq_contains = "%s",\n' % (self.getSq_contains(),)) showIndent(outfile, level) - outfile.write('sq_ass_item = "%s",\n' % (self.getSq_ass_item(),)) - showIndent(outfile, level) outfile.write('sq_repeat = "%s",\n' % (self.getSq_repeat(),)) showIndent(outfile, level) outfile.write('sq_length = "%s",\n' % (self.getSq_length(),)) @@ -840,13 +840,13 @@ class Sequence: nodeName_ = child_.nodeName.split(':')[-1] self.buildChildren(child_, nodeName_) def buildAttributes(self, attrs): - if attrs.get('sq_slice'): - if attrs.get('sq_slice').value in ('true', '1'): - self.sq_slice = 1 - elif attrs.get('sq_slice').value in ('false', '0'): - self.sq_slice = 0 + if attrs.get('sq_ass_item'): + if attrs.get('sq_ass_item').value in ('true', '1'): + self.sq_ass_item = 1 + elif attrs.get('sq_ass_item').value in ('false', '0'): + self.sq_ass_item = 0 else: - raise ValueError('Bad boolean attribute (sq_slice)') + raise ValueError('Bad boolean attribute (sq_ass_item)') if attrs.get('sq_item'): if attrs.get('sq_item').value in ('true', '1'): self.sq_item = 1 @@ -868,13 +868,20 @@ class Sequence: self.sq_inplace_repeat = 0 else: raise ValueError('Bad boolean attribute (sq_inplace_repeat)') - if attrs.get('sq_ass_slice'): - if attrs.get('sq_ass_slice').value in ('true', '1'): - self.sq_ass_slice = 1 - elif attrs.get('sq_ass_slice').value in ('false', '0'): - self.sq_ass_slice = 0 + if attrs.get('mp_ass_subscript'): + if attrs.get('mp_ass_subscript').value in ('true', '1'): + self.mp_ass_subscript = 1 + elif attrs.get('mp_ass_subscript').value in ('false', '0'): + self.mp_ass_subscript = 0 else: - raise ValueError('Bad boolean attribute (sq_ass_slice)') + raise ValueError('Bad boolean attribute (mp_ass_subscript)') + if attrs.get('mp_subscript'): + if attrs.get('mp_subscript').value in ('true', '1'): + self.mp_subscript = 1 + elif attrs.get('mp_subscript').value in ('false', '0'): + self.mp_subscript = 0 + else: + raise ValueError('Bad boolean attribute (mp_subscript)') if attrs.get('sq_contains'): if attrs.get('sq_contains').value in ('true', '1'): self.sq_contains = 1 @@ -882,13 +889,6 @@ class Sequence: self.sq_contains = 0 else: raise ValueError('Bad boolean attribute (sq_contains)') - if attrs.get('sq_ass_item'): - if attrs.get('sq_ass_item').value in ('true', '1'): - self.sq_ass_item = 1 - elif attrs.get('sq_ass_item').value in ('false', '0'): - self.sq_ass_item = 0 - else: - raise ValueError('Bad boolean attribute (sq_ass_item)') if attrs.get('sq_repeat'): if attrs.get('sq_repeat').value in ('true', '1'): self.sq_repeat = 1 @@ -1971,14 +1971,14 @@ class SaxGeneratemodelHandler(handler.ContentHandler): done = 1 elif name == 'Sequence': obj = Sequence.factory() - val = attrs.get('sq_slice', None) + val = attrs.get('sq_ass_item', None) if val is not None: if val in ('true', '1'): - obj.setSq_slice(1) + obj.setSq_ass_item(1) elif val in ('false', '0'): - obj.setSq_slice(0) + obj.setSq_ass_item(0) else: - self.reportError('"sq_slice" attribute must be boolean ("true", "1", "false", "0")') + self.reportError('"sq_ass_item" attribute must be boolean ("true", "1", "false", "0")') val = attrs.get('sq_item', None) if val is not None: if val in ('true', '1'): @@ -2003,14 +2003,22 @@ class SaxGeneratemodelHandler(handler.ContentHandler): obj.setSq_inplace_repeat(0) else: self.reportError('"sq_inplace_repeat" attribute must be boolean ("true", "1", "false", "0")') - val = attrs.get('sq_ass_slice', None) + val = attrs.get('mp_ass_subscript', None) if val is not None: if val in ('true', '1'): - obj.setSq_ass_slice(1) + obj.setMp_ass_subscript(1) elif val in ('false', '0'): - obj.setSq_ass_slice(0) + obj.setMp_ass_subscript(0) else: - self.reportError('"sq_ass_slice" attribute must be boolean ("true", "1", "false", "0")') + self.reportError('"mp_ass_subscript" attribute must be boolean ("true", "1", "false", "0")') + val = attrs.get('mp_subscript', None) + if val is not None: + if val in ('true', '1'): + obj.setMp_subscript(1) + elif val in ('false', '0'): + obj.setMp_subscript(0) + else: + self.reportError('"mp_subscript" attribute must be boolean ("true", "1", "false", "0")') val = attrs.get('sq_contains', None) if val is not None: if val in ('true', '1'): @@ -2019,14 +2027,6 @@ class SaxGeneratemodelHandler(handler.ContentHandler): obj.setSq_contains(0) else: self.reportError('"sq_contains" attribute must be boolean ("true", "1", "false", "0")') - val = attrs.get('sq_ass_item', None) - if val is not None: - if val in ('true', '1'): - obj.setSq_ass_item(1) - elif val in ('false', '0'): - obj.setSq_ass_item(0) - else: - self.reportError('"sq_ass_item" attribute must be boolean ("true", "1", "false", "0")') val = attrs.get('sq_repeat', None) if val is not None: if val in ('true', '1'): diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py index 0c48fd3b15..7b961ba185 100644 --- a/src/Tools/generateTemplates/templateClassPyExport.py +++ b/src/Tools/generateTemplates/templateClassPyExport.py @@ -66,6 +66,7 @@ public: - + if (self.export.Sequence): static PySequenceMethods Sequence[]; + static PyMappingMethods Mapping[]; - + if (self.export.RichCompare): static PyObject * richCompare(PyObject *v, PyObject *w, int op); @@ -180,14 +181,14 @@ public: + if (self.export.Sequence.sq_item): static PyObject * sequence_item(PyObject *, Py_ssize_t); - -+ if (self.export.Sequence.sq_slice): - static PyObject * sequence_slice(PyObject *, Py_ssize_t, Py_ssize_t); ++ if (self.export.Sequence.mp_subscript): + static PyObject * mapping_subscript(PyObject *, PyObject *); - + if (self.export.Sequence.sq_ass_item): static int sequence_ass_item(PyObject *, Py_ssize_t, PyObject *); - -+ if (self.export.Sequence.sq_ass_slice): - static int sequence_ass_slice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); ++ if (self.export.Sequence.mp_ass_subscript): + static int mapping_ass_subscript(PyObject *, PyObject *, PyObject *); - + if (self.export.Sequence.sq_contains): static int sequence_contains(PyObject *, PyObject *); @@ -286,10 +287,11 @@ PyTypeObject @self.export.Name@::Type = { - + if (self.export.Sequence): @self.export.Namespace@::@self.export.Name@::Sequence, /*tp_as_sequence*/ + @self.export.Namespace@::@self.export.Name@::Mapping, /*tp_as_mapping*/ = else: 0, /*tp_as_sequence*/ -- 0, /*tp_as_mapping*/ +- 0, /*tp_hash*/ 0, /*tp_call */ 0, /*tp_str */ @@ -445,21 +447,13 @@ PySequenceMethods VectorPy::Sequence[] = { { = else: 0, - -+ if (self.export.Sequence.sq_slice): - sequence_slice, -= else: 0, -- + if (self.export.Sequence.sq_ass_item): sequence_ass_item, = else: 0, - -+ if (self.export.Sequence.sq_ass_slice): - sequence_ass_slice, -= else: 0, -- + if (self.export.Sequence.sq_contains): sequence_contains, = else: @@ -476,6 +470,24 @@ PySequenceMethods VectorPy::Sequence[] = { { 0 - } }; + +PyMappingMethods VectorPy::Mapping[] = { { ++ if (self.export.Sequence.sq_length): + sequence_length, += else: + 0, +- ++ if (self.export.Sequence.mp_subscript): + mapping_subscript, += else: + 0, +- ++ if (self.export.Sequence.mp_ass_subscript): + mapping_ass_subscript, += else: + 0, +- +} }; - /// Attribute structure of @self.export.Name@ @@ -1073,9 +1085,9 @@ PyObject * @self.export.Name@::sequence_item(PyObject *, Py_ssize_t) return 0; } - -+ if (self.export.Sequence.sq_slice): ++ if (self.export.Sequence.mp_subscript): -PyObject * @self.export.Name@::sequence_slice(PyObject *, Py_ssize_t, Py_ssize_t) +PyObject * @self.export.Name@::mapping_subscript(PyObject *, PyObject *) { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return 0; @@ -1089,9 +1101,9 @@ int @self.export.Name@::sequence_ass_item(PyObject *, Py_ssize_t, PyObject *) return -1; } - -+ if (self.export.Sequence.sq_ass_slice): ++ if (self.export.Sequence.mp_ass_subscript): -int @self.export.Name@::sequence_ass_slice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *) +int @self.export.Name@::mapping_ass_subscript(PyObject *, PyObject *, PyObject *) { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return -1; @@ -1391,9 +1403,9 @@ PyObject * @self.export.Name@::sequence_item(PyObject *, Py_ssize_t) return 0; } - -+ if (self.export.Sequence.sq_slice): ++ if (self.export.Sequence.mp_subscript): -PyObject * @self.export.Name@::sequence_slice(PyObject *, Py_ssize_t, Py_ssize_t) +PyObject * @self.export.Name@::mapping_subscript(PyObject *, PyObject *) { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return 0; @@ -1407,9 +1419,9 @@ int @self.export.Name@::sequence_ass_item(PyObject *, Py_ssize_t, PyObject *) return -1; } - -+ if (self.export.Sequence.sq_ass_slice): ++ if (self.export.Sequence.mp_ass_subscript): -int @self.export.Name@::sequence_ass_slice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *) +int @self.export.Name@::mapping_ass_subscript(PyObject *, PyObject *, PyObject *) { PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); return -1;