def generateInfoset(dts, infosetFile): if dts.fileSource.isArchive: return import os, io from arelle import XmlUtil, XbrlConst from arelle.ValidateXbrlCalcs import inferredPrecision, inferredDecimals XmlUtil.setXmlns(dts.modelDocument, "ptv", "http://www.xbrl.org/2003/ptv") numFacts = 0 for fact in dts.facts: try: if fact.concept.periodType: fact.set("{http://www.xbrl.org/2003/ptv}periodType", fact.concept.periodType) if fact.concept.balance: fact.set("{http://www.xbrl.org/2003/ptv}balance", fact.concept.balance) if fact.isNumeric and not fact.isNil: fact.set("{http://www.xbrl.org/2003/ptv}decimals", str(inferredDecimals(fact))) fact.set("{http://www.xbrl.org/2003/ptv}precision", str(inferredPrecision(fact))) numFacts += 1 except Exception as err: dts.error("saveInfoset.exception", _("Facts exception %(fact)s %(value)s %(error)s."), modelObject=fact, fact=fact.qname, value=fact.effectiveValue, error = err) fh = open(infosetFile, "w", encoding="utf-8") XmlUtil.writexml(fh, dts.modelDocument.xmlDocument, encoding="utf-8") fh.close() dts.info("info:saveInfoset", _("Infoset of %(entryFile)s has %(numberOfFacts)s facts in infoset file %(infosetOutputFile)s."), modelObject=dts, entryFile=dts.uri, numberOfFacts=numFacts, infosetOutputFile=infosetFile)
def generateInstanceInfoset(dts, instanceInfosetFile): if dts.fileSource.isArchive: return import os, io from arelle import XmlUtil, XbrlConst from arelle.ValidateXbrlCalcs import inferredPrecision, inferredDecimals XmlUtil.setXmlns(dts.modelDocument, "ptv", "http://www.xbrl.org/2003/ptv") numFacts = 0 for fact in dts.facts: try: if fact.concept.periodType: fact.set("{http://www.xbrl.org/2003/ptv}periodType", fact.concept.periodType) if fact.concept.balance: fact.set("{http://www.xbrl.org/2003/ptv}balance", fact.concept.balance) if fact.isNumeric and not fact.isNil: fact.set("{http://www.xbrl.org/2003/ptv}decimals", str(inferredDecimals(fact))) fact.set("{http://www.xbrl.org/2003/ptv}precision", str(inferredPrecision(fact))) numFacts += 1 except Exception as err: dts.error("saveInfoset.exception", _("Facts exception %(fact)s %(value)s %(error)s."), modelObject=fact, fact=fact.qname, value=fact.effectiveValue, error = err) fh = open(instanceInfosetFile, "w", encoding="utf-8") XmlUtil.writexml(fh, dts.modelDocument.xmlDocument, encoding="utf-8") fh.close() dts.info("info:saveInstanceInfoset", _("Instance infoset of %(entryFile)s has %(numberOfFacts)s facts in infoset file %(infosetOutputFile)s."), modelObject=dts, entryFile=dts.uri, numberOfFacts=numFacts, infosetOutputFile=instanceInfosetFile)
def generateInstanceInfoset(dts, instanceInfosetFile): if dts.fileSource.isArchive: return import os, io from arelle import XmlUtil, XbrlConst from arelle.ValidateXbrlCalcs import inferredPrecision, inferredDecimals XmlUtil.setXmlns(dts.modelDocument, u"ptv", u"http://www.xbrl.org/2003/ptv") numFacts = 0 for fact in dts.facts: try: if fact.concept.periodType: fact.set(u"{http://www.xbrl.org/2003/ptv}periodType", fact.concept.periodType) if fact.concept.balance: fact.set(u"{http://www.xbrl.org/2003/ptv}balance", fact.concept.balance) if fact.isNumeric and not fact.isNil: fact.set(u"{http://www.xbrl.org/2003/ptv}decimals", unicode(inferredDecimals(fact))) fact.set(u"{http://www.xbrl.org/2003/ptv}precision", unicode(inferredPrecision(fact))) numFacts += 1 except Exception, err: dts.error(u"saveInfoset.exception", _(u"Facts exception %(fact)s %(value)s %(error)s."), modelObject=fact, fact=fact.qname, value=fact.effectiveValue, error = err)
def isNil(self, value): """:param value: if true, set xsi:nil to 'true', if false, remove xsi:nil attribute """ if value: XmlUtil.setXmlns(self.modelDocument, "xsi", "http://www.w3.org/2001/XMLSchema-instance") self.set("{http://www.w3.org/2001/XMLSchema-instance}nil", "true") self.attrib.pop("decimals", "0") # can't leave decimals or precision self.attrib.pop("precision", "0") del self._decimals del self._precision else: # also remove decimals and precision, if they were there self.attrib.pop("{http://www.w3.org/2001/XMLSchema-instance}nil", "false")