本文整理汇总了Python中arelle.XbrlConst.isDimensionArcrole方法的典型用法代码示例。如果您正苦于以下问题:Python XbrlConst.isDimensionArcrole方法的具体用法?Python XbrlConst.isDimensionArcrole怎么用?Python XbrlConst.isDimensionArcrole使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类arelle.XbrlConst
的用法示例。
在下文中一共展示了XbrlConst.isDimensionArcrole方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from arelle import XbrlConst [as 别名]
# 或者: from arelle.XbrlConst import isDimensionArcrole [as 别名]
def __init__(self, modelXbrl, arcrole, linkrole=None, linkqname=None, arcqname=None, includeProhibits=False):
self.isChanged = False
self.modelXbrl = modelXbrl
self.arcrole = arcrole
self.linkrole = linkrole
self.linkqname = linkqname
self.arcqname = arcqname
relationshipSetKey = (arcrole, linkrole, linkqname, arcqname, includeProhibits)
# base sets does not care about the #includeProhibits
if not isinstance(arcrole,(tuple,frozenset)):
modelLinks = self.modelXbrl.baseSets.get((arcrole, linkrole, linkqname, arcqname), [])
else: # arcrole is a set of arcroles
modelLinks = []
for ar in arcrole:
modelLinks.extend(self.modelXbrl.baseSets.get((ar, linkrole, linkqname, arcqname), []))
# gather arcs
relationships = {}
isDimensionRel = self.arcrole == "XBRL-dimensions" # all dimensional relationship arcroles
isFormulaRel = self.arcrole == "XBRL-formulae" # all formula relationship arcroles
isTableRenderingRel = self.arcrole == "Table-rendering"
isFootnoteRel = self.arcrole == "XBRL-footnotes" # all footnote relationship arcroles
if not isinstance(arcrole,(tuple,frozenset)):
arcrole = (arcrole,)
for modelLink in modelLinks:
arcs = []
linkEltQname = modelLink.qname
for linkChild in modelLink:
linkChildArcrole = linkChild.get("{http://www.w3.org/1999/xlink}arcrole")
if linkChild.get("{http://www.w3.org/1999/xlink}type") == "arc" and linkChildArcrole:
linkChildQname = linkChild
if isFootnoteRel:
arcs.append(linkChild)
elif isDimensionRel:
if XbrlConst.isDimensionArcrole(linkChildArcrole):
arcs.append(linkChild)
elif isFormulaRel:
if XbrlConst.isFormulaArcrole(linkChildArcrole):
arcs.append(linkChild)
elif isTableRenderingRel:
if XbrlConst.isTableRenderingArcrole(linkChildArcrole):
arcs.append(linkChild)
elif (linkChildArcrole in arcrole and
(arcqname is None or arcqname == linkChildQname) and
(linkqname is None or linkqname == linkEltQname)):
arcs.append(linkChild)
# build network
for arcElement in arcs:
fromLabel = arcElement.get("{http://www.w3.org/1999/xlink}from")
toLabel = arcElement.get("{http://www.w3.org/1999/xlink}to")
for fromResource in modelLink.labeledResources[fromLabel]:
for toResource in modelLink.labeledResources[toLabel]:
if isinstance(fromResource,ModelResource) and isinstance(toResource,ModelResource):
modelRel = ModelDtsObject.ModelRelationship(modelLink.modelDocument, arcElement, fromResource.dereference(), toResource.dereference())
modelRelEquivalenceKey = modelRel.equivalenceKey # this is a complex tuple to compute, get once for below
if modelRelEquivalenceKey not in relationships or \
modelRel.priorityOver(relationships[modelRelEquivalenceKey]):
relationships[modelRelEquivalenceKey] = modelRel
#reduce effective arcs and order relationships...
self.modelRelationshipsFrom = None
self.modelRelationshipsTo = None
self.modelConceptRoots = None
self.modellinkRoleUris = None
orderRels = defaultdict(list)
for modelRel in relationships.values():
if includeProhibits or not modelRel.isProhibited:
orderRels[modelRel.order].append(modelRel)
self.modelRelationships = [modelRel
for order in sorted(orderRels.keys())
for modelRel in orderRels[order]]
modelXbrl.relationshipSets[relationshipSetKey] = self
示例2: __init__
# 需要导入模块: from arelle import XbrlConst [as 别名]
# 或者: from arelle.XbrlConst import isDimensionArcrole [as 别名]
def __init__(self, modelXbrl, arcrole, linkrole=None, linkqname=None, arcqname=None, includeProhibits=False):
self.isChanged = False
self.modelXbrl = modelXbrl
self.arcrole = arcrole
self.linkrole = linkrole
self.linkqname = linkqname
self.arcqname = arcqname
baseSetKey = (arcrole, linkrole, linkqname, arcqname)
relationshipSetKey = (arcrole, linkrole, linkqname, arcqname, includeProhibits)
# base sets does not care about the #includeProhibits
if baseSetKey in self.modelXbrl.baseSets:
modelLinks = self.modelXbrl.baseSets[baseSetKey]
else:
modelLinks = []
# gather arcs
relationships = {}
isDimensionRel = self.arcrole == "XBRL-dimensions" # all dimensional relationship arcroles
isFormulaRel = self.arcrole == "XBRL-formulae" # all formula relationship arcroles
isEuRenderingRel = self.arcrole == "EU-rendering"
isFootnoteRel = self.arcrole == "XBRL-footnotes" # all footnote relationship arcroles
for modelLink in modelLinks:
arcs = []
linkEltQname = modelLink.qname
for linkChild in modelLink.element.childNodes:
if (
linkChild.nodeType == 1
and linkChild.getAttributeNS(XbrlConst.xlink, "type") == "arc"
and linkChild.hasAttributeNS(XbrlConst.xlink, "arcrole")
):
linkChildArcrole = linkChild.getAttributeNS(XbrlConst.xlink, "arcrole")
linkChildQname = linkChild
if isFootnoteRel:
arcs.append(linkChild)
elif isDimensionRel:
if XbrlConst.isDimensionArcrole(linkChildArcrole):
arcs.append(linkChild)
elif isFormulaRel:
if XbrlConst.isFormulaArcrole(linkChildArcrole):
arcs.append(linkChild)
elif isEuRenderingRel:
if XbrlConst.isEuRenderingArcrole(linkChildArcrole):
arcs.append(linkChild)
elif (
arcrole == linkChildArcrole
and (arcqname is None or arcqname == linkChildQname)
and (linkqname is None or linkqname == linkEltQname)
):
arcs.append(linkChild)
# build network
for arcElement in arcs:
arcrole = arcElement.getAttributeNS(XbrlConst.xlink, "arcrole")
fromLabel = arcElement.getAttributeNS(XbrlConst.xlink, "from")
toLabel = arcElement.getAttributeNS(XbrlConst.xlink, "to")
for fromResource in modelLink.labeledResources[fromLabel]:
for toResource in modelLink.labeledResources[toLabel]:
modelRel = ModelObject.createRelationship(
modelLink.modelDocument, arcElement, fromResource.dereference(), toResource.dereference()
)
modelRelEquivalenceKey = (
modelRel.equivalenceKey
) # this is a complex tuple to compute, get once for below
if modelRelEquivalenceKey not in relationships or modelRel.priorityOver(
relationships[modelRelEquivalenceKey]
):
relationships[modelRelEquivalenceKey] = modelRel
# reduce effective arcs and order relationships...
self.modelRelationships = []
self.modelRelationshipsFrom = None
self.modelRelationshipsTo = None
self.modelConceptRoots = None
self.modellinkRoleUris = None
orderRels = defaultdict(list)
for modelRel in relationships.values():
if includeProhibits or not modelRel.isProhibited:
orderRels[modelRel.order].append(modelRel)
for order in sorted(orderRels.keys()):
for modelRel in orderRels[order]:
self.modelRelationships.append(modelRel)
modelXbrl.relationshipSets[relationshipSetKey] = self
示例3: linkbaseDiscover
# 需要导入模块: from arelle import XbrlConst [as 别名]
# 或者: from arelle.XbrlConst import isDimensionArcrole [as 别名]
def linkbaseDiscover(self, linkbaseElement, inInstance=False):
for lbElement in linkbaseElement.iterchildren():
if isinstance(lbElement,ModelObject):
lbLn = lbElement.localName
lbNs = lbElement.namespaceURI
if lbNs == XbrlConst.link:
if lbLn == "roleRef" or lbLn == "arcroleRef":
href = self.discoverHref(lbElement)
if href is None:
self.modelXbrl.error("xbrl:hrefMissing",
_("Linkbase reference for %(linkbaseRefElement)s href attribute missing or malformed"),
modelObject=lbElement, linkbaseRefElement=lbLn)
else:
self.hrefObjects.append(href)
continue
if lbElement.get("{http://www.w3.org/1999/xlink}type") == "extended":
if isinstance(lbElement, ModelLink):
self.schemalocateElementNamespace(lbElement)
arcrolesFound = set()
dimensionArcFound = False
formulaArcFound = False
tableRenderingArcFound = False
linkQn = qname(lbElement)
linkrole = lbElement.get("{http://www.w3.org/1999/xlink}role")
isStandardExtLink = XbrlConst.isStandardResourceOrExtLinkElement(lbElement)
if inInstance:
#index footnote links even if no arc children
baseSetKeys = (("XBRL-footnotes",None,None,None),
("XBRL-footnotes",linkrole,None,None))
for baseSetKey in baseSetKeys:
self.modelXbrl.baseSets[baseSetKey].append(lbElement)
for linkElement in lbElement.iterchildren():
if isinstance(linkElement,ModelObject):
self.schemalocateElementNamespace(linkElement)
xlinkType = linkElement.get("{http://www.w3.org/1999/xlink}type")
modelResource = None
if xlinkType == "locator":
nonDTS = linkElement.namespaceURI != XbrlConst.link or linkElement.localName != "loc"
# only link:loc elements are discovered or processed
href = self.discoverHref(linkElement, nonDTS=nonDTS)
if href is None:
if isStandardExtLink:
self.modelXbrl.error("xbrl:hrefMissing",
_("Locator href attribute missing or malformed in standard extended link"),
modelObejct=linkElement)
else:
self.modelXbrl.warning("arelle:hrefWarning",
_("Locator href attribute missing or malformed in non-standard extended link"),
modelObejct=linkElement)
else:
linkElement.modelHref = href
modelResource = linkElement
elif xlinkType == "arc":
arcQn = qname(linkElement)
arcrole = linkElement.get("{http://www.w3.org/1999/xlink}arcrole")
if arcrole not in arcrolesFound:
if linkrole == "":
linkrole = XbrlConst.defaultLinkRole
#index by both arcrole and linkrole#arcrole and dimensionsions if applicable
baseSetKeys = [(arcrole, linkrole, linkQn, arcQn)]
baseSetKeys.append((arcrole, linkrole, None, None))
baseSetKeys.append((arcrole, None, None, None))
if XbrlConst.isDimensionArcrole(arcrole) and not dimensionArcFound:
baseSetKeys.append(("XBRL-dimensions", None, None, None))
baseSetKeys.append(("XBRL-dimensions", linkrole, None, None))
dimensionArcFound = True
if XbrlConst.isFormulaArcrole(arcrole) and not formulaArcFound:
baseSetKeys.append(("XBRL-formulae", None, None, None))
baseSetKeys.append(("XBRL-formulae", linkrole, None, None))
formulaArcFound = True
if XbrlConst.isTableRenderingArcrole(arcrole) and not tableRenderingArcFound:
baseSetKeys.append(("Table-rendering", None, None, None))
baseSetKeys.append(("Table-rendering", linkrole, None, None))
tableRenderingArcFound = True
self.modelXbrl.hasTableRendering = True
for baseSetKey in baseSetKeys:
self.modelXbrl.baseSets[baseSetKey].append(lbElement)
arcrolesFound.add(arcrole)
elif xlinkType == "resource":
# create resource and make accessible by id for document
modelResource = linkElement
if modelResource is not None:
lbElement.labeledResources[linkElement.get("{http://www.w3.org/1999/xlink}label")] \
.append(modelResource)
else:
self.modelXbrl.error("xbrl:schemaDefinitionMissing",
_("Linkbase extended link %(element)s missing schema definition"),
modelObject=lbElement, element=lbElement.prefixedName)
示例4: linkbaseDiscover
# 需要导入模块: from arelle import XbrlConst [as 别名]
# 或者: from arelle.XbrlConst import isDimensionArcrole [as 别名]
def linkbaseDiscover(self, linkbaseElement, inInstance=False):
for lbElement in linkbaseElement.childNodes:
if lbElement.nodeType == 1: #element
lbLn = lbElement.localName
lbNs = lbElement.namespaceURI
if lbNs == XbrlConst.link:
if lbLn == "roleRef" or lbLn == "arcroleRef":
href = self.discoverHref(lbElement)
if href is None:
self.modelXbrl.error(
"Linkbase in {0} {1} href attribute missing or malformed".format(
os.path.basename(self.uri),
lbLn),
"err", "xbrl:hrefMissing")
else:
self.hrefObjects.append(href)
continue
if lbElement.getAttributeNS(XbrlConst.xlink, "type") == "extended":
self.schemalocateElementNamespace(lbElement)
arcrolesFound = set()
dimensionArcFound = False
formulaArcFound = False
euRenderingArcFound = False
linkQn = qname(lbElement)
linkrole = lbElement.getAttributeNS(XbrlConst.xlink, "role")
modelLink = ModelObject.createLink(self, lbElement)
if inInstance:
#index footnote links even if no arc children
baseSetKeys = (("XBRL-footnotes",None,None,None),
("XBRL-footnotes",linkrole,None,None))
for baseSetKey in baseSetKeys:
self.modelXbrl.baseSets[baseSetKey].append(modelLink)
for linkElement in lbElement.childNodes:
if linkElement.nodeType == 1: #element
self.schemalocateElementNamespace(linkElement)
xlinkType = linkElement.getAttributeNS(XbrlConst.xlink, "type")
modelResource = None
if xlinkType == "locator":
nonDTS = linkElement.namespaceURI != XbrlConst.link or linkElement.localName != "loc"
# only link:loc elements are discovered or processed
href = self.discoverHref(linkElement, nonDTS=nonDTS)
if href is None:
self.modelXbrl.error(
"Linkbase in {0} {1} href attribute missing or malformed".format(
os.path.basename(self.uri),
lbLn),
"err", "xbrl:hrefMissing")
else:
modelResource = ModelObject.createLocator(self, linkElement, href)
elif xlinkType == "arc":
arcQn = qname(linkElement)
arcrole = linkElement.getAttributeNS(XbrlConst.xlink, "arcrole")
if arcrole not in arcrolesFound:
if linkrole == "":
linkrole = XbrlConst.defaultLinkRole
#index by both arcrole and linkrole#arcrole and dimensionsions if applicable
baseSetKeys = [(arcrole, linkrole, linkQn, arcQn)]
baseSetKeys.append((arcrole, linkrole, None, None))
baseSetKeys.append((arcrole, None, None, None))
if XbrlConst.isDimensionArcrole(arcrole) and not dimensionArcFound:
baseSetKeys.append(("XBRL-dimensions", None, None, None))
baseSetKeys.append(("XBRL-dimensions", linkrole, None, None))
dimensionArcFound = True
if XbrlConst.isFormulaArcrole(arcrole) and not formulaArcFound:
baseSetKeys.append(("XBRL-formulae", None, None, None))
baseSetKeys.append(("XBRL-formulae", linkrole, None, None))
formulaArcFound = True
if XbrlConst.isEuRenderingArcrole(arcrole) and not euRenderingArcFound:
baseSetKeys.append(("EU-rendering", None, None, None))
baseSetKeys.append(("EU-rendering", linkrole, None, None))
euRenderingArcFound = True
self.modelXbrl.hasEuRendering = True
for baseSetKey in baseSetKeys:
self.modelXbrl.baseSets[baseSetKey].append(modelLink)
arcrolesFound.add(arcrole)
elif xlinkType == "resource":
# create resource and make accessible by id for document
modelResource = ModelObject.createResource(self, linkElement)
if modelResource is not None:
if linkElement.hasAttribute("id"):
self.idObjects[linkElement.getAttribute("id")] = modelResource
modelLink.labeledResources[linkElement.getAttributeNS(XbrlConst.xlink, "label")] \
.append(modelResource)
else:
XmlUtil.markIdAttributes(linkElement)