def loadModule(moduleInfo): name = moduleInfo['name'] moduleURL = moduleInfo['moduleURL'] moduleFilename = _cntlr.webCache.getfilename(moduleURL, normalize=True, base=_pluginBase) if moduleFilename: try: if os.path.isdir(moduleFilename) and os.path.isfile(os.path.join(moduleFilename, "__init__.py")): moduleDir = os.path.dirname(moduleFilename) moduleName = os.path.basename(moduleFilename) else: moduleName = os.path.basename(moduleFilename).partition('.')[0] moduleDir = os.path.dirname(moduleFilename) file, path, description = imp.find_module(moduleName, [moduleDir]) if file or path: # file returned if non-package module, otherwise just path for package try: module = imp.load_module(moduleName, file, path, description) pluginInfo = module.__pluginInfo__.copy() elementSubstitutionClasses = None if name == pluginInfo.get('name'): pluginInfo["moduleURL"] = moduleURL modulePluginInfos[name] = pluginInfo if 'localeURL' in pluginInfo: # set L10N internationalization in loaded module localeDir = os.path.dirname(module.__file__) + os.sep + pluginInfo['localeURL'] try: _gettext = gettext.translation(pluginInfo['localeDomain'], localeDir, getLanguageCodes()) except IOError: _gettext = lambda x: x # no translation else: _gettext = lambda x: x for key, value in pluginInfo.items(): if key == 'name': if name: pluginConfig['modules'][name] = moduleInfo elif isinstance(value, types.FunctionType): classModuleNames = pluginConfig['classes'].setdefault(key, []) if name and name not in classModuleNames: classModuleNames.append(name) if key == 'ModelObjectFactory.ElementSubstitutionClasses': elementSubstitutionClasses = value module._ = _gettext global pluginConfigChanged pluginConfigChanged = True if elementSubstitutionClasses: try: from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(elementSubstitutionClasses) except Exception as err: print(_("Exception loading plug-in {name}: processing ModelObjectFactory.ElementSubstitutionClasses").format( name=name, error=err), file=sys.stderr) except (ImportError, AttributeError) as err: print(_("Exception loading plug-in {name}: {error}").format( name=name, error=err), file=sys.stderr) finally: if file: file.close() # non-package module except (EnvironmentError, ImportError, NameError) as err: #find_module failed, no file to close print(_("Exception finding plug-in {name}: {error}").format( name=name, error=err), file=sys.stderr)
of multiply measures, and if any divide, a '/' character and list of string qnames of divide measure qnames.""" mul, div = self.measures return ' '.join([measuresStr(m) for m in mul] + (['/'] + [measuresStr(d) for d in div] if div else [])) @property def propertyView(self): measures = self.measures if measures[1]: return tuple(('mul',m) for m in measures[0]) + \ tuple(('div',d) for d in measures[1]) else: return tuple(('measure',m) for m in measures[0]) from arelle.ModelFormulaObject import Aspect from arelle import FunctionIxt from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnXbrliItem, ModelFact), (XbrlConst.qnXbrliTuple, ModelFact), (XbrlConst.qnIXbrlTuple, ModelInlineFact), (XbrlConst.qnIXbrlNonNumeric, ModelInlineFact), (XbrlConst.qnIXbrlNonFraction, ModelInlineFact), (XbrlConst.qnIXbrlFraction, ModelInlineFact), (XbrlConst.qnXbrliContext, ModelContext), (XbrlConst.qnXbrldiExplicitMember, ModelDimensionValue), (XbrlConst.qnXbrldiTypedMember, ModelDimensionValue), (XbrlConst.qnXbrliUnit, ModelUnit), ))
elementSubstitutionModelClass.update(( (qname(XbrlConst.ver, "assignment"), ModelAssignment), (qname(XbrlConst.ver, "action"), ModelAction), (qname(XbrlConst.ver, "namespaceRename"), ModelNamespaceRename), (qname(XbrlConst.ver, "roleChange"), ModelRoleChange), # 2010 names (qname(XbrlConst.vercb, "conceptAdd"), ModelConceptUseChange), (qname(XbrlConst.vercb, "conceptDelete"), ModelConceptUseChange), (qname(XbrlConst.vercb, "conceptRename"), ModelConceptUseChange), (qname(XbrlConst.verce, "conceptIDChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptSubstitutionGroupChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptDefaultChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptNillableChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAbstractChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptBlockChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptFixedChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptFinalChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptPeriodTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptBalanceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "tupleContentModelChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verrels, "relationshipSetModelChange"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "relationshipSetModelAdd"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "relationshipSetModelDelete"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "fromRelationshipSet"), ModelRelationshipSet), (qname(XbrlConst.verrels, "toRelationshipSet"), ModelRelationshipSet), (qname(XbrlConst.verrels, "relationships"), ModelRelationships), (qname(XbrlConst.veria, "aspectModelChange"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "aspectModelAdd"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "aspectModelDelete"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "fromAspects"), ModelInstanceAspects), (qname(XbrlConst.veria, "toAspects"), ModelInstanceAspects), (qname(XbrlConst.veria, "concept"), ModelInstanceAspect), (qname(XbrlConst.veria, "explicitDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.veria, "typedDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.veria, "segment"), ModelInstanceAspect), (qname(XbrlConst.veria, "scenario"), ModelInstanceAspect), (qname(XbrlConst.veria, "entityIdentifier"), ModelInstanceAspect), (qname(XbrlConst.veria, "period"), ModelPeriodAspect), (qname(XbrlConst.veria, "location"), ModelInstanceAspect), (qname(XbrlConst.veria, "unit"), ModelInstanceAspect), (qname(XbrlConst.veria, "member"), ModelRelatedConcept), (qname(XbrlConst.veria, "startDate"), ModelRelatedConcept), (qname(XbrlConst.veria, "endDate"), ModelAspectProperty), (qname(XbrlConst.veria, "instant"), ModelAspectProperty), (qname(XbrlConst.veria, "forever"), ModelAspectProperty), (qname(XbrlConst.veria, "multiplyBy"), ModelMeasureAspect), (qname(XbrlConst.veria, "divideBy"), ModelMeasureAspect), (qname(XbrlConst.veria, "measure"), ModelAspectProperty), # 2012 names (qname(XbrlConst.vercu, "conceptAdd"), ModelConceptUseChange), (qname(XbrlConst.vercu, "conceptDelete"), ModelConceptUseChange), (qname(XbrlConst.vercu, "conceptRename"), ModelConceptUseChange), (qname(XbrlConst.vercd, "conceptIDChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptSubstitutionGroupChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptDefaultChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptNillableChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAbstractChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptBlockChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptFixedChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptFinalChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptPeriodTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptBalanceChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "attributeDefinitionChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "tupleContentModelChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verdim, "aspectModelChange"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "aspectModelAdd"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "aspectModelDelete"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "fromAspects"), ModelInstanceAspects), (qname(XbrlConst.verdim, "toAspects"), ModelInstanceAspects), (qname(XbrlConst.verdim, "concepts"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "explicitDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "typedDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "concept"), ModelRelatedConcept), (qname(XbrlConst.verdim, "member"), ModelRelatedConcept), ))
("preferredLabel", self.preferredLabel) if self.arcrole == XbrlConst.parentChild and self.preferredLabel else (), ("contextElement", self.contextElement) if self.arcrole in (XbrlConst.all, XbrlConst.notAll) else (), ("typedDomain", self.toModelObject.typedDomainElement.qname) if self.arcrole == XbrlConst.hypercubeDimension and isinstance(self.toModelObject,ModelConcept) and self.toModelObject.isTypedDimension and self.toModelObject.typedDomainElement is not None else (), ("closed", self.closed) if self.arcrole in (XbrlConst.all, XbrlConst.notAll) else (), ("usable", self.usable) if self.arcrole == XbrlConst.domainMember else (), ("targetRole", self.targetRole) if self.arcrole.startswith(XbrlConst.dimStartsWith) else (), ("order", self.order), ("priority", self.priority)) def __repr__(self): return ("modelRelationship[{0}]{1})".format(self.objectId(),self.propertyView)) @property def viewConcept(self): if isinstance(self.toModelObject, ModelConcept): return self.toModelObject elif isinstance(self.fromModelObject, ModelConcept): return self.fromModelObject return None from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnXlExtended, ModelLink), (XbrlConst.qnXlLocator, ModelLocator), (XbrlConst.qnXlResource, ModelResource), ))
def loadModule(moduleInfo, packagePrefix=""): name = moduleInfo['name'] moduleURL = moduleInfo['moduleURL'] moduleFilename = _cntlr.webCache.getfilename(moduleURL, normalize=True, base=_pluginBase) if moduleFilename: try: if os.path.basename( moduleFilename) == "__init__.py" and os.path.isfile( moduleFilename): moduleFilename = os.path.dirname( moduleFilename) # want just the dirpart of package if os.path.isdir(moduleFilename) and os.path.isfile( os.path.join(moduleFilename, "__init__.py")): moduleDir = os.path.dirname(moduleFilename) moduleName = os.path.basename(moduleFilename) packageImportPrefix = moduleName + "." else: moduleName = os.path.basename(moduleFilename).partition('.')[0] moduleDir = os.path.dirname(moduleFilename) packageImportPrefix = packagePrefix file, path, description = imp.find_module(moduleName, [moduleDir]) if file or path: # file returned if non-package module, otherwise just path for package try: module = imp.load_module(packagePrefix + moduleName, file, path, description) pluginInfo = module.__pluginInfo__.copy() elementSubstitutionClasses = None if name == pluginInfo.get('name'): pluginInfo["moduleURL"] = moduleURL modulePluginInfos[name] = pluginInfo if 'localeURL' in pluginInfo: # set L10N internationalization in loaded module localeDir = os.path.dirname( module.__file__ ) + os.sep + pluginInfo['localeURL'] try: _gettext = gettext.translation( pluginInfo['localeDomain'], localeDir, getLanguageCodes()) except IOError: _gettext = lambda x: x # no translation else: _gettext = lambda x: x for key, value in pluginInfo.items(): if key == 'name': if name: pluginConfig['modules'][name] = moduleInfo elif isinstance(value, types.FunctionType): classModuleNames = pluginConfig[ 'classes'].setdefault(key, []) if name and name not in classModuleNames: classModuleNames.append(name) if key == 'ModelObjectFactory.ElementSubstitutionClasses': elementSubstitutionClasses = value module._ = _gettext global pluginConfigChanged pluginConfigChanged = True if elementSubstitutionClasses: try: from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update( elementSubstitutionClasses) except Exception as err: _msg = _( "Exception loading plug-in {name}: processing ModelObjectFactory.ElementSubstitutionClasses" ).format(name=name, error=err) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr) for importModuleInfo in moduleInfo.get( 'imports', EMPTYLIST): loadModule(importModuleInfo, packageImportPrefix) except (ImportError, AttributeError, SystemError) as err: _msg = _( "Exception loading plug-in {name}: {error}\n{traceback}" ).format(name=name, error=err, traceback=traceback.format_tb(sys.exc_info()[2])) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr) finally: if file: file.close() # non-package module except (EnvironmentError, ImportError, NameError, SyntaxError) as err: #find_module failed, no file to close _msg = _("Exception finding plug-in {name}: {error}").format( name=name, error=err) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr)
def loadModule(moduleInfo): name = moduleInfo['name'] moduleURL = moduleInfo['moduleURL'] moduleFilename = _cntlr.webCache.getfilename(moduleURL, normalize=True, base=_pluginBase) if moduleFilename: try: if os.path.isdir(moduleFilename) and os.path.isfile( os.path.join(moduleFilename, "__init__.py")): moduleDir = os.path.dirname(moduleFilename) moduleName = os.path.basename(moduleFilename) else: moduleName = os.path.basename(moduleFilename).partition('.')[0] moduleDir = os.path.dirname(moduleFilename) file, path, description = imp.find_module(moduleName, [moduleDir]) if file or path: # file returned if non-package module, otherwise just path for package try: module = imp.load_module(moduleName, file, path, description) pluginInfo = module.__pluginInfo__.copy() elementSubstitutionClasses = None if name == pluginInfo.get('name'): pluginInfo["moduleURL"] = moduleURL modulePluginInfos[name] = pluginInfo if 'localeURL' in pluginInfo: # set L10N internationalization in loaded module localeDir = os.path.dirname( module.__file__ ) + os.sep + pluginInfo['localeURL'] try: _gettext = gettext.translation( pluginInfo['localeDomain'], localeDir, getLanguageCodes()) except IOError: _gettext = lambda x: x # no translation else: _gettext = lambda x: x for key, value in pluginInfo.items(): if key == 'name': if name: pluginConfig['modules'][name] = moduleInfo elif isinstance(value, types.FunctionType): classModuleNames = pluginConfig[ 'classes'].setdefault(key, []) if name and name not in classModuleNames: classModuleNames.append(name) if key == 'ModelObjectFactory.ElementSubstitutionClasses': elementSubstitutionClasses = value module._ = _gettext global pluginConfigChanged pluginConfigChanged = True if elementSubstitutionClasses: try: from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update( elementSubstitutionClasses) except Exception as err: print(_( "Exception loading plug-in {name}: processing ModelObjectFactory.ElementSubstitutionClasses" ).format(name=name, error=err), file=sys.stderr) except (ImportError, AttributeError) as err: print( _("Exception loading plug-in {name}: {error}").format( name=name, error=err), file=sys.stderr) finally: if file: file.close() # non-package module except (EnvironmentError, ImportError, NameError) as err: #find_module failed, no file to close print(_("Exception finding plug-in {name}: {error}").format( name=name, error=err), file=sys.stderr)
elementSubstitutionModelClass.update(( # 2010 names (qname(XbrlConst.ver10, "assignment"), ModelAssignment), (qname(XbrlConst.ver10, "action"), ModelAction), (qname(XbrlConst.ver10, "namespaceRename"), ModelNamespaceRename), (qname(XbrlConst.ver10, "roleChange"), ModelRoleChange), (qname(XbrlConst.vercb, "conceptAdd"), ModelConceptUseChange), (qname(XbrlConst.vercb, "conceptDelete"), ModelConceptUseChange), (qname(XbrlConst.vercb, "conceptRename"), ModelConceptUseChange), (qname(XbrlConst.verce, "conceptIDChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptSubstitutionGroupChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptDefaultChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptNillableChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAbstractChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptBlockChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptFixedChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptFinalChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptPeriodTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptBalanceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptAttributeChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "tupleContentModelChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptLabelChange"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceAdd"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceDelete"), ModelConceptDetailsChange), (qname(XbrlConst.verce, "conceptReferenceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verrels, "relationshipSetModelChange"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "relationshipSetModelAdd"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "relationshipSetModelDelete"), ModelRelationshipSetChange), (qname(XbrlConst.verrels, "fromRelationshipSet"), ModelRelationshipSet), (qname(XbrlConst.verrels, "toRelationshipSet"), ModelRelationshipSet), (qname(XbrlConst.verrels, "relationships"), ModelRelationships), (qname(XbrlConst.veria, "aspectModelChange"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "aspectModelAdd"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "aspectModelDelete"), ModelInstanceAspectsChange), (qname(XbrlConst.veria, "fromAspects"), ModelInstanceAspects), (qname(XbrlConst.veria, "toAspects"), ModelInstanceAspects), (qname(XbrlConst.veria, "concept"), ModelInstanceAspect), (qname(XbrlConst.veria, "explicitDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.veria, "typedDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.veria, "segment"), ModelInstanceAspect), (qname(XbrlConst.veria, "scenario"), ModelInstanceAspect), (qname(XbrlConst.veria, "entityIdentifier"), ModelInstanceAspect), (qname(XbrlConst.veria, "period"), ModelPeriodAspect), (qname(XbrlConst.veria, "location"), ModelInstanceAspect), (qname(XbrlConst.veria, "unit"), ModelInstanceAspect), (qname(XbrlConst.veria, "member"), ModelRelatedConcept), (qname(XbrlConst.veria, "startDate"), ModelRelatedConcept), (qname(XbrlConst.veria, "endDate"), ModelAspectProperty), (qname(XbrlConst.veria, "instant"), ModelAspectProperty), (qname(XbrlConst.veria, "forever"), ModelAspectProperty), (qname(XbrlConst.veria, "multiplyBy"), ModelMeasureAspect), (qname(XbrlConst.veria, "divideBy"), ModelMeasureAspect), (qname(XbrlConst.veria, "measure"), ModelAspectProperty), # 2013 names (qname(XbrlConst.ver, "assignment"), ModelAssignment), (qname(XbrlConst.ver, "action"), ModelAction), (qname(XbrlConst.ver, "namespaceRename"), ModelNamespaceRename), (qname(XbrlConst.ver, "roleChange"), ModelRoleChange), (qname(XbrlConst.vercu, "conceptAdd"), ModelConceptUseChange), (qname(XbrlConst.vercu, "conceptDelete"), ModelConceptUseChange), (qname(XbrlConst.vercu, "conceptRename"), ModelConceptUseChange), (qname(XbrlConst.vercd, "conceptIDChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptSubstitutionGroupChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptDefaultChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptNillableChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAbstractChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptBlockChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptFixedChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptFinalChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptPeriodTypeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptBalanceChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptAttributeChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "attributeDefinitionChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "tupleContentModelChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptLabelChange"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceAdd"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceDelete"), ModelConceptDetailsChange), (qname(XbrlConst.vercd, "conceptReferenceChange"), ModelConceptDetailsChange), (qname(XbrlConst.verdim, "aspectModelChange"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "aspectModelAdd"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "aspectModelDelete"), ModelInstanceAspectsChange), (qname(XbrlConst.verdim, "fromAspects"), ModelInstanceAspects), (qname(XbrlConst.verdim, "toAspects"), ModelInstanceAspects), (qname(XbrlConst.verdim, "concepts"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "explicitDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "typedDimension"), ModelConceptsDimsAspect), (qname(XbrlConst.verdim, "concept"), ModelRelatedConcept), (qname(XbrlConst.verdim, "member"), ModelRelatedConcept), ))
def loadModule(moduleInfo, packagePrefix=""): name = moduleInfo['name'] moduleURL = moduleInfo['moduleURL'] moduleFilename = _cntlr.webCache.getfilename(moduleURL, normalize=True, base=_pluginBase) if moduleFilename: try: if os.path.basename(moduleFilename) == "__init__.py" and os.path.isfile(moduleFilename): moduleFilename = os.path.dirname(moduleFilename) # want just the dirpart of package if os.path.isdir(moduleFilename) and os.path.isfile(os.path.join(moduleFilename, "__init__.py")): moduleDir = os.path.dirname(moduleFilename) moduleName = os.path.basename(moduleFilename) packageImportPrefix = moduleName + "." else: moduleName = os.path.basename(moduleFilename).partition('.')[0] moduleDir = os.path.dirname(moduleFilename) packageImportPrefix = packagePrefix file, path, description = imp.find_module(moduleName, [moduleDir]) if file or path: # file returned if non-package module, otherwise just path for package try: module = imp.load_module(packagePrefix + moduleName, file, path, description) pluginInfo = module.__pluginInfo__.copy() elementSubstitutionClasses = None if name == pluginInfo.get('name'): pluginInfo["moduleURL"] = moduleURL modulePluginInfos[name] = pluginInfo if 'localeURL' in pluginInfo: # set L10N internationalization in loaded module localeDir = os.path.dirname(module.__file__) + os.sep + pluginInfo['localeURL'] try: _gettext = gettext.translation(pluginInfo['localeDomain'], localeDir, getLanguageCodes()) except IOError: _gettext = lambda x: x # no translation else: _gettext = lambda x: x for key, value in pluginInfo.items(): if key == 'name': if name: pluginConfig['modules'][name] = moduleInfo elif isinstance(value, types.FunctionType): classModuleNames = pluginConfig['classes'].setdefault(key, []) if name and name not in classModuleNames: classModuleNames.append(name) if key == 'ModelObjectFactory.ElementSubstitutionClasses': elementSubstitutionClasses = value module._ = _gettext global pluginConfigChanged pluginConfigChanged = True if elementSubstitutionClasses: try: from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(elementSubstitutionClasses) except Exception as err: _msg = _("Exception loading plug-in {name}: processing ModelObjectFactory.ElementSubstitutionClasses").format( name=name, error=err) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr) for importModuleInfo in moduleInfo.get('imports', EMPTYLIST): loadModule(importModuleInfo, packageImportPrefix) except (ImportError, AttributeError, SystemError) as err: _msg = _("Exception loading plug-in {name}: {error}\n{traceback}").format( name=name, error=err, traceback=traceback.format_tb(sys.exc_info()[2])) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr) finally: if file: file.close() # non-package module except (EnvironmentError, ImportError, NameError, SyntaxError) as err: #find_module failed, no file to close _msg = _("Exception finding plug-in {name}: {error}").format(name=name, error=err) if PLUGIN_TRACE_FILE: with open(PLUGIN_TRACE_FILE, "at", encoding='utf-8') as fh: fh.write(_msg + '\n') else: print(_msg, file=sys.stderr)
def value(self): mul, div = self.measures return ' '.join([measuresStr(m) for m in mul] + (['/'] + [measuresStr(d) for d in div] if div else [])) @property def propertyView(self): if self.isDivide: return tuple(('mul',m) for m in self.measures[0]) + \ tuple(('div',d) for d in self.measures[1]) else: return tuple(('', m) for m in self.measures[0]) from arelle.ModelFormulaObject import Aspect from arelle import FunctionIxt from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnXbrliItem, ModelFact), (XbrlConst.qnXbrliTuple, ModelFact), (XbrlConst.qnIXbrlTuple, ModelInlineFact), (XbrlConst.qnIXbrlNonNumeric, ModelInlineFact), (XbrlConst.qnIXbrlNonFraction, ModelInlineFact), (XbrlConst.qnIXbrlFraction, ModelInlineFact), (XbrlConst.qnXbrliContext, ModelContext), (XbrlConst.qnXbrldiExplicitMember, ModelDimensionValue), (XbrlConst.qnXbrldiTypedMember, ModelDimensionValue), (XbrlConst.qnXbrliUnit, ModelUnit), ))
filteredFacts = formulaEvaluatorFilterFacts(xpCtx, VariableBinding(xpCtx), facts, self.filterRelationships, None) return factsPartitions(xpCtx, filteredFacts, self.aspectsCovered()) from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnEuTable, ModelEuTable), (XbrlConst.qnEuAxisCoord, ModelEuAxisCoord), (XbrlConst.qnTableTable, ModelTable), (XbrlConst.qnTableTable2011, ModelTable), (XbrlConst.qnTableRuleNode, ModelRuleDefinitionNode), (XbrlConst.qnTableRuleAxis2011, ModelRuleDefinitionNode), (XbrlConst.qnTableCompositionNode, ModelCompositionDefinitionNode), (XbrlConst.qnTableCompositionAxis2011, ModelCompositionDefinitionNode), (XbrlConst.qnTableConceptRelationshipNode, ModelConceptRelationshipDefinitionNode), (XbrlConst.qnTableConceptRelationshipAxis2011, ModelConceptRelationshipDefinitionNode), (XbrlConst.qnTableDimensionRelationshipNode, ModelDimensionRelationshipDefinitionNode), (XbrlConst.qnTableDimensionRelationshipAxis2011, ModelDimensionRelationshipDefinitionNode), (XbrlConst.qnTableSelectionNode, ModelSelectionDefinitionNode), (XbrlConst.qnTableSelectionAxis2011, ModelSelectionDefinitionNode), (XbrlConst.qnTableFilterNode, ModelFilterDefinitionNode), (XbrlConst.qnTableFilterAxis2011, ModelFilterDefinitionNode), (XbrlConst.qnTableTupleNode, ModelTupleDefinitionNode), (XbrlConst.qnTableTupleAxis2011, ModelTupleDefinitionNode), )) # import after other modules resolved to prevent circular references from arelle.FunctionXfi import concept_relationships
@property def instant(self): return XmlUtil.childAttr(self, XbrlConst.euRend, "timeReference","instant") @property def propertyView(self): explicitDims = self.explicitDims return (("id", self.id), ("xlink:label", self.xlinkLabel), ("header label", self.genLabel()), ("header doc", self.genLabel(role="http://www.xbrl.org/2008/role/documentation")), ("header code", self.genLabel(role="http://www.eurofiling.info/role/2010/coordinate-code")), ("primary item", self.primaryItemQname), ("dimensions", "({0})".format(len(explicitDims)), tuple((str(dim),str(mem)) for dim,mem in sorted(explicitDims))) if explicitDims else (), ("abstract", self.abstract), ("instant", self.instant)) def __repr__(self): return ("explicitAxisMember[{0}]{1})".format(self.objectId(),self.propertyView)) from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnEuTable, ModelTable), (XbrlConst.qnTableTable, ModelTable), (XbrlConst.qnEuAxisCoord, ModelAxisCoord), (XbrlConst.qnTableAspectRuleAxis, ModelExplicitAxisMember), (XbrlConst.qnTableAspectRuleAxisMember, ModelExplicitAxisMember), (XbrlConst.qnTableFilterAxis, ModelExplicitAxisMember), ))
if self.arcrole == XbrlConst.hypercubeDimension and isinstance(self.toModelObject,ModelConcept) and self.toModelObject.isTypedDimension and self.toModelObject.typedDomainElement is not None else (), ("closed", self.closed) if self.arcrole in (XbrlConst.all, XbrlConst.notAll) else (), ("usable", self.usable) if self.arcrole == XbrlConst.domainMember else (), ("targetRole", self.targetRole) if self.arcrole.startswith(XbrlConst.dimStartsWith) else (), ("order", self.order), ("priority", self.priority)) def __repr__(self): return ("modelRelationship[{0}]{1})".format(self.objectId(), self.propertyView)) @property def viewConcept(self): if isinstance(self.toModelObject, ModelConcept): return self.toModelObject elif isinstance(self.fromModelObject, ModelConcept): return self.fromModelObject return None from arelle.ModelObjectFactory import elementSubstitutionModelClass elementSubstitutionModelClass.update(( (XbrlConst.qnXlExtended, ModelLink), (XbrlConst.qnXlLocator, ModelLocator), (XbrlConst.qnXlResource, ModelResource), ))