# {py:mod}`arelle.PythonUtil` ```{py:module} arelle.PythonUtil ``` ```{autodoc2-docstring} arelle.PythonUtil :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`attrdict ` - ```{autodoc2-docstring} arelle.PythonUtil.attrdict :summary: ``` * - {py:obj}`OrderedDefaultDict ` - ```{autodoc2-docstring} arelle.PythonUtil.OrderedDefaultDict :summary: ``` * - {py:obj}`OrderedSet ` - ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet :summary: ``` * - {py:obj}`FrozenOrderedSet ` - ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet :summary: ``` * - {py:obj}`FrozenDict ` - ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`pyTypeName ` - ```{autodoc2-docstring} arelle.PythonUtil.pyTypeName :summary: ``` * - {py:obj}`pyNamedObject ` - ```{autodoc2-docstring} arelle.PythonUtil.pyNamedObject :summary: ``` * - {py:obj}`lcStr ` - ```{autodoc2-docstring} arelle.PythonUtil.lcStr :summary: ``` * - {py:obj}`strTruncate ` - ```{autodoc2-docstring} arelle.PythonUtil.strTruncate :summary: ``` * - {py:obj}`normalizeSpace ` - ```{autodoc2-docstring} arelle.PythonUtil.normalizeSpace :summary: ``` * - {py:obj}`flattenSequence ` - ```{autodoc2-docstring} arelle.PythonUtil.flattenSequence :summary: ``` * - {py:obj}`flattenToSet ` - ```{autodoc2-docstring} arelle.PythonUtil.flattenToSet :summary: ``` * - {py:obj}`pyObjectSize ` - ```{autodoc2-docstring} arelle.PythonUtil.pyObjectSize :summary: ``` * - {py:obj}`tryRunCommand ` - ```{autodoc2-docstring} arelle.PythonUtil.tryRunCommand :summary: ``` * - {py:obj}`isLegacyAbs ` - ```{autodoc2-docstring} arelle.PythonUtil.isLegacyAbs :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`STR_NUM_TYPES ` - ```{autodoc2-docstring} arelle.PythonUtil.STR_NUM_TYPES :summary: ``` * - {py:obj}`SEQUENCE_TYPES ` - ```{autodoc2-docstring} arelle.PythonUtil.SEQUENCE_TYPES :summary: ``` * - {py:obj}`T ` - ```{autodoc2-docstring} arelle.PythonUtil.T :summary: ``` * - {py:obj}`KT ` - ```{autodoc2-docstring} arelle.PythonUtil.KT :summary: ``` * - {py:obj}`VT ` - ```{autodoc2-docstring} arelle.PythonUtil.VT :summary: ``` ```` ### API ````{py:data} STR_NUM_TYPES :canonical: arelle.PythonUtil.STR_NUM_TYPES :value: > () ```{autodoc2-docstring} arelle.PythonUtil.STR_NUM_TYPES ``` ```` ````{py:function} pyTypeName(object: typing.Any) -> str :canonical: arelle.PythonUtil.pyTypeName ```{autodoc2-docstring} arelle.PythonUtil.pyTypeName ``` ```` ````{py:function} pyNamedObject(name: str, *args: typing.Any, **kwargs: typing.Any) -> typing.Any :canonical: arelle.PythonUtil.pyNamedObject ```{autodoc2-docstring} arelle.PythonUtil.pyNamedObject ``` ```` ````{py:function} lcStr(value: str) -> str | type[str] :canonical: arelle.PythonUtil.lcStr ```{autodoc2-docstring} arelle.PythonUtil.lcStr ``` ```` ````{py:function} strTruncate(value: str, length: int) -> str :canonical: arelle.PythonUtil.strTruncate ```{autodoc2-docstring} arelle.PythonUtil.strTruncate ``` ```` ````{py:function} normalizeSpace(s: arelle.typing.OptionalString) -> arelle.typing.OptionalString :canonical: arelle.PythonUtil.normalizeSpace ```{autodoc2-docstring} arelle.PythonUtil.normalizeSpace ``` ```` ````{py:data} SEQUENCE_TYPES :canonical: arelle.PythonUtil.SEQUENCE_TYPES :value: > () ```{autodoc2-docstring} arelle.PythonUtil.SEQUENCE_TYPES ``` ```` ````{py:function} flattenSequence(x: typing.Any, sequence: list[typing.Any] | None = None) -> list[typing.Any] :canonical: arelle.PythonUtil.flattenSequence ```{autodoc2-docstring} arelle.PythonUtil.flattenSequence ``` ```` ````{py:function} flattenToSet(x: typing.Any, _set: set[typing.Any] | None = None) -> set[typing.Any] :canonical: arelle.PythonUtil.flattenToSet ```{autodoc2-docstring} arelle.PythonUtil.flattenToSet ``` ```` ````{py:class} attrdict(*args: typing.Any, **kwargs: typing.Any) :canonical: arelle.PythonUtil.attrdict Bases: {py:obj}`dict` ```{autodoc2-docstring} arelle.PythonUtil.attrdict ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.PythonUtil.attrdict.__init__ ``` ```` `````{py:class} OrderedDefaultDict(*args: typing.Any) :canonical: arelle.PythonUtil.OrderedDefaultDict Bases: {py:obj}`collections.OrderedDict` ```{autodoc2-docstring} arelle.PythonUtil.OrderedDefaultDict ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.PythonUtil.OrderedDefaultDict.__init__ ``` ````{py:method} __missing__(key: typing.Any) -> typing.Any :canonical: arelle.PythonUtil.OrderedDefaultDict.__missing__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedDefaultDict.__missing__ ``` ```` ````` ````{py:data} T :canonical: arelle.PythonUtil.T :value: > 'TypeVar(...)' ```{autodoc2-docstring} arelle.PythonUtil.T ``` ```` `````{py:class} OrderedSet(iterable: collections.abc.Iterable[arelle.PythonUtil.T] | None = None) :canonical: arelle.PythonUtil.OrderedSet Bases: {py:obj}`collections.abc.MutableSet`\[{py:obj}`arelle.PythonUtil.T`\] ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__init__ ``` ````{py:method} __getitem__(index: int) -> arelle.PythonUtil.T :canonical: arelle.PythonUtil.OrderedSet.__getitem__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__getitem__ ``` ```` ````{py:method} __len__() -> int :canonical: arelle.PythonUtil.OrderedSet.__len__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__len__ ``` ```` ````{py:method} __contains__(key: object) -> bool :canonical: arelle.PythonUtil.OrderedSet.__contains__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__contains__ ``` ```` ````{py:method} add(key: arelle.PythonUtil.T) -> None :canonical: arelle.PythonUtil.OrderedSet.add ```` ````{py:method} update(other: collections.abc.Iterable[arelle.PythonUtil.T]) -> None :canonical: arelle.PythonUtil.OrderedSet.update ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.update ``` ```` ````{py:method} discard(key: arelle.PythonUtil.T) -> None :canonical: arelle.PythonUtil.OrderedSet.discard ```` ````{py:method} __iter__() -> collections.abc.Iterator[arelle.PythonUtil.T] :canonical: arelle.PythonUtil.OrderedSet.__iter__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__iter__ ``` ```` ````{py:method} __reversed__() -> collections.abc.Iterator[arelle.PythonUtil.T] :canonical: arelle.PythonUtil.OrderedSet.__reversed__ ```{autodoc2-docstring} arelle.PythonUtil.OrderedSet.__reversed__ ``` ```` ````{py:method} pop(last: bool = True) -> arelle.PythonUtil.T :canonical: arelle.PythonUtil.OrderedSet.pop ```` ````{py:method} __repr__() -> str :canonical: arelle.PythonUtil.OrderedSet.__repr__ ```` ````{py:method} __eq__(other: object) -> bool :canonical: arelle.PythonUtil.OrderedSet.__eq__ ```` ````` `````{py:class} FrozenOrderedSet(iterable: collections.abc.Iterable[arelle.PythonUtil.T] | None = None) :canonical: arelle.PythonUtil.FrozenOrderedSet Bases: {py:obj}`collections.abc.Set`\[{py:obj}`arelle.PythonUtil.T`\] ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__init__ ``` ````{py:method} __getitem__(index: int) -> arelle.PythonUtil.T :canonical: arelle.PythonUtil.FrozenOrderedSet.__getitem__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__getitem__ ``` ```` ````{py:method} __len__() -> int :canonical: arelle.PythonUtil.FrozenOrderedSet.__len__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__len__ ``` ```` ````{py:method} __contains__(key: object) -> bool :canonical: arelle.PythonUtil.FrozenOrderedSet.__contains__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__contains__ ``` ```` ````{py:method} __iter__() -> collections.abc.Iterator[arelle.PythonUtil.T] :canonical: arelle.PythonUtil.FrozenOrderedSet.__iter__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__iter__ ``` ```` ````{py:method} __reversed__() -> collections.abc.Iterator[arelle.PythonUtil.T] :canonical: arelle.PythonUtil.FrozenOrderedSet.__reversed__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenOrderedSet.__reversed__ ``` ```` ````{py:method} __repr__() -> str :canonical: arelle.PythonUtil.FrozenOrderedSet.__repr__ ```` ````{py:method} __eq__(other: object) -> bool :canonical: arelle.PythonUtil.FrozenOrderedSet.__eq__ ```` ````{py:method} __hash__() -> int :canonical: arelle.PythonUtil.FrozenOrderedSet.__hash__ ```` ````` ````{py:data} KT :canonical: arelle.PythonUtil.KT :value: > 'TypeVar(...)' ```{autodoc2-docstring} arelle.PythonUtil.KT ``` ```` ````{py:data} VT :canonical: arelle.PythonUtil.VT :value: > 'TypeVar(...)' ```{autodoc2-docstring} arelle.PythonUtil.VT ``` ```` `````{py:class} FrozenDict(data: collections.abc.Mapping[arelle.PythonUtil.KT, arelle.PythonUtil.VT] | None = None) :canonical: arelle.PythonUtil.FrozenDict Bases: {py:obj}`typing.Generic`\[{py:obj}`arelle.PythonUtil.KT`\, {py:obj}`arelle.PythonUtil.VT`\], {py:obj}`collections.abc.Mapping`\[{py:obj}`arelle.PythonUtil.KT`\, {py:obj}`arelle.PythonUtil.VT`\] ````{py:method} __getitem__(key: arelle.PythonUtil.KT) -> arelle.PythonUtil.VT :canonical: arelle.PythonUtil.FrozenDict.__getitem__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenDict.__getitem__ ``` ```` ````{py:method} __iter__() -> collections.abc.Iterator[arelle.PythonUtil.KT] :canonical: arelle.PythonUtil.FrozenDict.__iter__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenDict.__iter__ ``` ```` ````{py:method} __len__() -> int :canonical: arelle.PythonUtil.FrozenDict.__len__ ```{autodoc2-docstring} arelle.PythonUtil.FrozenDict.__len__ ``` ```` ````{py:method} __repr__() -> str :canonical: arelle.PythonUtil.FrozenDict.__repr__ ```` ````{py:method} __eq__(other: typing.Any) -> bool :canonical: arelle.PythonUtil.FrozenDict.__eq__ ```` ````{py:method} __hash__() -> int :canonical: arelle.PythonUtil.FrozenDict.__hash__ ```` ````` ````{py:function} pyObjectSize(obj: typing.Any, seen: set[int] | None = None) -> int :canonical: arelle.PythonUtil.pyObjectSize ```{autodoc2-docstring} arelle.PythonUtil.pyObjectSize ``` ```` ````{py:function} tryRunCommand(*args: str) -> str | None :canonical: arelle.PythonUtil.tryRunCommand ```{autodoc2-docstring} arelle.PythonUtil.tryRunCommand ``` ```` ````{py:function} isLegacyAbs(path: str) -> bool :canonical: arelle.PythonUtil.isLegacyAbs ```{autodoc2-docstring} arelle.PythonUtil.isLegacyAbs ``` ````