PourTraduction = False
from .balisesXSD import *
+
# -----------------
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)
# ----------------------------------------
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 :
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()
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]
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)
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)
# --> 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 :
#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)
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:]
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))