Changeset 385


Ignore:
Timestamp:
18/09/15 13:35:29 (5 years ago)
Author:
mjuckes
Message:

updates to drqe.py and others

Location:
CMIP6dreqbuild/trunk/src/framework
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/src/framework/Makefile

    r370 r385  
    11 
    22 
     3targ ?= dreq 
    34 
    45 
    56.PHONY: config checkSamp schema checkSchema 
    67 
    7 config: out/dreqSample.xml out/dreqDefn.xml checkSamp  
     8config: out/$(targ)Sample.xml out/$(targ)Defn.xml checkSamp  
    89 
    910configV: out/vocabSample.xml out/vocabDefn.xml checkVSamp  
     
    1718        python ptxt.py -f dreq.txt upd 
    1819 
    19 out/dreqSample.xml: ../../docs/dreq.txt ptxt.py  
    20         python ptxt.py -f dreq.txt samp 
     20out/$(targ)Sample.xml: ../../docs/$(targ).txt ptxt.py  
     21        python ptxt.py -f $(targ).txt samp 
    2122 
    22 out/dreqDefn.xml: ../../docs/dreq.txt ptxt.py 
    23         python ptxt.py -f dreq.txt defn 
     23out/$(targ)Defn.xml: ../../docs/$(targ).txt ptxt.py 
     24        python ptxt.py -f $(targ).txt defn 
    2425 
    2526out/vocabSample.xml: ../../docs/vocab.txt ptxt.py  
     
    3334 
    3435checkSamp: 
    35         xmllint --noout --schema ../../docs/vocabFrameworkSchema.xsd out/dreqDefn.xml 
     36        xmllint --noout --schema ../../docs/vocabFrameworkSchema.xsd out/$(targ)Defn.xml 
    3637 
    3738checkSampU: 
    3839        xmllint --noout --schema ../../docs/vocabFrameworkSchema.xsd out/dreqUpdDefn.xml 
    3940 
    40 schema: config out/dreqSchema.xsd checkSchema 
     41schema: config out/$(targ)Schema.xsd checkSchema 
    4142 
    4243schemaV: configV out/vocabSchema.xsd checkSchemaV 
    4344 
    44 out/dreqSchema.xsd: ../../docs/xlst_xdsSchemaGen.xml config  out/dreqDefn.xml 
    45         xsltproc ../../docs/xlst_xdsSchemaGen.xml out/dreqDefn.xml > out/dreqSchema.xsd 
     45xsd: ../../docs/xlst_xdsSchemaGen.xml config  out/$(targ)Defn.xml 
     46        xsltproc ../../docs/xlst_xdsSchemaGen.xml out/$(targ)Defn.xml > out/$(targ)Schema.xsd 
    4647 
    4748out/vocabSchema.xsd: ../../docs/xlst_xdsSchemaGen.xml configV  out/vocabDefn.xml 
     
    4950 
    5051checkSchema: 
    51         xmllint --noout --schema out/dreqSchema.xsd out/dreqSample.xml 
     52        xmllint --noout --schema out/$(targ)Schema.xsd out/$(targ)Sample.xml 
    5253 
    5354checkSchemaV: 
  • CMIP6dreqbuild/trunk/src/framework/dreq.py

    r382 r385  
    77import xml.dom 
    88import xml.dom.minidom 
     9import re 
     10 
     11class rechecks(object): 
     12  def __init__(self): 
     13    self.__isInt = re.compile( '-{0,1}[0-9]+' ) 
     14 
     15  def isIntStr( self, tv ): 
     16    if type( tv ) not in {type(''),type(u'')}: 
     17      self.reason = 'NOT STRING' 
     18      return False 
     19    ok = self.__isInt.match( tv ) != None 
     20    if not ok: 
     21      self.reason = 'Failed to match regular expression for integers' 
     22    else: 
     23      self.reason = '' 
     24    return ok 
    925 
    1026class dreqItemBase(object): 
    1127       __doc__ = """A base class used in the definition of records. Designed to be used via a class factory which sets "itemLabelMode" and "attributes" before the class is instantiated: attempting to instantiate the class before setting these will trigger an exception.""" 
    12        def __init__(self,dict=None,xmlMiniDom=None,id='defaultId'): 
     28       def __init__(self,dict=None,xmlMiniDom=None,id='defaultId',parent=None): 
    1329         dictMode = dict != None 
     30         self.parent = parent  
    1431         mdMode = xmlMiniDom != None 
    1532         assert not( dictMode and mdMode), 'Mode must be either dictionary of minidom: both assigned' 
     
    1734         self.defaults = { } 
    1835         self.globalDefault = '__unset__' 
     36         self.contentInitialised = False 
    1937         if dictMode: 
    2038           self.dictInit( dict ) 
    2139         elif mdMode: 
    2240           self.mdInit( xmlMiniDom ) 
     41 
     42       def __repr__(self): 
     43         if self.contentInitialised: 
     44           return 'Item <%s>: [%s] %s' % (self.parent.header.title,self.label,self.title) 
     45         else: 
     46           return 'Item <%s>: uninitialised' % self.parent.header.title 
     47 
     48       def __info__(self): 
     49         if self.contentInitialised: 
     50           print 'Item <%s>: [%s] %s' % (self.parent.header.title,self.label,self.title) 
     51           for a in self.__dict__.keys(): 
     52             if a != 'parent': 
     53               print '    %s: %s' % ( a, self.__dict__[a] ) 
     54         else: 
     55           print 'Item <%s>: uninitialised' % self.sectionLabel 
    2356 
    2457       def dictInit( self, dict ): 
     
    2962           else: 
    3063             self.__dict__[a] = self.defaults.get( a, self.globalDefault ) 
     64         self.contentInitialised = True 
    3165 
    3266       def mdInit( self, el ): 
    3367         __doc__ = """Initialisation from a mindom XML element. The list of attributes must be set by the class factory before the class is initialised""" 
     68         deferredHandling=False 
     69         nw1 = 0 
    3470         for a in self.attributes: 
    3571           if el.hasAttribute( a ): 
    3672             v = el.getAttribute( a ) 
     73             if self.parent.attributes[a].type == u'xs:integer': 
     74               if self.rc.isIntStr( v ): 
     75                 v = int(v) 
     76               else: 
     77                 v = string.strip(v) 
     78                 thissect = '%s [%s]' % (self.parent.header.title,self.parent.header.tag) 
     79                 if v in { '',u'',' ', u' '}: 
     80                   if nw1 < 20: 
     81                     print 'WARN.050.0001: input integer non-compliant: %s: %s: "%s" -- set to zero' % (thissect,a,v) 
     82                     nw1 += 1 
     83                   v = 0 
     84                 else: 
     85                   try: 
     86                     v = int(float(v)) 
     87                     print 'WARN: input integer non-compliant: %s: %s: %s' % (thissect,a,v) 
     88                   except: 
     89                     msg = 'ERROR: failed to convert integer: %s: %s: %s' % (thissect,a,v) 
     90                     deferredHandling=True 
     91             elif self.parent.attributes[a].type == u'xs:boolean': 
     92               v = str(v) in {'true','1'} 
    3793             self.__dict__[a] = v 
    3894           else: 
     95             if a in {'uid'}: 
     96               thissect = '%s [%s]' % (self.parent.header.title,self.parent.header.tag) 
     97               print 'ERROR.020.0001: missing uid: %s' % thissect 
    3998             self.__dict__[a] = self.defaults.get( a, self.globalDefault ) 
     99 
     100           if type( self.__dict__.get( 'rowIndex', 0 ) ) != type(0): 
     101             print 'Bad row index ', el.hasAttribute( 'rowIndex' ) 
     102             raise 
     103           if deferredHandling: 
     104             print msg 
     105             ##ee = {} 
     106             ##for a in self.attributes: 
     107               ##ee[a] = self.__dict__.get(a,'unset') 
     108             ##print ee 
     109         self.contentInitialised = True 
    40110 
    41111     
     
    44114 
    45115  def __init__(self, configdoc='out/dreqDefn.xml', thisdoc='../workbook/trial_20150724.xml'): 
     116    self.rc = rechecks() 
    46117    self.silent = True 
    47118    self.vdef = configdoc 
     
    80151         
    81152        for i in il: 
    82           ii = self.tableClasses[k](xmlMiniDom=i) 
     153          ii = self.tableClasses[k](xmlMiniDom=i,parent=self.recordAttributeDefn[k]) 
    83154          self.tableItems[k].append( ii ) 
    84155      elif len(vl) > 1: 
     
    114185     dreqItem.itemLabelMode = itemLabelMode 
    115186     dreqItem.attributes = attributes 
     187     dreqItem.rc = self.rc 
    116188     return dreqItem 
    117189          
     
    147219  """Simple container class, to hold a set of dictionaries of lists.""" 
    148220  def __init__(self, atl ): 
    149     self.uuid = {} 
     221    self.uid = {} 
    150222    for a in atl: 
    151223      self.__dict__[a] =  collections.defaultdict( list ) 
     
    156228class index(object): 
    157229  """Create an index of the document. Cross-references are generated from attributes with class 'internalLink'.  
    158 This version assumes that each record is identified by an "uuid" attribute and that there is a "var" section.  
     230This version assumes that each record is identified by an "uid" attribute and that there is a "var" section.  
    159231Invalid internal links are recorded in tme "missingIds" dictionary.  
    160 For any record, with identifier u, iref_by_uuid[u] gives a list of the section and identifier of records linking to that record. 
     232For any record, with identifier u, iref_by_uid[u] gives a list of the section and identifier of records linking to that record. 
    161233""" 
    162234 
    163235  def __init__(self, dreq): 
    164236    self.silent = True 
    165     self.uuid = {} 
    166     self.uuid2 = collections.defaultdict( list ) 
    167     nativeAtts = ['uuid','iref_by_uuid','iref_by_sect','missingIds'] 
     237    self.uid = {} 
     238    self.uid2 = collections.defaultdict( list ) 
     239    nativeAtts = ['uid','iref_by_uid','iref_by_sect','missingIds'] 
    168240    naok = map( lambda x: not dreq.has_key(x), nativeAtts ) 
    169241    assert all(naok), 'This version cannot index collections containing sections with names: %s' % str( nativeAtts ) 
    170     self.var_uuid = {} 
     242    self.var_uid = {} 
    171243    self.var_by_name = collections.defaultdict( list ) 
    172244    self.var_by_sn = collections.defaultdict( list ) 
    173     self.iref_by_uuid = collections.defaultdict( list ) 
     245    self.iref_by_uid = collections.defaultdict( list ) 
    174246    irefdict = collections.defaultdict( list ) 
    175247    for k in dreq.keys(): 
     
    187259    for k in dreq.keys(): 
    188260        for i in dreq[k].items: 
    189           if self.uuid.has_key(i.uuid): 
    190             print 'ERROR.100.0001: Duplicate uuid: %s' % i.uuid 
    191             self.uuid2[i.uuid].append( (k,i) ) 
     261          assert i.__dict__.has_key('uid'), 'uid not found::\n%s\n%s' % (str(i.parent.header),str(i.__dict__) ) 
     262          if self.uid.has_key(i.uid): 
     263            print 'ERROR.100.0001: Duplicate uid: %s [%s]' % (i.uid,i.parent.header.title) 
     264            self.uid2[i.uid].append( (k,i) ) 
    192265          else: 
    193             self.uuid[i.uuid] = (k,i) 
     266            self.uid[i.uid] = (k,i) 
    194267 
    195268    self.missingIds = collections.defaultdict( list ) 
     
    202275            id2 = i.__dict__.get( k2 ) 
    203276            if id2 != '__unset__': 
    204               self.iref_by_uuid[ id2 ].append( (k2,i.uuid) ) 
    205               self.iref_by_sect[ id2 ].a[k2].append( i.uuid ) 
    206               if self.uuid.has_key( id2 ): 
     277              self.iref_by_uid[ id2 ].append( (k2,i.uid) ) 
     278              self.iref_by_sect[ id2 ].a[k2].append( i.uid ) 
     279              if self.uid.has_key( id2 ): 
    207280                n1 += 1 
    208281              else: 
    209282                n2 += 1 
    210                 self.missingIds[id2].append( (k,k2,i.uuid) ) 
     283                self.missingIds[id2].append( (k,k2,i.uid) ) 
    211284          self.info(  'INFO:: %s, %s:  %s (%s)' % (k,k2,n1,n2) ) 
    212285 
    213286    for k in dreq.keys(): 
    214287      for i in dreq[k].items: 
    215         self.__dict__[k].uuid[i.uuid] = i 
    216         self.__dict__[k].label[i.label].append( i.uuid ) 
     288        self.__dict__[k].uid[i.uid] = i 
     289        self.__dict__[k].label[i.label].append( i.uid ) 
    217290        if dreq[k].attDefn.has_key('sn'): 
    218           self.__dict__[k].sn[i.sn].append( i.uuid ) 
     291          self.__dict__[k].sn[i.sn].append( i.uid ) 
    219292 
    220293  def info(self,ss): 
     
    225298src1 = '../workbook/trial_20150831.xml' 
    226299class loadDreq(object): 
    227   def __init__(self,dreqXML='annotated_20150731.xml',configdoc='out/dreqDefn.xml' ): 
     300  def __init__(self,dreqXML='annotated_20150731.xml',configdoc='out/dreq2Defn.xml' ): 
    228301    self.c = config( thisdoc=dreqXML, configdoc=configdoc) 
    229302    self.coll = self.c.get() 
  • CMIP6dreqbuild/trunk/src/framework/ptxt.py

    r382 r385  
    130130           elif i.type == "xs:integer": 
    131131             value = '25' 
     132           elif i.type == "xs:boolean": 
     133             value = 'false' 
    132134           elif i.type == "xs:duration": 
    133135             value = 'P1Y' 
  • CMIP6dreqbuild/trunk/src/framework/scanDreq.py

    r382 r385  
    99empty=re.compile('^$') 
    1010 
    11 src1 = '../workbook/trial_20150831.xml' 
     11src1 = '../workbook/trial2_20150831.xml' 
    1212 
    1313dq = dreq.loadDreq(dreqXML=src1) 
    1414inx = dq.inx 
    1515##inx.makeVarRefs() 
    16 ix_rql_uuid = {} 
    17 ix_rqvg_uuid = {} 
    18 ix_ovar_uuid = {} 
    19 ix_gpi_uuid = {} 
     16ix_rql_uid = {} 
     17ix_rqvg_uid = {} 
     18ix_ovar_uid = {} 
     19ix_gpi_uid = {} 
    2020list_gp_ovar = collections.defaultdict( list ) 
    2121xr_var_ovar = collections.defaultdict( list ) 
     
    2323rql_by_name = collections.defaultdict( list ) 
    2424 
    25 def makeVarRefs(uuid, var, iref_by_uuid): 
     25def makeVarRefs(uid, var, iref_by_uid): 
    2626    varRefs = {} 
    27     for thisuuid in var.uuid.keys(): 
    28       if iref_by_uuid.has_key(thisuuid): 
     27    for thisuid in var.uid.keys(): 
     28      if iref_by_uid.has_key(thisuid): 
    2929        ee1 = collections.defaultdict( list ) 
    30         for k,i in iref_by_uuid[thisuuid]: 
    31           sect,thisi = uuid[i] 
     30        for k,i in iref_by_uid[thisuid]: 
     31          sect,thisi = uid[i] 
    3232          if sect == 'groupItem': 
    3333            ee1[sect].append( '%s.%s' % (thisi.mip, thisi.group) ) 
     
    3636          elif sect == 'revisedTabItem': 
    3737            ee1[sect].append( '%s.%s' % (thisi.mip, thisi.table) ) 
    38       varRefs[thisuuid] = ee1 
     38        varRefs[thisuid] = ee1 
    3939    return varRefs 
    4040 
    41 varRefs = makeVarRefs( inx.uuid, inx.var, inx.iref_by_uuid) 
     41varRefs = makeVarRefs( inx.uid, inx.var, inx.iref_by_uid) 
    4242 
    4343class updates(object): 
     
    121121  oo2 = open( 'uuidremove.csv', 'w' ) 
    122122  for k in up.repl.keys(): 
    123     if inx.iref_by_uuid.has_key(k): 
     123    if inx.iref_by_uid.has_key(k): 
    124124      kn = up.repl[k] 
    125       for tag,ki  in inx.iref_by_uuid[k]: 
     125      for tag,ki  in inx.iref_by_uid[k]: 
    126126         try: 
    127            oo.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' % (k,kn,tag,ki, inx.uuid[k][1].label,  inx.uuid[kn][1].label, inx.uuid[ki][1].label) ) 
     127           oo.write( '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' % (k,kn,tag,ki, inx.uid[k][1].label,  inx.uid[kn][1].label, inx.uid[ki][1].label) ) 
    128128         except: 
    129129           print k,kn,ki 
     
    141141  oo2 = open( 'uuidremove2.csv', 'w' ) 
    142142  for i in dq.coll['var'].items: 
    143     if not inx.iref_by_uuid.has_key(i.uuid): 
    144       oo2.write( string.join( [i.uuid,i.label,i.title,i.prov,i.description], '\t') + '\n' ) 
     143    if not inx.iref_by_uid.has_key(i.uid): 
     144      oo2.write( string.join( [i.uid,i.label,i.title,i.prov,i.description], '\t') + '\n' ) 
    145145  oo2.close() 
    146146 
     
    148148nbr = 0 
    149149lbr = [] 
    150 for k in inx.iref_by_uuid.keys(): 
    151   if not inx.uuid.has_key(k): 
     150for k in inx.iref_by_uid.keys(): 
     151  if not inx.uid.has_key(k): 
    152152   nbr += 1 
    153153   lbr.append(k) 
     
    156156 
    157157for i in dq.coll['requestLink'].items: 
    158    rql_by_name[i.label].append( i.uuid ) 
    159    ix_rql_uuid[i.uuid] = i 
     158   rql_by_name[i.label].append( i.uid ) 
     159   ix_rql_uid[i.uid] = i 
    160160 
    161161for i in dq.coll['requestVarGroup'].items: 
    162    ix_rqvg_uuid[i.uuid] = i 
    163  
    164  
     162   ix_rqvg_uid[i.uid] = i 
     163 
     164 
     165if dq.coll.has_key( 'revisedTabItem' ): 
     166  thisk = 'revisedTabItem' 
     167else: 
     168  thisk = 'requestVar' 
    165169oo = open( 'uuidinsert.csv', 'w' ) 
    166 for i in dq.coll['revisedTabItem'].items: 
    167   if i.uuid == '__new__': 
     170for i in dq.coll[thisk].items: 
     171  if i.uid == '__new__': 
    168172    if inx.var.label.has_key( i.label ): 
    169173      if len( inx.var.label[i.label] ) == 1: 
    170         v = inx.uuid[ inx.var.label[i.label][0] ][1] 
    171         oo.write( string.join( ['unique',i.label,v.label,v.uuid,v.prov,i.mip], '\t' ) + '\n' ) 
     174        v = inx.uid[ inx.var.label[i.label][0] ][1] 
     175        oo.write( string.join( ['unique',i.label,v.label,v.uid,v.prov,i.mip], '\t' ) + '\n' ) 
    172176      else: 
    173177        oo.write( string.join( ['ambiguous',i.label,i.mip,str(len(inx.var.label[i.label] ) ) ], '\t' ) + '\n' ) 
     
    177181oo2 = open( 'varDup.csv', 'w' ) 
    178182oo3 = open( 'varStar.csv', 'w' ) 
    179 hs = ['label','title','sn','units','description','prov','procnote','procComment','uuid'] 
     183hs = ['label','title','sn','units','description','prov','procnote','procComment','uid'] 
    180184oo.write( string.join(hs, '\t' ) + '\n' ) 
    181185oo2.write( string.join(hs, '\t' ) + '\n' ) 
     
    190194for k in ks: 
    191195  if len(inx.var.label[k]) == 2: 
    192     v1 = inx.var.uuid[inx.var.label[k][0]] 
    193     v2 = inx.var.uuid[inx.var.label[k][1]] 
     196    v1 = inx.var.uid[inx.var.label[k][0]] 
     197    v2 = inx.var.uid[inx.var.label[k][1]] 
    194198    cc = map( lambda x: entryEq( v1.__dict__[x], v2.__dict__[x]), ['title','sn','units','description']  ) 
    195199    if all(cc): 
    196200### where duplicates are identical , collect and output at end of file. 
    197       deferredRecs.append( string.join(map( lambda x: v1.__dict__[x], hs) + [v2.uuid,'identical'], '\t' ) + '\n' ) 
     201      deferredRecs.append( string.join(map( lambda x: v1.__dict__[x], hs) + [v2.uid,'identical'], '\t' ) + '\n' ) 
    198202      deferredRecs.append( string.join(map( lambda x: v2.__dict__[x], hs) + ['',''], '\t' ) + '\n' ) 
    199203    else: 
     
    203207  elif len(inx.var.label[k]) > 1: 
    204208    for i in inx.var.label[k]: 
    205       oo.write( string.join(map( lambda x: inx.var.uuid[i].__dict__[x], hs), '\t' ) + '\n' ) 
     209      oo.write( string.join(map( lambda x: inx.var.uid[i].__dict__[x], hs), '\t' ) + '\n' ) 
    206210 
    207211  if k[-2:] == '--': 
    208212    for i in (inx.var.label[k] + inx.var.label[k[:-2]]): 
    209       oo3.write( string.join(map( lambda x: inx.var.uuid[i].__dict__[x], hs), '\t' ) + '\n' ) 
     213      oo3.write( string.join(map( lambda x: inx.var.uid[i].__dict__[x], hs), '\t' ) + '\n' ) 
    210214 
    211215## output auto-filled records for identical duplicates at end of varDup file. 
     
    217221 
    218222 
    219 for i in dq.coll['groupItem'].items: 
    220    list_gp_ovar[i.gpid].append( i.uuid ) 
    221223 
    222224vns = inx.var.label.keys() 
     
    224226for v in vns: 
    225227  if len( inx.var.label[v] ) > 1: 
    226      print 'INFO.001.0001:',v, string.join( map( lambda x: inx.var.uuid[x].sn, inx.var.label[v] ), ';' ) 
     228     print 'INFO.001.0001:',v, string.join( map( lambda x: inx.var.uid[x].sn, inx.var.label[v] ), ';' ) 
    227229 
    228230nok = 0 
    229231nerr = 0 
    230 for i in dq.coll['ovar'].items: 
     232if dq.coll.has_key( 'ovar' ): 
     233  thisk = 'ovar' 
     234else: 
     235  thisk = 'CMORvar' 
     236for i in dq.coll[thisk].items: 
    231237   vid = i.vid 
    232    ix_ovar_uuid[i.uuid] = i 
    233    xr_var_ovar[vid].append( i.uuid ) 
    234    if not inx.var.uuid.has_key(vid): 
    235      print 'missing key:',i.__dict__ 
     238   ix_ovar_uid[i.uid] = i 
     239   xr_var_ovar[vid].append( i.uid ) 
     240   if not inx.var.uid.has_key(vid): 
     241     print 'missing key:',i.label, i.prov 
    236242     nerr += 1 
    237243   else: 
    238244     nok += 1 
    239  
    240 nok = 0 
    241 nerr = 0 
    242 for i in dq.coll['groupItem'].items: 
    243    vid = i.vid 
    244    ix_gpi_uuid[i.uuid] = i 
    245    xr_var_gpi[vid].append( i.uuid ) 
    246    if not inx.var.uuid.has_key(vid): 
    247      nerr += 1 
    248    else: 
    249      nok += 1 
    250 print 'groupItem to var crossref: nok = %s, nerr = %s' % (nok, nerr) 
    251245 
    252246class rqHtml(object): 
     
    258252 
    259253  def mkRqlHtml(self,name): 
    260      ## [u'comment', u'uuid', u'tab', u'title', u'label', u'grid', 'defaults', u'objective', u'mip', 'globalDefault', u'gridreq'] 
     254     ## [u'comment', u'uid', u'tab', u'title', u'label', u'grid', 'defaults', u'objective', u'mip', 'globalDefault', u'gridreq'] 
    261255    if len( rql_by_name[name] ) == 1: 
    262256      self.mkRqlHtml01(rql_by_name[name][0], name ) 
     
    270264    al =[] 
    271265    for i in range( len( rql_by_name[name] ) ): 
    272       this = ix_rql_uuid[rql_by_name[name][i]] 
     266      this = ix_rql_uid[rql_by_name[name][i]] 
    273267      al.append( tmpl.item % {'item':'<a href="rql__%s__%s.html">[%s]</a>: %s' % (name,i,i,this.title) } ) 
    274268    ee['items'] = string.join(al, '\n' ) 
     
    282276 
    283277  def mkRqlHtml01(self,id, tag): 
    284     this = ix_rql_uuid[id] 
     278    this = ix_rql_uid[id] 
    285279    ee = {} 
    286280    if this.label == tag: 
     
    315309    al =[] 
    316310    for i in range( len( inx.var.label[name] ) ): 
    317       this = inx.var.uuid[inx.var.label[name][i]] 
     311      this = inx.var.uid[inx.var.label[name][i]] 
    318312      al.append( tmpl.item % {'item':'<a href="var__%s__%s.html">[%s]</a>: %s' % (name,i,i,this.title) } ) 
    319313    ee['items'] = string.join(al, '\n' ) 
     
    328322 
    329323  def mkVarHtml01(self,id, tag): 
    330     this = inx.var.uuid[id] 
     324    this = inx.var.uid[id] 
    331325    ee = {} 
    332326    if this.label == tag: 
     
    343337        al.append( tmpl.item % {'item':'<b>%s</b>: %s' % (a,this.__dict__.get(a,'-- Not Set --')) } ) 
    344338 
    345     if inx.iref_by_uuid.has_key(this.uuid): 
    346       assert varRefs.has_key(this.uuid), 'Problem with collected references' 
    347       ee1 = varRefs[this.uuid] 
     339    if inx.iref_by_uid.has_key(this.uid): 
     340      assert varRefs.has_key(this.uid), 'Problem with collected references' 
     341      ee1 = varRefs[this.uid] 
    348342      ks = ee1.keys() 
    349343      ks.sort() 
     
    380374##for k in xr_var_ovar.keys(): 
    381375  ##if len( xr_var_ovar[k] ) > 1: 
    382      ##print inx.var.uuid[k].label, map( lambda x: ix_ovar_uuid[x].mipTable,  xr_var_ovar[k]  ) 
     376     ##print inx.var.uid[k].label, map( lambda x: ix_ovar_uid[x].mipTable,  xr_var_ovar[k]  ) 
    383377 
    384378shps = {'': 64, 'XYZKT': 13, '4-element vector': 2, 'XYT': 476, '2D vector field ': 2, 'KZT': 4, '2D vector field': 2, 'XYZ': 27, 'XYZT': 204, '2D': 83, 'scalar': 14, 'XY': 88, '?': 21, '2D ': 1, 'XYKT': 3, 'YZT': 16, 'ZST1': 15, 'XKT': 2, 'BasinYT': 1} 
     
    405399    tsmap2[i] = k 
    406400 
    407 ee = collections.defaultdict( int ) 
    408 for i in dq.coll['groupItem'].items: 
    409   tst = tsmap2[ i.tstyle ] 
    410   dd = '' 
    411   if 'X' in i.shape: 
    412     dd += 'latitude ' 
    413   if 'Y' in i.shape: 
    414     dd += 'longitude ' 
    415   if 'Z' in i.shape: 
    416     if i.levels == '': 
    417       print 'ERROR.001.0001: no levels specified', i.label, i.title 
    418     else: 
    419       zdim = vshpchkMap[i.levels] 
    420       dd +=  zdim  
     401if dq.coll.has_key( 'groupItem' ): 
     402  ee = collections.defaultdict( int ) 
     403  for i in dq.coll['groupItem'].items: 
     404    tst = tsmap2[ i.tstyle ] 
     405    dd = '' 
     406    if 'X' in i.shape: 
     407      dd += 'latitude ' 
     408    if 'Y' in i.shape: 
     409      dd += 'longitude ' 
     410    if 'Z' in i.shape: 
     411      if i.levels == '': 
     412        print 'ERROR.001.0001: no levels specified', i.label, i.title 
     413      else: 
     414        zdim = vshpchkMap[i.levels] 
     415        dd +=  zdim  
    421416  ## print '%s::%s::%s|%s' % (i.shape, i.levels, i.tstyle, dd) 
     417  for i in dq.coll['groupItem'].items: 
     418     list_gp_ovar[i.gpid].append( i.uid ) 
     419 
     420  nok = 0 
     421  nerr = 0 
     422  for i in dq.coll['groupItem'].items: 
     423     vid = i.vid 
     424     ix_gpi_uid[i.uid] = i 
     425     xr_var_gpi[vid].append( i.uid ) 
     426     if not inx.var.uid.has_key(vid): 
     427       nerr += 1 
     428     else: 
     429       nok += 1 
     430  print 'groupItem to var crossref: nok = %s, nerr = %s' % (nok, nerr) 
     431 
    422432 
    423433class tcmp(object): 
     
    440450  oo.write( string.join( atl, '\t' ) + '\n' ) 
    441451  for l in ll: 
    442     oo.write( string.join( map( lambda x: atRepr(l,x), atl), '\t' ) + '\n' ) 
     452    try: 
     453      oo.write( string.join( map( lambda x: str(atRepr(l,x)), atl), '\t' ) + '\n' ) 
     454    except: 
     455      print 'SEVERE.090.0001: print %s' % str(atl) 
     456      print l 
     457      raise 
    443458  oo.close() 
    444459 
     
    446461  oo = [] 
    447462  l1 = ['label','title'] 
    448   l2 = ['uuid','defaults','globalDefault'] 
     463  l2 = ['uid','defaults','globalDefault'] 
    449464  for i in l1: 
    450465    if i in ll: 
     
    454469    if i not in l1 + l2: 
    455470      oo.append(i) 
    456   if 'uuid' in ll: 
    457     oo.append( 'uuid' ) 
     471  if 'uid' in ll: 
     472    oo.append( 'uid' ) 
    458473  return oo 
    459474 
     
    462477    expl = dq.coll[k].items[0] 
    463478    atl = atlSort( expl.__dict__.keys() ) 
     479    atl.pop( atl.index('parent') ) 
    464480    print k, atl 
    465481    dumpcsv( 'csv2/%s.csv' % k, k, atl ) 
    466482   
    467483oo = open( 'var1.csv', 'w' ) 
    468 ks = ['label','title','sn','units','description','prov','procnote','procComment','uuid'] 
     484ks = ['label','title','sn','units','description','prov','procnote','procComment','uid'] 
    469485ks2 = [ 'ovar','groupItem','revisedTabItem'] 
    470486oo.write( string.join(ks + ks2, '\t' ) + '\n' ) 
    471487for i in dq.coll['var'].items: 
    472488   if i.label[-2:] != '--': 
    473      ee1 = varRefs.get( i.uuid, {} ) 
     489     ee1 = varRefs.get( i.uid, {} ) 
    474490     r2 = map( lambda x: string.join( ee1.get(x, [] ) ), ks2 ) 
    475491     oo.write( string.join(map( lambda x: i.__dict__[x], ks) + r2, '\t' ) + '\n' ) 
     
    498514        tn = str( len( mrefs[k] ) ) 
    499515        for t in mrefs[k]: 
    500           s = self.dreq.inx.uuid[t[2]][0] 
     516          s = self.dreq.inx.uid[t[2]][0] 
    501517          ee['%s.%s' % (s,t[1])] += 1 
    502518        if len( ee.keys() ) == 1: 
     
    505521          tattr = '__multiple__' 
    506522      item = self.doc.createElement( 'item' ) 
    507       item.setAttribute( 'uuid', k )   
     523      item.setAttribute( 'uid', k )   
    508524      item.setAttribute( 'tattr', tattr )   
    509525      if tn != None: 
Note: See TracChangeset for help on using the changeset viewer.