本文整理汇总了Python中arelle.ModelRenderingObject.StructuralNode.factsPartition方法的典型用法代码示例。如果您正苦于以下问题:Python StructuralNode.factsPartition方法的具体用法?Python StructuralNode.factsPartition怎么用?Python StructuralNode.factsPartition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类arelle.ModelRenderingObject.StructuralNode
的用法示例。
在下文中一共展示了StructuralNode.factsPartition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: expandDefinition
# 需要导入模块: from arelle.ModelRenderingObject import StructuralNode [as 别名]
# 或者: from arelle.ModelRenderingObject.StructuralNode import factsPartition [as 别名]
#.........这里部分代码省略.........
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
filteredFactsPartitions.append([FactPrototype(view, {"aspectEntryObjectId": OPEN_ASPECT_ENTRY_SURROGATE + str(view.aspectEntryObjectId)})])
if structuralNode.isEntryPrototype(default=False):
break # only one node per cartesian product under outermost nested open entry row
else:
childList = structuralNode.choiceStructuralNodes
for factsPartition in filteredFactsPartitions:
childStructuralNode = StructuralNode(structuralNode, breakdownNode, definitionNode, contextItemFact=factsPartition[0])
# store the partition for later reuse when spreading facts in body cells
childStructuralNode.factsPartition = factsPartition
childStructuralNode.indent = 0
childStructuralNode.depth -= 1 # for label width; parent is merged/invisible
childList.append(childStructuralNode)
checkLabelWidth(childStructuralNode, checkBoundFact=True)
#expandDefinition(view, childStructuralNode, breakdownNode, definitionNode, depth, axisDisposition, factsPartition, processOpenDefinitionNode=False) #recurse
cartesianProductNestedArgs[3] = factsPartition
# note: reduced set of facts should always be passed to subsequent open nodes
if subtreeRelationships:
for axisSubtreeRel in subtreeRelationships:
child2DefinitionNode = axisSubtreeRel.toModelObject