explode_arrays
Explode flat, naive options dict's option arrays.
Source and package
- Qualified name
-
libtmux.options .explode _arrays - Module
- libtmux.options
- Package
- libtmux
- Source
- src/libtmux/options.py
- explode_arrays ( _dict: Untyped
Options , force_array: bool = False ) ExplodedDict Untyped Options Dict -
Examples#
>>> import io>>> many_more_options = io.StringIO(r'''... terminal-features[0] xterm*:clipboard:ccolour:cstyle:focus... terminal-features[1] screen*:title... ''')>>> many_more_flat_dict = parse_options_to_dict(many_more_options)>>> many_more_flat_dict == {... "terminal-features[0]": "xterm*:clipboard:ccolour:cstyle:focus",... "terminal-features[1]": "screen*:title",}True>>> explode_arrays(many_more_flat_dict) == {... "terminal-features": {0: "xterm*:clipboard:ccolour:cstyle:focus",... 1: "screen*:title"}}Truetmux arrays allow non-sequential indexes, so we need to support that:
>>> explode_arrays(parse_options_to_dict(io.StringIO(r'''... terminal-features[0] xterm*:clipboard:ccolour:cstyle:focus... terminal-features[5] screen*:title... '''))) == {... "terminal-features": {0: "xterm*:clipboard:ccolour:cstyle:focus",... 5: "screen*:title"}}TrueUse
force_array=Truefor hooks, which always use array format:>>> from libtmux._internal.sparse_array import SparseArray>>> hooks_output = io.StringIO(r'''... session-renamed[0] display-message 'renamed'... session-renamed[5] refresh-client... pane-focus-in[0] run-shell 'echo focus'... ''')>>> hooks_exploded = explode_arrays(... parse_options_to_dict(hooks_output),... force_array=True,... )Each hook becomes a SparseArray preserving indices:
>>> isinstance(hooks_exploded["session-renamed"], SparseArray)True>>> hooks_exploded["session-renamed"][0]"display-message 'renamed'">>> hooks_exploded["session-renamed"][5]'refresh-client'>>> sorted(hooks_exploded["session-renamed"].keys())[0, 5]- Parameters