# {py:mod}`arelle.utils.validate.ValidationUtil` ```{py:module} arelle.utils.validate.ValidationUtil ``` ```{autodoc2-docstring} arelle.utils.validate.ValidationUtil :allowtitles: ``` ## Module Contents ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`etreeIterWithDepth ` - ```{autodoc2-docstring} arelle.utils.validate.ValidationUtil.etreeIterWithDepth :summary: ``` * - {py:obj}`hasPresentationalConceptsWithFacts ` - ```{autodoc2-docstring} arelle.utils.validate.ValidationUtil.hasPresentationalConceptsWithFacts :summary: ``` ```` ### API ````{py:function} etreeIterWithDepth(node: arelle.ModelObject.ModelObject | lxml.etree._Element, depth: int = 0) -> collections.abc.Generator[tuple[arelle.ModelObject.ModelObject | lxml.etree._Element, int], None, None] :canonical: arelle.utils.validate.ValidationUtil.etreeIterWithDepth ```{autodoc2-docstring} arelle.utils.validate.ValidationUtil.etreeIterWithDepth ``` ```` ````{py:function} hasPresentationalConceptsWithFacts(modelXbrl: arelle.ModelXbrl.ModelXbrl, roleUris: collections.abc.Iterable[str], memberQnameFilter: set[arelle.ModelValue.QName] | None = None) -> bool :canonical: arelle.utils.validate.ValidationUtil.hasPresentationalConceptsWithFacts ```{autodoc2-docstring} arelle.utils.validate.ValidationUtil.hasPresentationalConceptsWithFacts ``` ````