# {py:mod}`arelle.formula.FormulaEvaluator` ```{py:module} arelle.formula.FormulaEvaluator ``` ```{autodoc2-docstring} arelle.formula.FormulaEvaluator :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`VariableBindingError ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBindingError :summary: ``` * - {py:obj}`VariableBinding ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`init ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.init :summary: ``` * - {py:obj}`evaluate ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluate :summary: ``` * - {py:obj}`evaluateVar ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVar :summary: ``` * - {py:obj}`evaluateVariableBindings ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVariableBindings :summary: ``` * - {py:obj}`factVarsExistAndAllHaveFallenBack ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.factVarsExistAndAllHaveFallenBack :summary: ``` * - {py:obj}`evaluateVariableSetPreconditions ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVariableSetPreconditions :summary: ``` * - {py:obj}`bindVariables ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.bindVariables :summary: ``` * - {py:obj}`bindFactVariable ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.bindFactVariable :summary: ``` * - {py:obj}`checkVarFilterInfo ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.checkVarFilterInfo :summary: ``` * - {py:obj}`checkVarSetFilterInfo ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.checkVarSetFilterInfo :summary: ``` * - {py:obj}`trialFilterFacts ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.trialFilterFacts :summary: ``` * - {py:obj}`filterFacts ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.filterFacts :summary: ``` * - {py:obj}`coverAspectCoverFilterDims ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.coverAspectCoverFilterDims :summary: ``` * - {py:obj}`isVbTupleWithOnlyAnUncoveredDimension ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.isVbTupleWithOnlyAnUncoveredDimension :summary: ``` * - {py:obj}`implicitFilter ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.implicitFilter :summary: ``` * - {py:obj}`aspectsMatch ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectsMatch :summary: ``` * - {py:obj}`aspectMatches ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectMatches :summary: ``` * - {py:obj}`aspectMatchesNoCache ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectMatchesNoCache :summary: ``` * - {py:obj}`factsPartitions ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.factsPartitions :summary: ``` * - {py:obj}`evaluationIsUnnecessary ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluationIsUnnecessary :summary: ``` * - {py:obj}`produceOutputFact ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.produceOutputFact :summary: ``` * - {py:obj}`formulaAspectValue ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.formulaAspectValue :summary: ``` * - {py:obj}`uncoveredAspectValue ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.uncoveredAspectValue :summary: ``` * - {py:obj}`variableBindingIsFallback ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.variableBindingIsFallback :summary: ``` * - {py:obj}`uncoveredVariableSetAspects ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.uncoveredVariableSetAspects :summary: ``` * - {py:obj}`orderAspects ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.orderAspects :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ModelDimensionValue ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.ModelDimensionValue :summary: ``` * - {py:obj}`ModelFact ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.ModelFact :summary: ``` * - {py:obj}`expressionVariablesPattern ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.expressionVariablesPattern :summary: ``` * - {py:obj}`EMPTYSET ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.EMPTYSET :summary: ``` * - {py:obj}`xbrlfe_undefinedSAV ` - ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.xbrlfe_undefinedSAV :summary: ``` ```` ### API ````{py:data} ModelDimensionValue :canonical: arelle.formula.FormulaEvaluator.ModelDimensionValue :value: > None ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.ModelDimensionValue ``` ```` ````{py:data} ModelFact :canonical: arelle.formula.FormulaEvaluator.ModelFact :value: > None ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.ModelFact ``` ```` ````{py:data} expressionVariablesPattern :canonical: arelle.formula.FormulaEvaluator.expressionVariablesPattern :value: > 'compile(...)' ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.expressionVariablesPattern ``` ```` ````{py:data} EMPTYSET :canonical: arelle.formula.FormulaEvaluator.EMPTYSET :value: > 'set(...)' ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.EMPTYSET ``` ```` ````{py:function} init() :canonical: arelle.formula.FormulaEvaluator.init ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.init ``` ```` ````{py:function} evaluate(xpCtx, varSet, variablesInScope=False, uncoveredAspectFacts=None) :canonical: arelle.formula.FormulaEvaluator.evaluate ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluate ``` ```` ````{py:function} evaluateVar(xpCtx, varSet, varIndex, cachedFilteredFacts, uncoveredAspectFacts) :canonical: arelle.formula.FormulaEvaluator.evaluateVar ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVar ``` ```` ````{py:function} evaluateVariableBindings(xpCtx, varSet, uncoveredAspectFacts) :canonical: arelle.formula.FormulaEvaluator.evaluateVariableBindings ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVariableBindings ``` ```` ````{py:function} factVarsExistAndAllHaveFallenBack(xpCtx) :canonical: arelle.formula.FormulaEvaluator.factVarsExistAndAllHaveFallenBack ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.factVarsExistAndAllHaveFallenBack ``` ```` ````{py:function} evaluateVariableSetPreconditions(xpCtx, varSet) :canonical: arelle.formula.FormulaEvaluator.evaluateVariableSetPreconditions ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluateVariableSetPreconditions ``` ```` ````{py:function} bindVariables(xpCtx, varSet, varIndex, cachedFilteredFacts, uncoveredAspectFacts) :canonical: arelle.formula.FormulaEvaluator.bindVariables ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.bindVariables ``` ```` ````{py:function} bindFactVariable(xpCtx, varSet, cachedFilteredFacts, uncoveredAspectFacts, varQname, vb) :canonical: arelle.formula.FormulaEvaluator.bindFactVariable ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.bindFactVariable ``` ```` ````{py:function} checkVarFilterInfo(var) :canonical: arelle.formula.FormulaEvaluator.checkVarFilterInfo ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.checkVarFilterInfo ``` ```` ````{py:function} checkVarSetFilterInfo(varSet) :canonical: arelle.formula.FormulaEvaluator.checkVarSetFilterInfo ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.checkVarSetFilterInfo ``` ```` ````{py:function} trialFilterFacts(xpCtx, vb, facts, filterRelationships, filterType, var=None, varSet=None) :canonical: arelle.formula.FormulaEvaluator.trialFilterFacts ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.trialFilterFacts ``` ```` ````{py:function} filterFacts(xpCtx, vb, facts, filterRelationships, filterType) :canonical: arelle.formula.FormulaEvaluator.filterFacts ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.filterFacts ``` ```` ````{py:function} coverAspectCoverFilterDims(xpCtx, vb, filterRelationships) :canonical: arelle.formula.FormulaEvaluator.coverAspectCoverFilterDims ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.coverAspectCoverFilterDims ``` ```` ````{py:function} isVbTupleWithOnlyAnUncoveredDimension(xpCtx, vb, facts) :canonical: arelle.formula.FormulaEvaluator.isVbTupleWithOnlyAnUncoveredDimension ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.isVbTupleWithOnlyAnUncoveredDimension ``` ```` ````{py:function} implicitFilter(xpCtx, vb, facts, uncoveredAspectFacts) :canonical: arelle.formula.FormulaEvaluator.implicitFilter ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.implicitFilter ``` ```` ````{py:function} aspectsMatch(xpCtx, fact1, fact2, aspects) :canonical: arelle.formula.FormulaEvaluator.aspectsMatch ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectsMatch ``` ```` ````{py:function} aspectMatches(xpCtx, fact1, fact2, aspect) :canonical: arelle.formula.FormulaEvaluator.aspectMatches ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectMatches ``` ```` ````{py:function} aspectMatchesNoCache(xpCtx, fact1, fact2, aspect) :canonical: arelle.formula.FormulaEvaluator.aspectMatchesNoCache ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.aspectMatchesNoCache ``` ```` ````{py:function} factsPartitions(xpCtx, facts, aspects) :canonical: arelle.formula.FormulaEvaluator.factsPartitions ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.factsPartitions ``` ```` ````{py:function} evaluationIsUnnecessary(thisEval, xpCtx) :canonical: arelle.formula.FormulaEvaluator.evaluationIsUnnecessary ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.evaluationIsUnnecessary ``` ```` ````{py:function} produceOutputFact(xpCtx, formula, result) :canonical: arelle.formula.FormulaEvaluator.produceOutputFact ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.produceOutputFact ``` ```` ````{py:function} formulaAspectValue(xpCtx, formula, aspect, srcMissingErr) :canonical: arelle.formula.FormulaEvaluator.formulaAspectValue ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.formulaAspectValue ``` ```` ````{py:function} uncoveredAspectValue(xpCtx, aspect) :canonical: arelle.formula.FormulaEvaluator.uncoveredAspectValue ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.uncoveredAspectValue ``` ```` ````{py:function} variableBindingIsFallback(xpCtx, variableQname) :canonical: arelle.formula.FormulaEvaluator.variableBindingIsFallback ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.variableBindingIsFallback ``` ```` ````{py:function} uncoveredVariableSetAspects(xpCtx) :canonical: arelle.formula.FormulaEvaluator.uncoveredVariableSetAspects ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.uncoveredVariableSetAspects ``` ```` `````{py:class} VariableBindingError(err, msg=None) :canonical: arelle.formula.FormulaEvaluator.VariableBindingError ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBindingError ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBindingError.__init__ ``` ````{py:method} __repr__() :canonical: arelle.formula.FormulaEvaluator.VariableBindingError.__repr__ ```` ````` ````{py:function} orderAspects(aspects) :canonical: arelle.formula.FormulaEvaluator.orderAspects ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.orderAspects ``` ```` ````{py:data} xbrlfe_undefinedSAV :canonical: arelle.formula.FormulaEvaluator.xbrlfe_undefinedSAV :value: > 'VariableBindingError(...)' ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.xbrlfe_undefinedSAV ``` ```` `````{py:class} VariableBinding(xpCtx, varRel=None, boundFact=None) :canonical: arelle.formula.FormulaEvaluator.VariableBinding ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.__init__ ``` ````{py:method} close() :canonical: arelle.formula.FormulaEvaluator.VariableBinding.close ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.close ``` ```` ````{py:property} resourceElementName :canonical: arelle.formula.FormulaEvaluator.VariableBinding.resourceElementName ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.resourceElementName ``` ```` ````{py:method} matchesSubPartitions(partition, aspects) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.matchesSubPartitions ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.matchesSubPartitions ``` ```` ````{py:property} evaluationResults :canonical: arelle.formula.FormulaEvaluator.VariableBinding.evaluationResults ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.evaluationResults ``` ```` ````{py:method} matchableBoundFact(fbVars) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.matchableBoundFact ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.matchableBoundFact ``` ```` ````{py:method} hasDimension(dimension) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.hasDimension ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.hasDimension ``` ```` ````{py:method} hasDimensionValueDefined(dimension) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.hasDimensionValueDefined ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.hasDimensionValueDefined ``` ```` ````{py:method} definedDimensions(dimension) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.definedDimensions ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.definedDimensions ``` ```` ````{py:method} isDimensionalValid(dimension) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.isDimensionalValid ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.isDimensionalValid ``` ```` ````{py:method} hasAspectValueUncovered(aspect) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueUncovered ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueUncovered ``` ```` ````{py:method} hasAspectValueCovered(aspect) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueCovered ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueCovered ``` ```` ````{py:method} aspectsNotCovered(aspects) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.aspectsNotCovered ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.aspectsNotCovered ``` ```` ````{py:method} hasAspectValueDefined(aspect) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueDefined ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.hasAspectValueDefined ``` ```` ````{py:method} aspectValue(aspect) :canonical: arelle.formula.FormulaEvaluator.VariableBinding.aspectValue ```{autodoc2-docstring} arelle.formula.FormulaEvaluator.VariableBinding.aspectValue ``` ```` `````