# {py:mod}`arelle.utils.validate.Facts` ```{py:module} arelle.utils.validate.Facts ``` ```{autodoc2-docstring} arelle.utils.validate.Facts :allowtitles: ``` ## Module Contents ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`factHasXsiNilAttribute ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasXsiNilAttribute :summary: ``` * - {py:obj}`factHasPrecisionAttribute ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasPrecisionAttribute :summary: ``` * - {py:obj}`isEmptyStringItemFact ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.isEmptyStringItemFact :summary: ``` * - {py:obj}`isValidNonNilFact ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.isValidNonNilFact :summary: ``` * - {py:obj}`factHasNegativeNumericValue ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasNegativeNumericValue :summary: ``` * - {py:obj}`getDuplicateFactGroupsByConceptContextUnit ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.getDuplicateFactGroupsByConceptContextUnit :summary: ``` * - {py:obj}`iterValidNonNilFactsByQname ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.iterValidNonNilFactsByQname :summary: ``` * - {py:obj}`hasValidNonNilFactByQname ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.hasValidNonNilFactByQname :summary: ``` * - {py:obj}`getUsedConceptsFromFacts ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.getUsedConceptsFromFacts :summary: ``` * - {py:obj}`hasNonNillFact ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.hasNonNillFact :summary: ``` * - {py:obj}`getNegativeFacts ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.getNegativeFacts :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`_ ` - ```{autodoc2-docstring} arelle.utils.validate.Facts._ :summary: ``` * - {py:obj}`XSI_NIL_ATTR ` - ```{autodoc2-docstring} arelle.utils.validate.Facts.XSI_NIL_ATTR :summary: ``` ```` ### API ````{py:data} _ :canonical: arelle.utils.validate.Facts._ :type: arelle.typing.TypeGetText :value: > None ```{autodoc2-docstring} arelle.utils.validate.Facts._ ``` ```` ````{py:data} XSI_NIL_ATTR :canonical: arelle.utils.validate.Facts.XSI_NIL_ATTR :value: > '{http://www.w3.org/2001/XMLSchema-instance}nil' ```{autodoc2-docstring} arelle.utils.validate.Facts.XSI_NIL_ATTR ``` ```` ````{py:function} factHasXsiNilAttribute(fact: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.utils.validate.Facts.factHasXsiNilAttribute ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasXsiNilAttribute ``` ```` ````{py:function} factHasPrecisionAttribute(fact: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.utils.validate.Facts.factHasPrecisionAttribute ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasPrecisionAttribute ``` ```` ````{py:function} isEmptyStringItemFact(fact: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.utils.validate.Facts.isEmptyStringItemFact ```{autodoc2-docstring} arelle.utils.validate.Facts.isEmptyStringItemFact ``` ```` ````{py:function} isValidNonNilFact(fact: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.utils.validate.Facts.isValidNonNilFact ```{autodoc2-docstring} arelle.utils.validate.Facts.isValidNonNilFact ``` ```` ````{py:function} factHasNegativeNumericValue(fact: arelle.ModelInstanceObject.ModelFact) -> bool :canonical: arelle.utils.validate.Facts.factHasNegativeNumericValue ```{autodoc2-docstring} arelle.utils.validate.Facts.factHasNegativeNumericValue ``` ```` ````{py:function} getDuplicateFactGroupsByConceptContextUnit(facts: collections.abc.Iterable[arelle.ModelInstanceObject.ModelFact]) -> dict[object, list[arelle.ModelInstanceObject.ModelFact]] :canonical: arelle.utils.validate.Facts.getDuplicateFactGroupsByConceptContextUnit ```{autodoc2-docstring} arelle.utils.validate.Facts.getDuplicateFactGroupsByConceptContextUnit ``` ```` ````{py:function} iterValidNonNilFactsByQname(modelXbrl: arelle.ModelXbrl.ModelXbrl, qname: arelle.ModelValue.QName) -> collections.abc.Iterable[arelle.ModelInstanceObject.ModelFact] :canonical: arelle.utils.validate.Facts.iterValidNonNilFactsByQname ```{autodoc2-docstring} arelle.utils.validate.Facts.iterValidNonNilFactsByQname ``` ```` ````{py:function} hasValidNonNilFactByQname(modelXbrl: arelle.ModelXbrl.ModelXbrl, qname: arelle.ModelValue.QName) -> bool :canonical: arelle.utils.validate.Facts.hasValidNonNilFactByQname ```{autodoc2-docstring} arelle.utils.validate.Facts.hasValidNonNilFactByQname ``` ```` ````{py:function} getUsedConceptsFromFacts(modelXbrl: arelle.ModelXbrl.ModelXbrl) -> set[arelle.ModelDtsObject.ModelConcept] :canonical: arelle.utils.validate.Facts.getUsedConceptsFromFacts ```{autodoc2-docstring} arelle.utils.validate.Facts.getUsedConceptsFromFacts ``` ```` ````{py:function} hasNonNillFact(modelXbrl: arelle.ModelXbrl.ModelXbrl, conceptKey: typing.Union[arelle.ModelValue.QName, str]) -> bool :canonical: arelle.utils.validate.Facts.hasNonNillFact ```{autodoc2-docstring} arelle.utils.validate.Facts.hasNonNillFact ``` ```` ````{py:function} getNegativeFacts(modelXbrl: arelle.ModelXbrl.ModelXbrl, conceptKey: typing.Union[arelle.ModelValue.QName, str]) -> list[arelle.ModelInstanceObject.ModelFact] :canonical: arelle.utils.validate.Facts.getNegativeFacts ```{autodoc2-docstring} arelle.utils.validate.Facts.getNegativeFacts ``` ````