# {py:mod}`arelle.ValidateDuplicateFacts` ```{py:module} arelle.ValidateDuplicateFacts ``` ```{autodoc2-docstring} arelle.ValidateDuplicateFacts :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`DuplicateFactSet ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`doesSetHaveDuplicateType ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.doesSetHaveDuplicateType :summary: ``` * - {py:obj}`areFactsValueEqual ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.areFactsValueEqual :summary: ``` * - {py:obj}`getAspectEqualFacts ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getAspectEqualFacts :summary: ``` * - {py:obj}`getDeduplicatedFacts ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDeduplicatedFacts :summary: ``` * - {py:obj}`getDuplicateFactSets ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDuplicateFactSets :summary: ``` * - {py:obj}`getDuplicateFactSetsWithType ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDuplicateFactSetsWithType :summary: ``` * - {py:obj}`getFactValueEqualityKey ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getFactValueEqualityKey :summary: ``` * - {py:obj}`getHashEquivalentFactGroups ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getHashEquivalentFactGroups :summary: ``` * - {py:obj}`logDeduplicatedFact ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.logDeduplicatedFact :summary: ``` * - {py:obj}`saveDeduplicatedInstance ` - ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.saveDeduplicatedInstance :summary: ``` ```` ### API `````{py:class} DuplicateFactSet :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet ``` ````{py:attribute} facts :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.facts :type: list[arelle.ModelInstanceObject.ModelFact] :value: > None ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.facts ``` ```` ````{py:method} areAllComplete() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllComplete ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllComplete ``` ```` ````{py:method} areAllConsistent() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllConsistent ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllConsistent ``` ```` ````{py:method} areAllDecimalsEqual() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllDecimalsEqual ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllDecimalsEqual ``` ```` ````{py:method} areAllValueEqual() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllValueEqual ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAllValueEqual ``` ```` ````{py:method} areAnyComplete() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyComplete ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyComplete ``` ```` ````{py:method} areAnyConsistent() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyConsistent ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyConsistent ``` ```` ````{py:method} areAnyIncomplete() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyIncomplete ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyIncomplete ``` ```` ````{py:method} areAnyInconsistent() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyInconsistent ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areAnyInconsistent ``` ```` ````{py:method} areNumeric() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areNumeric ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areNumeric ``` ```` ````{py:method} areWithinRoundingError() -> bool :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.areWithinRoundingError ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.areWithinRoundingError ``` ```` ````{py:method} deduplicateCompleteSubsets() -> list[arelle.ModelInstanceObject.ModelFact] :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateCompleteSubsets ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateCompleteSubsets ``` ```` ````{py:method} deduplicateConsistentPairs() -> list[arelle.ModelInstanceObject.ModelFact] :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateConsistentPairs ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateConsistentPairs ``` ```` ````{py:method} deduplicateConsistentSet() -> tuple[list[arelle.ModelInstanceObject.ModelFact], str | None] :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateConsistentSet ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.deduplicateConsistentSet ``` ```` ````{py:method} getDecimals(fact: arelle.ModelInstanceObject.ModelFact) -> float | int | None :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.getDecimals ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.getDecimals ``` ```` ````{py:method} getRange(fact: arelle.ModelInstanceObject.ModelFact) -> tuple[_decimal.Decimal, _decimal.Decimal] :canonical: arelle.ValidateDuplicateFacts.DuplicateFactSet.getRange ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.DuplicateFactSet.getRange ``` ```` ````` ````{py:function} doesSetHaveDuplicateType(duplicateFacts: arelle.ValidateDuplicateFacts.DuplicateFactSet, duplicateType: arelle.ValidateDuplicateFactsConst.DuplicateType) -> bool :canonical: arelle.ValidateDuplicateFacts.doesSetHaveDuplicateType ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.doesSetHaveDuplicateType ``` ```` ````{py:function} areFactsValueEqual(factA: arelle.ModelInstanceObject.ModelFact, factB: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.ValidateDuplicateFacts.areFactsValueEqual ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.areFactsValueEqual ``` ```` ````{py:function} getAspectEqualFacts(hashEquivalentFacts: list[arelle.ModelInstanceObject.ModelFact], includeSingles: bool, useLang: bool = True) -> collections.abc.Iterator[list[arelle.ModelInstanceObject.ModelFact]] :canonical: arelle.ValidateDuplicateFacts.getAspectEqualFacts ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getAspectEqualFacts ``` ```` ````{py:function} getDeduplicatedFacts(modelXbrl: arelle.ModelXbrl.ModelXbrl, deduplicationType: arelle.ValidateDuplicateFactsConst.DeduplicationType) -> list[arelle.ModelInstanceObject.ModelFact] :canonical: arelle.ValidateDuplicateFacts.getDeduplicatedFacts ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDeduplicatedFacts ``` ```` ````{py:function} getDuplicateFactSets(facts: list[arelle.ModelInstanceObject.ModelFact], includeSingles: bool) -> collections.abc.Iterator[arelle.ValidateDuplicateFacts.DuplicateFactSet] :canonical: arelle.ValidateDuplicateFacts.getDuplicateFactSets ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDuplicateFactSets ``` ```` ````{py:function} getDuplicateFactSetsWithType(facts: list[arelle.ModelInstanceObject.ModelFact], duplicateType: arelle.ValidateDuplicateFactsConst.DuplicateType) -> collections.abc.Iterator[arelle.ValidateDuplicateFacts.DuplicateFactSet] :canonical: arelle.ValidateDuplicateFacts.getDuplicateFactSetsWithType ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getDuplicateFactSetsWithType ``` ```` ````{py:function} getFactValueEqualityKey(fact: arelle.ModelInstanceObject.ModelFact) -> arelle.ValidateDuplicateFactsConst.TypeFactValueEqualityKey :canonical: arelle.ValidateDuplicateFacts.getFactValueEqualityKey ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getFactValueEqualityKey ``` ```` ````{py:function} getHashEquivalentFactGroups(facts: list[arelle.ModelInstanceObject.ModelFact]) -> list[list[arelle.ModelInstanceObject.ModelFact]] :canonical: arelle.ValidateDuplicateFacts.getHashEquivalentFactGroups ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.getHashEquivalentFactGroups ``` ```` ````{py:function} logDeduplicatedFact(modelXbrl: arelle.ModelXbrl.ModelXbrl, fact: arelle.ModelInstanceObject.ModelFact) -> None :canonical: arelle.ValidateDuplicateFacts.logDeduplicatedFact ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.logDeduplicatedFact ``` ```` ````{py:function} saveDeduplicatedInstance(modelXbrl: arelle.ModelXbrl.ModelXbrl, deduplicationType: arelle.ValidateDuplicateFactsConst.DeduplicationType, outputFilepath: str) -> None :canonical: arelle.ValidateDuplicateFacts.saveDeduplicatedInstance ```{autodoc2-docstring} arelle.ValidateDuplicateFacts.saveDeduplicatedInstance ``` ````