# {py:mod}`arelle.XbrlUtil` ```{py:module} arelle.XbrlUtil ``` ```{autodoc2-docstring} arelle.XbrlUtil :allowtitles: ``` ## Module Contents ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`nodesCorrespond ` - ```{autodoc2-docstring} arelle.XbrlUtil.nodesCorrespond :summary: ``` * - {py:obj}`equalityHash ` - ```{autodoc2-docstring} arelle.XbrlUtil.equalityHash :summary: ``` * - {py:obj}`sEqual ` - ```{autodoc2-docstring} arelle.XbrlUtil.sEqual :summary: ``` * - {py:obj}`attributeDict ` - ```{autodoc2-docstring} arelle.XbrlUtil.attributeDict :summary: ``` * - {py:obj}`attributes ` - ```{autodoc2-docstring} arelle.XbrlUtil.attributes :summary: ``` * - {py:obj}`childElements ` - ```{autodoc2-docstring} arelle.XbrlUtil.childElements :summary: ``` * - {py:obj}`xEqual ` - ```{autodoc2-docstring} arelle.XbrlUtil.xEqual :summary: ``` * - {py:obj}`vEqual ` - ```{autodoc2-docstring} arelle.XbrlUtil.vEqual :summary: ``` * - {py:obj}`typedValue ` - ```{autodoc2-docstring} arelle.XbrlUtil.typedValue :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`S_EQUAL ` - ```{autodoc2-docstring} arelle.XbrlUtil.S_EQUAL :summary: ``` * - {py:obj}`S_EQUAL2 ` - ```{autodoc2-docstring} arelle.XbrlUtil.S_EQUAL2 :summary: ``` * - {py:obj}`XPATH_EQ ` - ```{autodoc2-docstring} arelle.XbrlUtil.XPATH_EQ :summary: ``` * - {py:obj}`VALIDATE_BY_STRING_VALUE ` - ```{autodoc2-docstring} arelle.XbrlUtil.VALIDATE_BY_STRING_VALUE :summary: ``` * - {py:obj}`NO_IDs_EXCLUDED ` - ```{autodoc2-docstring} arelle.XbrlUtil.NO_IDs_EXCLUDED :summary: ``` * - {py:obj}`ALL_IDs_EXCLUDED ` - ```{autodoc2-docstring} arelle.XbrlUtil.ALL_IDs_EXCLUDED :summary: ``` * - {py:obj}`TOP_IDs_EXCLUDED ` - ```{autodoc2-docstring} arelle.XbrlUtil.TOP_IDs_EXCLUDED :summary: ``` ```` ### API ````{py:data} S_EQUAL :canonical: arelle.XbrlUtil.S_EQUAL :type: int :value: > 0 ```{autodoc2-docstring} arelle.XbrlUtil.S_EQUAL ``` ```` ````{py:data} S_EQUAL2 :canonical: arelle.XbrlUtil.S_EQUAL2 :type: int :value: > 1 ```{autodoc2-docstring} arelle.XbrlUtil.S_EQUAL2 ``` ```` ````{py:data} XPATH_EQ :canonical: arelle.XbrlUtil.XPATH_EQ :type: int :value: > 2 ```{autodoc2-docstring} arelle.XbrlUtil.XPATH_EQ ``` ```` ````{py:data} VALIDATE_BY_STRING_VALUE :canonical: arelle.XbrlUtil.VALIDATE_BY_STRING_VALUE :type: int :value: > 3 ```{autodoc2-docstring} arelle.XbrlUtil.VALIDATE_BY_STRING_VALUE ``` ```` ````{py:data} NO_IDs_EXCLUDED :canonical: arelle.XbrlUtil.NO_IDs_EXCLUDED :type: int :value: > 0 ```{autodoc2-docstring} arelle.XbrlUtil.NO_IDs_EXCLUDED ``` ```` ````{py:data} ALL_IDs_EXCLUDED :canonical: arelle.XbrlUtil.ALL_IDs_EXCLUDED :type: int :value: > 1 ```{autodoc2-docstring} arelle.XbrlUtil.ALL_IDs_EXCLUDED ``` ```` ````{py:data} TOP_IDs_EXCLUDED :canonical: arelle.XbrlUtil.TOP_IDs_EXCLUDED :type: int :value: > 2 ```{autodoc2-docstring} arelle.XbrlUtil.TOP_IDs_EXCLUDED ``` ```` ````{py:function} nodesCorrespond(dts1: arelle.ModelXbrl.ModelXbrl, elt1: arelle.ModelObject.ModelObject | arelle.ModelObject.ModelAttribute | None, elt2: arelle.ModelObject.ModelObject | arelle.ModelObject.ModelAttribute | None, dts2: arelle.ModelXbrl.ModelXbrl | None = None, equalMode: int = XPATH_EQ, excludeIDs: int = ALL_IDs_EXCLUDED) -> bool :canonical: arelle.XbrlUtil.nodesCorrespond ```{autodoc2-docstring} arelle.XbrlUtil.nodesCorrespond ``` ```` ````{py:function} equalityHash(elt: arelle.ModelObject.ModelObject | typing.Sequence[arelle.ModelObject.ModelObject], equalMode: int = S_EQUAL, excludeIDs: int = NO_IDs_EXCLUDED) -> int :canonical: arelle.XbrlUtil.equalityHash ```{autodoc2-docstring} arelle.XbrlUtil.equalityHash ``` ```` ````{py:function} sEqual(dts1: arelle.ModelXbrl.ModelXbrl, elt1: arelle.ModelObject.ModelObject, elt2: arelle.ModelObject.ModelObject, equalMode: int = S_EQUAL, excludeIDs: int = NO_IDs_EXCLUDED, dts2: arelle.ModelXbrl.ModelXbrl | None = None, ns2ns1Tbl: dict[str, str] | None = None) -> bool :canonical: arelle.XbrlUtil.sEqual ```{autodoc2-docstring} arelle.XbrlUtil.sEqual ``` ```` ````{py:function} attributeDict(modelXbrl: arelle.ModelXbrl.ModelXbrl, elt: arelle.ModelObject.ModelObject, exclusions: set[str] = set(), equalMode: int = S_EQUAL, excludeIDs: int = NO_IDs_EXCLUDED, ns2ns1Tbl: dict[str, str] | None = None, keyByTag: bool = False, distinguishNaNs: bool = False) -> dict[arelle.ModelValue.QName, typing.Any] :canonical: arelle.XbrlUtil.attributeDict ```{autodoc2-docstring} arelle.XbrlUtil.attributeDict ``` ```` ````{py:function} attributes(modelXbrl: arelle.ModelXbrl.ModelXbrl, elt: arelle.ModelObject.ModelObject, exclusions: set[str] = set(), ns2ns1Tbl: dict[str, str] | None = None, keyByTag: bool = False) -> tuple[tuple[arelle.ModelValue.QName, typing.Any], ...] :canonical: arelle.XbrlUtil.attributes ```{autodoc2-docstring} arelle.XbrlUtil.attributes ``` ```` ````{py:function} childElements(elt: arelle.ModelObject.ModelObject) -> list[arelle.ModelObject.ModelObject] :canonical: arelle.XbrlUtil.childElements ```{autodoc2-docstring} arelle.XbrlUtil.childElements ``` ```` ````{py:function} xEqual(elt1: arelle.ModelObject.ModelObject, elt2: arelle.ModelObject.ModelObject, equalMode: int = S_EQUAL) -> bool :canonical: arelle.XbrlUtil.xEqual ```{autodoc2-docstring} arelle.XbrlUtil.xEqual ``` ```` ````{py:function} vEqual(elt1: arelle.ModelObject.ModelObject, elt2: arelle.ModelObject.ModelObject) -> bool :canonical: arelle.XbrlUtil.vEqual ```{autodoc2-docstring} arelle.XbrlUtil.vEqual ``` ```` ````{py:function} typedValue(dts: arelle.ModelXbrl.ModelXbrl | None, element: arelle.ModelObject.ModelObject, attrQname: arelle.ModelValue.QName | None = None) -> typing.Any :canonical: arelle.XbrlUtil.typedValue ```{autodoc2-docstring} arelle.XbrlUtil.typedValue ``` ````