arelle.formula.XPathParser

See COPYRIGHT.md for copyright information.

Module Contents

Classes

Functions

Data

_

FormulaToken

RecursiveFormulaTokens

ExpressionStack

ixtFunctionNamespaces

debug_flag

exprStack

xmlElement

modelXbrl

pluginCustomFunctionQNames

defaultNsmap

axesSupported

variableRef

qName

ncName

prefixOp

exponentLiteralStr

plusorminusLiteralStr

digitsStr

optionalDigitsStr

decimalPointStr

nanLiteralStr

integerLiteralStr

decimalFractionLiteralStr

infLiteralStr

decimalPoint

exponentLiteral

plusorminusLiteral

digits

integerLiteral

decimalFractionLiteral

infLiteral

nanLiteral

floatLiteral

decimalLiteral

lParen

rParen

lPred

rPred

expOp

commaOp

forOp

someOp

everyOp

quantifiedOp

inOp

returnOp

satisfiesOp

ifOp

thenOp

elseOp

andOp

orOp

eqValueOp

neValueOp

ltValueOp

leValueOp

gtValueOp

geValueOp

valueCompOp

isNodeOp

precedesNodeOp

followsNodeOp

nodeCompOp

neGeneralOp

leGeneralOp

ltGeneralOp

geGeneralOp

gtGeneralOp

eqGeneralOp

generalCompOp

comparisonOp

toOp

plusOp

minusOp

plusMinusOp

multOp

divOp

idivOp

modOp

multDivOp

unionWordOp

unionSymbOp

unionOp

intersectOp

exceptOp

intersectExceptOp

instanceOp

ofOp

treatOp

asOp

castableOp

castOp

unaryOp

occurOptionalOp

occurAnyOp

occurAtLeastOnceOp

occurrenceOp

wildOp

typeName

elementName

attributeName

elementDeclaration

schemaElementTest

elementNameOrWildcard

elementTest

attributeDeclaration

schemaAttributeTest

attribNameOrWildcard

attributeTest

PITest

commentTest

textTest

documentTest

anyKindTest

kindTest

wildcard

nameTest

nodeTest

abbrevForwardStep

atomicType

itemType

occurrenceIndicator

sequenceType

singleType

contextItem

pathDescOp

pathStepOp

pathOp

pathRootOp

axisOp

forwardAxis

forwardStep

reverseAxis

abbrevReverseStep

reverseStep

step

expr

atom

stepExpr

relativePathExpr

pathExpr

valueExpr

unaryExpr

castExpr

castableExpr

treatExpr

instanceOfExpr

intersectExceptExpr

unionExpr

multiplicitaveExpr

additiveExpr

rangeExpr

comparisonExpr

andExpr

orExpr

xpathExpr

opn

def evaluateStack( self, s ): op = s.pop() if isinstance(op,FunctionDef): f = op args = [] for i in range(f.argcount): args.insert(0, self.evaluateStack( s )) if f.name == “sum”: return sum(args) elif f.name == “concat”: return “”.join(str(arg) for arg in args) elif isinstance(op,VariableRef): v = op if v.name in variables: return variables[v.name] else: return None else: if op in (“+”,”-“,”*”,”div”,”idiv”,”^”): op2 = self.evaluateStack( s ) op1 = self.evaluateStack( s ) if op1 and op2: return self.opn[op]( op1, op2 ) else: return None elif op == “(“: return self.evaluateStack( s ) else: return op

isInitialized

_staticExpressionFunctionContext

API

arelle.formula.XPathParser._: arelle.typing.TypeGetText

None

arelle.formula.XPathParser.FormulaToken

None

arelle.formula.XPathParser.RecursiveFormulaTokens

None

arelle.formula.XPathParser.ExpressionStack

None

arelle.formula.XPathParser.ixtFunctionNamespaces: set[str]

‘set(…)’

arelle.formula.XPathParser.debug_flag

True

arelle.formula.XPathParser.exprStack: arelle.formula.XPathParser.ExpressionStack

[]

arelle.formula.XPathParser.xmlElement: arelle.ModelObject.ModelObject | None

None

arelle.formula.XPathParser.modelXbrl: arelle.ModelXbrl.ModelXbrl | None

None

arelle.formula.XPathParser.pluginCustomFunctionQNames: set[arelle.ModelValue.QName] | None

None

class arelle.formula.XPathParser.ProgHeader(modelObject: arelle.ModelFormulaObject.ModelFormulaResource, name: str, element: arelle.ModelObject.ModelObject, sourceStr: str, traceType: int)

Initialization

__repr__() str
arelle.formula.XPathParser.exprStackToksRIndex(toks: pyparsing.ParseResults) int
arelle.formula.XPathParser.exprStackTokRIndex(tok: arelle.formula.XPathParser.FormulaToken) int
arelle.formula.XPathParser.pushFirst(sourceStr: str, loc: int, toks: pyparsing.ParseResults) None
arelle.formula.XPathParser.pushFloat(sourceStr: str, loc: int, toks: pyparsing.ParseResults) float
arelle.formula.XPathParser.pushInt(sourceStr: str, loc: int, toks: pyparsing.ParseResults) int
arelle.formula.XPathParser.pushDecimal(sourceStr: str, loc: int, toks: pyparsing.ParseResults) decimal.Decimal
arelle.formula.XPathParser.pushQuotedString(sourceStr: str, loc: int, toks: pyparsing.ParseResults) str
class arelle.formula.XPathParser.QNameDef(loc: int, prefix: str | None, namespaceURI: str | None, localName: str, isAttribute: bool = False, axis: str | None = None)

Bases: arelle.ModelValue.QName

Initialization

__hash__() int
__repr__() str
__eq__(other: Any) bool
__ne__(other: Any) bool
arelle.formula.XPathParser.defaultNsmap

None

arelle.formula.XPathParser.axesSupported

None

arelle.formula.XPathParser.pushQName(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.QNameDef | None
arelle.formula.XPathParser.pushAttr(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.QNameDef
class arelle.formula.XPathParser.OpDef(loc: int, toks: pyparsing.ParseResults)

Initialization

__repr__() str
__eq__(other: Any) bool
__ne__(other: Any) bool
arelle.formula.XPathParser.pushOp(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OpDef
class arelle.formula.XPathParser.OperationDef(sourceStr: str, loc: int, name: str | arelle.formula.XPathParser.QNameDef, toks: pyparsing.ParseResults | list[arelle.formula.XPathParser.FormulaToken], skipFirstTok: bool)

Initialization

args: list[arelle.formula.XPathParser.FormulaToken]

None

__repr__() str
arelle.formula.XPathParser.pushOperation(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef
arelle.formula.XPathParser.pushUnaryOperation(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef
arelle.formula.XPathParser.pushFunction(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef
arelle.formula.XPathParser.pushSequence(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef
arelle.formula.XPathParser.pushPredicate(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef
arelle.formula.XPathParser.pushRootStep(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.OperationDef | None
class arelle.formula.XPathParser.VariableRef(loc: int, qname: arelle.ModelValue.QName)

Initialization

__repr__() str
arelle.formula.XPathParser.pushVarRef(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.VariableRef
class arelle.formula.XPathParser.RangeDecl(loc: int, toks: pyparsing.ParseResults)

Initialization

__repr__() str
arelle.formula.XPathParser.pushRangeVar(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.RangeDecl
class arelle.formula.XPathParser.Expr(loc: int, toks: pyparsing.ParseResults)

Initialization

__repr__() str
arelle.formula.XPathParser.pushExpr(sourceStr: str, loc: int, toks: pyparsing.ParseResults) arelle.formula.XPathParser.Expr
arelle.formula.XPathParser.variableRef

‘Regex(…)’

arelle.formula.XPathParser.qName

‘Regex(…)’

arelle.formula.XPathParser.ncName

‘Word(…)’

arelle.formula.XPathParser.prefixOp

‘Literal(…)’

arelle.formula.XPathParser.exponentLiteralStr

‘[eE]’

arelle.formula.XPathParser.plusorminusLiteralStr

‘[+-]’

arelle.formula.XPathParser.digitsStr

‘\d+’

arelle.formula.XPathParser.optionalDigitsStr

‘\d*’

arelle.formula.XPathParser.decimalPointStr

‘.’

arelle.formula.XPathParser.nanLiteralStr

‘NaN’

arelle.formula.XPathParser.integerLiteralStr

None

arelle.formula.XPathParser.decimalFractionLiteralStr

None

arelle.formula.XPathParser.infLiteralStr

None

arelle.formula.XPathParser.decimalPoint

‘Literal(…)’

arelle.formula.XPathParser.exponentLiteral

‘Regex(…)’

arelle.formula.XPathParser.plusorminusLiteral

None

arelle.formula.XPathParser.digits

‘Word(…)’

arelle.formula.XPathParser.integerLiteral

‘Regex(…)’

arelle.formula.XPathParser.decimalFractionLiteral

‘Regex(…)’

arelle.formula.XPathParser.infLiteral

‘Regex(…)’

arelle.formula.XPathParser.nanLiteral

‘Regex(…)’

arelle.formula.XPathParser.floatLiteral

‘Regex(…)’

arelle.formula.XPathParser.decimalLiteral

‘Regex(…)’

arelle.formula.XPathParser.lParen

‘Literal(…)’

arelle.formula.XPathParser.rParen

‘Literal(…)’

arelle.formula.XPathParser.lPred

‘Literal(…)’

arelle.formula.XPathParser.rPred

‘Literal(…)’

arelle.formula.XPathParser.expOp

‘Literal(…)’

arelle.formula.XPathParser.commaOp

‘Literal(…)’

arelle.formula.XPathParser.forOp

‘set_parse_action(…)’

arelle.formula.XPathParser.someOp

‘Keyword(…)’

arelle.formula.XPathParser.everyOp

‘Keyword(…)’

arelle.formula.XPathParser.quantifiedOp

‘set_parse_action(…)’

arelle.formula.XPathParser.inOp

‘Keyword(…)’

arelle.formula.XPathParser.returnOp

‘set_parse_action(…)’

arelle.formula.XPathParser.satisfiesOp

‘set_parse_action(…)’

arelle.formula.XPathParser.ifOp

‘set_parse_action(…)’

arelle.formula.XPathParser.thenOp

‘set_parse_action(…)’

arelle.formula.XPathParser.elseOp

‘set_parse_action(…)’

arelle.formula.XPathParser.andOp

‘Keyword(…)’

arelle.formula.XPathParser.orOp

‘Keyword(…)’

arelle.formula.XPathParser.eqValueOp

‘Keyword(…)’

arelle.formula.XPathParser.neValueOp

‘Keyword(…)’

arelle.formula.XPathParser.ltValueOp

‘Keyword(…)’

arelle.formula.XPathParser.leValueOp

‘Keyword(…)’

arelle.formula.XPathParser.gtValueOp

‘Keyword(…)’

arelle.formula.XPathParser.geValueOp

‘Keyword(…)’

arelle.formula.XPathParser.valueCompOp

None

arelle.formula.XPathParser.isNodeOp

‘Keyword(…)’

arelle.formula.XPathParser.precedesNodeOp

‘Literal(…)’

arelle.formula.XPathParser.followsNodeOp

‘Literal(…)’

arelle.formula.XPathParser.nodeCompOp

None

arelle.formula.XPathParser.neGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.leGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.ltGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.geGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.gtGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.eqGeneralOp

‘Literal(…)’

arelle.formula.XPathParser.generalCompOp

None

arelle.formula.XPathParser.comparisonOp

‘set_parse_action(…)’

arelle.formula.XPathParser.toOp

‘set_parse_action(…)’

arelle.formula.XPathParser.plusOp

‘Literal(…)’

arelle.formula.XPathParser.minusOp

‘Literal(…)’

arelle.formula.XPathParser.plusMinusOp

‘set_parse_action(…)’

arelle.formula.XPathParser.multOp

‘Literal(…)’

arelle.formula.XPathParser.divOp

‘Keyword(…)’

arelle.formula.XPathParser.idivOp

‘Keyword(…)’

arelle.formula.XPathParser.modOp

‘Keyword(…)’

arelle.formula.XPathParser.multDivOp

‘set_parse_action(…)’

arelle.formula.XPathParser.unionWordOp

‘Keyword(…)’

arelle.formula.XPathParser.unionSymbOp

‘Literal(…)’

arelle.formula.XPathParser.unionOp

None

arelle.formula.XPathParser.intersectOp

‘Keyword(…)’

arelle.formula.XPathParser.exceptOp

‘Keyword(…)’

arelle.formula.XPathParser.intersectExceptOp

None

arelle.formula.XPathParser.instanceOp

‘Keyword(…)’

arelle.formula.XPathParser.ofOp

‘Keyword(…)’

arelle.formula.XPathParser.treatOp

‘Keyword(…)’

arelle.formula.XPathParser.asOp

‘Keyword(…)’

arelle.formula.XPathParser.castableOp

‘Keyword(…)’

arelle.formula.XPathParser.castOp

‘Keyword(…)’

arelle.formula.XPathParser.unaryOp

None

arelle.formula.XPathParser.occurOptionalOp

‘Literal(…)’

arelle.formula.XPathParser.occurAnyOp

None

arelle.formula.XPathParser.occurAtLeastOnceOp

None

arelle.formula.XPathParser.occurrenceOp

None

arelle.formula.XPathParser.wildOp

None

arelle.formula.XPathParser.typeName

None

arelle.formula.XPathParser.elementName

None

arelle.formula.XPathParser.attributeName

None

arelle.formula.XPathParser.elementDeclaration

None

arelle.formula.XPathParser.schemaElementTest

‘set_parse_action(…)’

arelle.formula.XPathParser.elementNameOrWildcard

None

arelle.formula.XPathParser.elementTest

‘set_parse_action(…)’

arelle.formula.XPathParser.attributeDeclaration

None

arelle.formula.XPathParser.schemaAttributeTest

‘set_parse_action(…)’

arelle.formula.XPathParser.attribNameOrWildcard

None

arelle.formula.XPathParser.attributeTest

‘set_parse_action(…)’

arelle.formula.XPathParser.PITest

‘set_parse_action(…)’

arelle.formula.XPathParser.commentTest

‘set_parse_action(…)’

arelle.formula.XPathParser.textTest

‘set_parse_action(…)’

arelle.formula.XPathParser.documentTest

‘set_parse_action(…)’

arelle.formula.XPathParser.anyKindTest

‘set_parse_action(…)’

arelle.formula.XPathParser.kindTest

None

arelle.formula.XPathParser.wildcard

None

arelle.formula.XPathParser.nameTest

None

arelle.formula.XPathParser.nodeTest

None

arelle.formula.XPathParser.abbrevForwardStep

None

arelle.formula.XPathParser.atomicType

None

arelle.formula.XPathParser.itemType

None

arelle.formula.XPathParser.occurrenceIndicator

None

arelle.formula.XPathParser.sequenceType

None

arelle.formula.XPathParser.singleType

None

arelle.formula.XPathParser.contextItem

None

arelle.formula.XPathParser.pathDescOp

‘Literal(…)’

arelle.formula.XPathParser.pathStepOp

‘Literal(…)’

arelle.formula.XPathParser.pathOp

None

arelle.formula.XPathParser.pathRootOp

‘Regex(…)’

arelle.formula.XPathParser.axisOp

‘Literal(…)’

arelle.formula.XPathParser.forwardAxis

None

arelle.formula.XPathParser.forwardStep

None

arelle.formula.XPathParser.reverseAxis

None

arelle.formula.XPathParser.abbrevReverseStep

‘Literal(…)’

arelle.formula.XPathParser.reverseStep

None

arelle.formula.XPathParser.step

None

arelle.formula.XPathParser.expr

‘Forward(…)’

arelle.formula.XPathParser.atom

None

arelle.formula.XPathParser.stepExpr

None

arelle.formula.XPathParser.relativePathExpr

None

arelle.formula.XPathParser.pathExpr

None

arelle.formula.XPathParser.valueExpr

None

arelle.formula.XPathParser.unaryExpr

None

arelle.formula.XPathParser.castExpr

None

arelle.formula.XPathParser.castableExpr

None

arelle.formula.XPathParser.treatExpr

None

arelle.formula.XPathParser.instanceOfExpr

None

arelle.formula.XPathParser.intersectExceptExpr

None

arelle.formula.XPathParser.unionExpr

None

arelle.formula.XPathParser.multiplicitaveExpr

None

arelle.formula.XPathParser.additiveExpr

None

arelle.formula.XPathParser.rangeExpr

None

arelle.formula.XPathParser.comparisonExpr

None

arelle.formula.XPathParser.andExpr

None

arelle.formula.XPathParser.orExpr

None

arelle.formula.XPathParser.xpathExpr

None

arelle.formula.XPathParser.opn

None

def evaluateStack( self, s ): op = s.pop() if isinstance(op,FunctionDef): f = op args = [] for i in range(f.argcount): args.insert(0, self.evaluateStack( s )) if f.name == “sum”: return sum(args) elif f.name == “concat”: return “”.join(str(arg) for arg in args) elif isinstance(op,VariableRef): v = op if v.name in variables: return variables[v.name] else: return None else: if op in (“+”,”-“,”*”,”div”,”idiv”,”^”): op2 = self.evaluateStack( s ) op1 = self.evaluateStack( s ) if op1 and op2: return self.opn[op]( op1, op2 ) else: return None elif op == “(“: return self.evaluateStack( s ) else: return op

arelle.formula.XPathParser.normalizeExpr(expr: str) str
arelle.formula.XPathParser.isInitialized

False

arelle.formula.XPathParser.initializeParser(modelManager: arelle.ModelManager.ModelManager) bool
arelle.formula.XPathParser.exceptionErrorIndication(exception: arelle.formula.XPathContext.XPathException | pyparsing.ParseBaseException) str
arelle.formula.XPathParser._staticExpressionFunctionContext: xml.dom.minidom.Element | None

None

arelle.formula.XPathParser.staticExpressionFunctionContext() xml.dom.minidom.Element
arelle.formula.XPathParser.parse(modelObject: arelle.ModelFormulaObject.ModelFormulaResource, xpathExpression: str | None, element: arelle.ModelObject.ModelObject | None, name: str, traceType: int) arelle.formula.XPathParser.ExpressionStack | None
arelle.formula.XPathParser.variableReferencesSet(exprStack: arelle.formula.XPathParser.ExpressionStack | None, element: arelle.ModelFormulaObject.ModelFormulaResource) set[arelle.ModelValue.QName]
arelle.formula.XPathParser.variableReferences(exprStack: arelle.formula.XPathParser.RecursiveFormulaTokens, varRefSet: set[arelle.ModelValue.QName], element: arelle.ModelObject.ModelObject, rangeVars: list[arelle.ModelValue.QName] | None = None) None
arelle.formula.XPathParser.prefixDeclarations(exprStack: arelle.formula.XPathParser.RecursiveFormulaTokens, xmlnsDict: dict[str, str | None], element: arelle.ModelObject.ModelObject) None
arelle.formula.XPathParser.clearProg(exprStack: arelle.formula.XPathParser.ExpressionStack | None) None
arelle.formula.XPathParser.clearNamedProg(ownerObject: arelle.ModelFormulaObject.ModelFormulaResource, progName: str) None
arelle.formula.XPathParser.clearNamedProgs(ownerObject: arelle.ModelFormulaObject.ModelFormulaResource, progsListName: str) None
arelle.formula.XPathParser.codeModule(code: collections.abc.Iterable[Any]) str
arelle.formula.XPathParser.parser_unit_test() None