From 6d9a16f8bdd5f160065dac5ecb9dac035d307528 Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Tue, 23 Feb 2021 17:18:39 +0100 Subject: [PATCH] bug divers --- Efi2Xsd/AccasXsd.py | 90 +++++++++++++-------------------------------- 1 file changed, 26 insertions(+), 64 deletions(-) diff --git a/Efi2Xsd/AccasXsd.py b/Efi2Xsd/AccasXsd.py index b5daa9c0..1f1ab208 100755 --- a/Efi2Xsd/AccasXsd.py +++ b/Efi2Xsd/AccasXsd.py @@ -31,6 +31,7 @@ from .mapDesTypes import Tuple PourTraduction = False from .balisesXSD import * + # ----------------- class X_definition: # ----------------- @@ -62,17 +63,6 @@ class X_definition: if newListe not in listeFinale : listeFinale.append(newListe) return listeFinale - #def remplaceNomListeParContenu(self, liste1, liste2): - #print ('remplaceNomListeParContenu', liste1, liste2) - # listeFinale=[] - # for elt1 in liste1 : - # for eltListe in liste2: - # if eltListe == [] : continue - # newListe=deepcopy(elt1) - # if eltListe!=[] :newListe+=eltListe - # listeFinale.append(newListe) - #print ('listeFinale', listeFinale) - # return listeFinale def fusionne2Listes(self, liste1, liste2): #print ('fusionne2Liste', liste1, liste2) @@ -180,7 +170,7 @@ class X_compoFactoriseAmbigu(X_definition): # ---------------------------------------- def __init__(self,nom,listeDeCreation,pere, debug=False): - #if nom == 'blocSteady_blocSimulatedRijDefinition' : + #if nom == 'blocFormatFichierMed_blocFormatFichierAll' : debug = True # import traceback # traceback.print_stack() if debug : @@ -388,6 +378,7 @@ class X_compoFactoriseAmbigu(X_definition): def ajouteAuxTextes(self,nomMC,indent,debug=False) : + if nomMC == 'FileName' : debug=True if debug : print ('ajouteAuxTextes', nomMC, self.nom, self.entites[nomMC]) #if debug : # traceback.print_stack() @@ -395,11 +386,10 @@ class X_compoFactoriseAmbigu(X_definition): if (indent > 3) : indent = indent - 3 # PN change le 17 fevrier . Est-ce normal d arriver la ? - # il faut comprendre le cas de # if faut traiter les Blocs exclusifs qui donnent des choices de sequences # mais celles-ci risquent d etre ambigues while (isinstance(nomMC,list)) : - print ('nomMC anormal', nomMC) + print ('nomMC anormal (ou pas ? a traiter avec cata_Particle', nomMC) if len(nomMC) > 1 : print ('monMC vraiment anormal', monMC); exit() nomMC=nomMC[0] @@ -435,7 +425,7 @@ class X_compoFactoriseAmbigu(X_definition): if len(listePourUnion) == 1: mc=listePourUnion[0] mc.dumpXsd(dansFactorisation=True,multiple=False,first=first) - if mc.aCreer : self.texteComplexe += '\t'*(indent) + mc.texteElt + self.texteComplexe += '\t'*(indent) + mc.texteElt if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe if mc.aCreer : self.texteSimple += mc.texteSimple for mcIdent in self.entites[nomMC][1:]: mcIdent.metAJourPyxb(mc.nomDuTypePyxb) @@ -453,27 +443,26 @@ class X_compoFactoriseAmbigu(X_definition): nomTypePyxbUnion=self.entites[nomMC][0].nomDuTypePyxb texteSimpleUnion=debutSimpleType.format(nomTypePyxbUnion) texteSimpleUnion+=debutUnion - if nomMC == 'ParticleName' : print (texteSimpleUnion) - if len(listePourUnion) == 1 : + #if len(listePourUnion) == 1 : #PN 29 septembre 20. Est ce que ce if a un sens # si len(listePourUnion==1) on est deja sorti non ? - mc=self.entites[nomMC][0] - mc.dumpXsd(dansFactorisation=True,multiple=True,first=first) + # mc=self.entites[nomMC][0] + # mc.dumpXsd(dansFactorisation=True,multiple=True,first=first) # inutile - deja fait plus haut - if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe - if mc.aCreer : self.texteSimple += mc.texteSimple - else : - texteSimpleUnion += '\t'*(indent)+self.entites[nomMC][0].texteSimplePart2 - texteSimplePart1= self.entites[nomMC][0].texteSimplePart1 - for e in listePourUnion[1:] : - e.dumpXsd(dansFactorisation=True,multiple=True,first=False) - # si on ext un mc simple la ligne suivante est inutile - # en revanche on ajoute le texte a tous les coups - #self.texteComplexeVenantDesFils += e.texteComplexe - e.metAJourPyxb(nomTypePyxbUnion) - texteSimpleUnion += '\t'*(indent) + e.texteSimplePart2 - texteSimplePart1 += e.texteSimplePart1 - texteSimpleUnion += finUnion + # if mc.aCreer : self.texteComplexeVenantDesFils += mc.texteComplexe + # if mc.aCreer : self.texteSimple += mc.texteSimple + #else : + texteSimpleUnion += '\t'*(indent)+self.entites[nomMC][0].texteSimplePart2 + texteSimplePart1= self.entites[nomMC][0].texteSimplePart1 + for e in listePourUnion[1:] : + e.dumpXsd(dansFactorisation=True,multiple=True,first=False) + # si on ext un mc simple la ligne suivante est inutile + # en revanche on ajoute le texte a tous les coups + #self.texteComplexeVenantDesFils += e.texteComplexe + e.metAJourPyxb(nomTypePyxbUnion) + texteSimpleUnion += '\t'*(indent) + e.texteSimplePart2 + texteSimplePart1 += e.texteSimplePart1 + texteSimpleUnion += finUnion texteSimpleUnion+=fermeSimpleType self.texteSimple += texteSimplePart1 + texteSimpleUnion #print ('self.texteSimple', self.texteSimple) @@ -798,7 +787,7 @@ class X_SIMP (X_definition): # --> homonymie on peut utiliser genealogie ? self.nomDuTypeDeBase = self.traduitType() - #if self.nom == 'SubgridScaleModel' : debug =1 + if self.nom == 'FileName' : debug =1 if debug : print ('nomDuTypeDeBase', self.nomDuTypeDeBase) if debug : print ('multiple', multiple, 'first', first) if not multiple : @@ -1103,30 +1092,6 @@ class X_JDC_CATA : #if not PourTraduction : print (self.texteXSD) - # PN : version 0 de la construction des types a remplacer - #import pprint - #pprint.pprint(cata.dictTypesXSD) - #dicoARemplacer={} - #for k in list(cata.dictTypesXSD.keys()): - # if len(cata.dictTypesXSD[k])==1 : continue - # listeDesFacts=[] - # listeDesBlocs=[] - # listeDesBlocsAmbigus=[] - # for definition in cata.dictTypesXSD[k] : - # if definition.label == 'SIMP' : continue - # if definition.label == 'FACT' : listeDesFacts.append(definition) - # if definition.label == 'BLOC' : listeDesBlocs.append(definition) - # if definition.label == 'BlocAmbigu': listeDesBlocsAmbigus.append(definition) - # print (k,listeDesFacts,listeDesBlocs,listeDesBlocsAmbigus) - # for listeTraitee in listeDesFacts,listeDesBlocs,listeDesBlocsAmbigus: - # if len(listeTraitee) < 2 : continue - # dicoParTypePyxb={} - # for MC in listeTraitee : - # if MC.nomDuTypePyxb in list(dicoParTypePyxb.keys()): dicoParTypePyxb[MC.nomDuTypePyxb].append(MC) - # else : dicoParTypePyxb[MC.nomDuTypePyxb]=[MC,] - # for k in dicoParTypePyxb.keys() : - # if len(dicoParTypePyxb[k]) < 1 : - # dicoARemplacer[k]=dicoParTypePyxb[k][1:] import pprint #pprint.pprint (cata.dictTypesXSDJumeaux) @@ -1142,13 +1107,11 @@ class X_JDC_CATA : dico = {} for k in list(cata.dictTypesXSD.keys()): dico[k]={} + different=False for definition in cata.dictTypesXSD[k] : if definition.label == 'BLOC' or definition.label == 'BlocAmbigu':continue - if definition.nomDuTypePyxb == 'T_'+definition.nom : continue + if definition.nomDuTypePyxb != 'T_'+definition.nom : different=True listeATraiter=[definition.geneaCompleteSousFormeDeListe(),] - #print ('je traite', k, '____________________________' ) - #print (definition) - #print (definition.nomDuTypePyxb) while listeATraiter != [] : listeGenea=listeATraiter[0] listeATraiter=listeATraiter[1:] @@ -1157,14 +1120,13 @@ class X_JDC_CATA : for MC in listeGenea: txtNomComplet=txtNomComplet+'_'+MC.nom if MC in list(cata.dictTypesXSDJumeaux.keys()) : - #print ("aCrrer", indexMC) for MCJumeau in cata.dictTypesXSDJumeaux[MC]: # attention nvlleGenalogie n a pas de sens en Accas nvlleGenalogie=listeGenea[:indexMC]+MCJumeau.geneaCompleteSousFormeDeListe() listeATraiter.append(nvlleGenalogie) indexMC=indexMC+1 dico[k][txtNomComplet]=definition.nomDuTypePyxb - if dico[k]== {} : del dico[k] + if dico[k]== {} or (not different) : del dico[k] import pprint #pprint.pprint(dico) if dico != {} : self.texteXSD += texteAnnotation.format(self.nomDuCodeDumpe,str(dico)) -- 2.39.2