Ignore:
Timestamp:
09/07/18 10:39:34 (17 months ago)
Author:
mjuckes
Message:

beta

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreq/trunk/dreqPy/dreq.py

    r1217 r1235  
    8282     dreqItem.ns = ns 
    8383     return dreqItem 
    84  
    85           
    8684 
    8785## 
     
    154152       __charmeEnable__ = {} 
    155153       _extraHtml = {} 
     154       _strictRequired = False 
    156155 
    157156       def __init__(self,idict=None,xmlMiniDom=None,id='defaultId',etree=False): 
     
    169168           self.dictInit( idict ) 
    170169         elif mdMode: 
    171            self.mdInit( xmlMiniDom, etree=etree ) 
     170           try: 
     171             self.mdInit( xmlMiniDom, etree=etree ) 
     172           except: 
     173             print ('Exception raise initialising data request item') 
     174             raise 
    172175 
    173176       def hasattr(self,tag): 
     
    382385             else: 
    383386               tvtl.append( (a,False,None) ) 
     387               if self._strictRequired: 
     388                 assert False, 'Required attribute absent: %s:: %s' % (a,str(el.__dict__)) 
    384389         else: 
    385390           for a in self._a.keys(): 
     
    479484  """Read in a vocabulary collection configuration document and a vocabulary document""" 
    480485 
    481   def __init__(self, configdoc='out/dreqDefn.xml', thisdoc='../workbook/trial_20150724.xml', manifest=None, useShelve=False, strings=False,configOnly=False): 
     486  def __init__(self, configdoc='out/dreqDefn.xml', thisdoc='../workbook/trial_20150724.xml', manifest=None, useShelve=False, strings=False,configOnly=False,lxml=False): 
    482487    self.rc = rechecks() 
    483488    self.lu = lutilsC() 
     
    501506    self.docs = {} 
    502507    self.version = None 
     508    self.useLxml = lxml 
    503509 
    504510    if manifest != None: 
     
    548554    if not self.configOnly: 
    549555      if self.etree: 
    550         import xml.etree.cElementTree as cel 
     556        if self.useLxml: 
     557          import lxml 
     558          import lxml.etree as et 
     559        else: 
     560          import xml.etree.cElementTree as cel 
    551561       
    552562        if not pythonPre27: 
     
    554564          ## absence of registration means module cannot write data exactly as read. 
    555565          ## 
    556           cel.register_namespace('', "urn:w3id.org:cmip6.dreq.dreq:a") 
    557           cel.register_namespace('pav', "http://purl.org/pav/2.3") 
     566          if self.useLxml: 
     567            ##et.register_namespace('', "urn:w3id.org:cmip6.dreq.dreq:a") 
     568            et.register_namespace('pav', "http://purl.org/pav/2.3") 
     569          else: 
     570            cel.register_namespace('', "urn:w3id.org:cmip6.dreq.dreq:a") 
     571            cel.register_namespace('pav', "http://purl.org/pav/2.3") 
    558572 
    559573        if not self.strings: 
    560           if python2: 
     574          if self.useLxml: 
     575            ##parser = etree.XMLParser( remove_blank_text=True ) 
     576            ##self.contentDoc = et.parse( self.vsamp, parser  ) 
     577            self.contentDoc = et.parse( self.vsamp  ) 
     578          elif python2: 
    561579            parser = getParser()() 
    562580            self.contentDoc = cel.parse( self.vsamp, parser=parser ) 
     
    681699         
    682700          for i in il: 
    683             ii = self.tableClasses[k](xmlMiniDom=i, etree=True) 
     701            try: 
     702              ii = self.tableClasses[k](xmlMiniDom=i, etree=True) 
     703            except: 
     704              print ('Exception raises instantiating item in section %s' % k) 
     705              print ('At item uid=%s' % str(i) ) 
     706              raise 
    684707            self.tableItems[k].append( ii ) 
    685708        elif len(vl) > 1: 
     
    915938  useShelve: flag to specify whether to retrieve data from cache (not implemented) 
    916939  htmlStyles: dictionary of styling directives which influence structure of html page generates by the "makeHtml" method 
     940  lxml [False]: if true, use python lxml package for elementree module instead of the default xml package. 
    917941""" 
    918942 
    919   def __init__(self,dreqXML=None, configdoc=None, useShelve=False, htmlStyles=None, strings=False, manifest=defaultManifestPath , configOnly=False): 
     943  def __init__(self,dreqXML=None, configdoc=None, useShelve=False, htmlStyles=None, strings=False, manifest=defaultManifestPath , configOnly=False,lxml=False): 
    920944    if manifest == None: 
    921945      if dreqXML == None: 
     
    923947      if configdoc==None: 
    924948       configdoc=defaultConfigPath 
    925     self.c = config( thisdoc=dreqXML, configdoc=configdoc, useShelve=useShelve,strings=strings,manifest=manifest,configOnly=configOnly) 
     949    self.c = config( thisdoc=dreqXML, configdoc=configdoc, useShelve=useShelve,strings=strings,manifest=manifest,configOnly=configOnly,lxml=lxml) 
    926950    self.coll = self.c.coll 
    927951    self.version = self.c.version 
Note: See TracChangeset for help on using the changeset viewer.