本文整理汇总了Python中arelle.ModelRenderingObject.StructuralNode.variables[varQn]方法的典型用法代码示例。如果您正苦于以下问题:Python StructuralNode.variables[varQn]方法的具体用法?Python StructuralNode.variables[varQn]怎么用?Python StructuralNode.variables[varQn]使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类arelle.ModelRenderingObject.StructuralNode
的用法示例。
在下文中一共展示了StructuralNode.variables[varQn]方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: expandDefinition
# 需要导入模块: from arelle.ModelRenderingObject import StructuralNode [as 别名]
# 或者: from arelle.ModelRenderingObject.StructuralNode import variables[varQn] [as 别名]
#.........这里部分代码省略.........
if (definitionNode._sourceQname != XbrlConst.qnXfiRoot and
definitionNode._sourceQname not in view.modelXbrl.qnameConcepts):
view.modelXbrl.error("xbrlte:invalidConceptRelationshipSource",
_("Concept relationship rule node %(xlinkLabel)s source %(source)s does not refer to an existing concept."),
modelObject=definitionNode, xlinkLabel=definitionNode.xlinkLabel, source=definitionNode._sourceQname)
elif isinstance(definitionNode, ModelDimensionRelationshipDefinitionNode):
dim = view.modelXbrl.qnameConcepts.get(definitionNode._dimensionQname)
if dim is None or not dim.isExplicitDimension:
view.modelXbrl.error("xbrlte:invalidExplicitDimensionQName",
_("Dimension relationship rule node %(xlinkLabel)s dimension %(dimension)s does not refer to an existing explicit dimension."),
modelObject=definitionNode, xlinkLabel=definitionNode.xlinkLabel, dimension=definitionNode._dimensionQname)
domMbr = view.modelXbrl.qnameConcepts.get(definitionNode._sourceQname)
if domMbr is None or not domMbr.isDomainMember:
view.modelXbrl.error("xbrlte:invalidDimensionRelationshipSource",
_("Dimension relationship rule node %(xlinkLabel)s source %(source)s does not refer to an existing domain member."),
modelObject=definitionNode, xlinkLabel=definitionNode.xlinkLabel, source=definitionNode._sourceQname)
if (definitionNode._axis in ("child", "child-or-self", "parent", "parent-or-self", "sibling", "sibling-or-self") and
(not isinstance(definitionNode._generations, _NUM_TYPES) or definitionNode._generations > 1)):
view.modelXbrl.error("xbrlte:relationshipNodeTooManyGenerations ",
_("Relationship rule node %(xlinkLabel)s formulaAxis %(axis)s implies a single generation tree walk but generations %(generations)s is greater than one."),
modelObject=definitionNode, xlinkLabel=definitionNode.xlinkLabel, axis=definitionNode._axis, generations=definitionNode._generations)
elif isinstance(definitionNode, ModelSelectionDefinitionNode):
structuralNode.setHasOpenNode()
structuralNode.isLabeled = False
isCartesianProductExpanded = True
varQn = definitionNode.variableQname
if varQn:
selections = sorted(structuralNode.evaluate(definitionNode, definitionNode.evaluate) or [],
key=lambda obj:sortkey(obj))
if isinstance(selections, (list,set,tuple)) and len(selections) > 1:
for selection in selections: # nested choices from selection list
childStructuralNode = StructuralNode(structuralNode, breakdownNode, definitionNode, contextItemFact=selection)
childStructuralNode.variables[varQn] = selection
childStructuralNode.indent = 0
if axisDisposition == "z":
structuralNode.choiceStructuralNodes.append(childStructuralNode)
childStructuralNode.zSelection = True
else:
structuralNode.childStructuralNodes.append(childStructuralNode)
expandDefinition(view, childStructuralNode, breakdownNode, definitionNode, depth, axisDisposition, facts, processOpenDefinitionNode=False) #recurse
cartesianProductExpander(childStructuralNode, *cartesianProductNestedArgs)
else:
structuralNode.variables[varQn] = selections
elif isinstance(definitionNode, ModelFilterDefinitionNode):
structuralNode.setHasOpenNode()
structuralNode.isLabeled = False
isCartesianProductExpanded = True
structuralNode.abstract = True # spanning ordinate acts as a subtitle
filteredFactsPartitions = structuralNode.evaluate(definitionNode,
definitionNode.filteredFactsPartitions,
evalArgs=(facts,))
if structuralNode._rendrCntx.formulaOptions.traceVariableFilterWinnowing:
view.modelXbrl.info("table:trace",
_("Filter node %(xlinkLabel)s facts partitions: %(factsPartitions)s"),
modelObject=definitionNode, xlinkLabel=definitionNode.xlinkLabel,
factsPartitions=str(filteredFactsPartitions))
# ohly for fact entry (true if no parent open nodes or all are on entry prototype row)
if axisDisposition != "z":
childList = structuralNode.childStructuralNodes
if structuralNode.isEntryPrototype(default=True):
for i in range(getattr(view, "openBreakdownLines",
# for file output, 1 entry row if no facts
0 if filteredFactsPartitions else 1)):
view.aspectEntryObjectId += 1
示例2: analyzeHdrs
# 需要导入模块: from arelle.ModelRenderingObject import StructuralNode [as 别名]
# 或者: from arelle.ModelRenderingObject.StructuralNode import variables[varQn] [as 别名]
#.........这里部分代码省略.........
#if not structuralNode.subtreeRollUp and structuralNode.childStructuralNodes and definitionNode.tag.endswith("Node"):
# structuralNode.subtreeRollUp = CHILDREN_BUT_NO_ROLLUP
#if not hasattr(structuralNode, "indent"): # probably also for multiple open axes
if processOpenDefinitionNode:
if isinstance(definitionNode, ModelRelationshipDefinitionNode):
selfStructuralNodes = {} if definitionNode.axis.endswith('-or-self') else None
for rel in definitionNode.relationships(structuralNode):
if not isinstance(rel, list):
relChildStructuralNode = addRelationship(definitionNode, rel, structuralNode, cartesianProductNestedArgs, selfStructuralNodes)
else:
addRelationships(definitionNode, rel, relChildStructuralNode, cartesianProductNestedArgs)
if axisDisposition == "z":
# if definitionNode is first structural node child remove it
if structuralNode.choiceStructuralNodes and structuralNode.choiceStructuralNodes[0].definitionNode == definitionNode:
del structuralNode.choiceStructuralNodes[0]
# flatten hierarchy of nested structural nodes inot choice nodes (for single listbox)
def flattenChildNodesToChoices(childStructuralNodes, indent):
while childStructuralNodes:
choiceStructuralNode = childStructuralNodes.pop(0)
choiceStructuralNode.indent = indent
structuralNode.choiceStructuralNodes.append(choiceStructuralNode)
flattenChildNodesToChoices(choiceStructuralNode.childStructuralNodes, indent + 1)
flattenChildNodesToChoices(structuralNode.childStructuralNodes, 0)
elif isinstance(definitionNode, ModelSelectionDefinitionNode):
cartesianProductAnalyzed = True
varQn = definitionNode.variableQname
if varQn:
selections = sorted(structuralNode.evaluate(definitionNode, definitionNode.evaluate) or [],
key=lambda obj:sortkey(obj))
if isinstance(selections, (list,set,tuple)) and len(selections) > 1:
for selection in selections: # nested choices from selection list
childStructuralNode = StructuralNode(structuralNode, definitionNode, contextItemFact=selection)
childStructuralNode.variables[varQn] = selection
childStructuralNode.indent = 0
if axisDisposition == "z":
structuralNode.choiceStructuralNodes.append(childStructuralNode)
childStructuralNode.zSelection = True
else:
structuralNode.childStructuralNodes.append(childStructuralNode)
analyzeHdrs(view, childStructuralNode, definitionNode, depth, axisDisposition, facts, processOpenDefinitionNode=False) #recurse
analyzeCartesianProductHdrs(childStructuralNode, *cartesianProductNestedArgs)
else:
structuralNode.variables[varQn] = selections
elif isinstance(definitionNode, ModelFilterDefinitionNode):
cartesianProductAnalyzed = True
structuralNode.abstract = True # spanning ordinate acts as a subtitle
filteredFactsPartitions = structuralNode.evaluate(definitionNode,
definitionNode.filteredFactsPartitions,
evalArgs=(facts,))
for factsPartition in filteredFactsPartitions:
childStructuralNode = StructuralNode(structuralNode, definitionNode, contextItemFact=factsPartition[0])
childStructuralNode.indent = 0
structuralNode.childStructuralNodes.append(childStructuralNode)
checkLabelWidth(childStructuralNode, checkBoundFact=True)
#analyzeHdrs(view, childStructuralNode, definitionNode, depth, axisDisposition, factsPartition, processOpenDefinitionNode=False) #recurse
cartesianProductNestedArgs[3] = factsPartition
analyzeCartesianProductHdrs(childStructuralNode, *cartesianProductNestedArgs)
# sort by header (which is likely to be typed dim value, for example)
structuralNode.childStructuralNodes.sort(key=lambda childStructuralNode:
childStructuralNode.header(lang=view.lang,
returnGenLabel=False,
returnMsgFormatString=False)
or '') # exception on trying to sort if header returns None
# TBD if there is no abstract 'sub header' for these subOrdCntxs, move them in place of parent structuralNode