From ee04ce51021d099adba316b57b6bb925835b4b44 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 11:55:26 -0500 Subject: [PATCH 01/14] poetry add "git+https://github.com/tmux-python/libtmux.git#improved-options" --- poetry.lock | 23 +++++++++++++++-------- pyproject.toml | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 950dd69f63..78c99e0010 100644 --- a/poetry.lock +++ b/poetry.lock @@ -268,8 +268,11 @@ name = "docutils" version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = "*" -files = [] +python-versions = ">=3.7" +files = [ + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, +] [[package]] name = "exceptiongroup" @@ -391,11 +394,15 @@ name = "libtmux" version = "0.37.0" description = "Typed library that provides an ORM wrapper for tmux, a terminal multiplexer." optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "libtmux-0.37.0-py3-none-any.whl", hash = "sha256:7e8cbab30b033d132b6fca5dddb575bb7f6a1fd802328e7174f9b49023556376"}, - {file = "libtmux-0.37.0.tar.gz", hash = "sha256:21955c5dce6332db41abad5e26ae8c4062ef2b9a89099bd57a36f52be1d5270f"}, -] +python-versions = "^3.8" +files = [] +develop = false + +[package.source] +type = "git" +url = "https://github.com/tmux-python/libtmux.git" +reference = "improved-options" +resolved_reference = "5505d8264c55bc50c102eb3d5db5adc371f7f1ec" [[package]] name = "linkify-it-py" @@ -1428,4 +1435,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "33fa6932973c2bfce8acdc57fcb1a5f2fef9692925f3b424b9d89bff5aacd57b" +content-hash = "e38e7f4736a315c47fc72a1c5bd5e4021a4ccadffb6516d4d641896bc38bd801" diff --git a/pyproject.toml b/pyproject.toml index c7532798af..5d3b513c35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ tmuxp = 'tmuxp:cli.cli' [tool.poetry.dependencies] python = "^3.8" -libtmux = "~0.37.0" +libtmux = {git = "https://github.com/tmux-python/libtmux.git", rev = "improved-options"} colorama = ">=0.3.9" PyYAML = "^6.0" From 111619cc2629c622234cc725f55a9545bc955075 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 11:58:06 -0500 Subject: [PATCH 02/14] test(builder): Fixes for libtmux `.show_options` tests/workspace/test_builder.py:233: error: "Session" has no attribute "show_option" [attr-defined] tests/workspace/test_builder.py:237: error: "Session" has no attribute "show_option" [attr-defined] tests/workspace/test_builder.py:252: error: "Session" has no attribute "show_option" [attr-defined] tests/workspace/test_builder.py:255: error: "Session" has no attribute "show_option" [attr-defined] tests/workspace/test_builder.py:278: error: "Session" has no attribute "show_option" [attr-defined] tests/workspace/test_builder.py:281: error: "Session" has no attribute "show_option" [attr-defined] --- tests/workspace/test_builder.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/workspace/test_builder.py b/tests/workspace/test_builder.py index 801b462d5a..17f891fc3e 100644 --- a/tests/workspace/test_builder.py +++ b/tests/workspace/test_builder.py @@ -230,11 +230,11 @@ def test_session_options(session: Session) -> None: builder = WorkspaceBuilder(session_config=workspace, server=session.server) builder.build(session=session) - _default_shell = session.show_option("default-shell") + _default_shell = session._show_option("default-shell") assert isinstance(_default_shell, str) assert "/bin/sh" in _default_shell - _default_command = session.show_option("default-command") + _default_command = session._show_option("default-command") assert isinstance(_default_command, str) assert "/bin/sh" in _default_command @@ -249,10 +249,10 @@ def test_global_options(session: Session) -> None: builder = WorkspaceBuilder(session_config=workspace, server=session.server) builder.build(session=session) - _status_position = session.show_option("status-position", _global=True) + _status_position = session._show_option("status-position", _global=True) assert isinstance(_status_position, str) assert "top" in _status_position - assert session.show_option("repeat-time", _global=True) == 493 + assert session._show_option("repeat-time", _global=True) == 493 def test_global_session_env_options( @@ -275,10 +275,10 @@ def test_global_session_env_options( builder = WorkspaceBuilder(session_config=workspace, server=session.server) builder.build(session=session) - _visual_silence = session.show_option("visual-silence", _global=True) + _visual_silence = session._show_option("visual-silence", _global=True) assert isinstance(_visual_silence, str) assert visual_silence in _visual_silence - assert repeat_time == session.show_option("repeat-time") + assert repeat_time == session._show_option("repeat-time") assert main_pane_height == session.active_window.show_window_option( "main-pane-height", ) From a24224abf2577fdafbd356d94929353a926a7890 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 11:59:41 -0500 Subject: [PATCH 03/14] test(builder): Update for `_show_options` conversions --- tests/workspace/test_builder.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/workspace/test_builder.py b/tests/workspace/test_builder.py index 17f891fc3e..b26fda260d 100644 --- a/tests/workspace/test_builder.py +++ b/tests/workspace/test_builder.py @@ -276,8 +276,8 @@ def test_global_session_env_options( builder.build(session=session) _visual_silence = session._show_option("visual-silence", _global=True) - assert isinstance(_visual_silence, str) - assert visual_silence in _visual_silence + assert isinstance(_visual_silence, bool) + assert _visual_silence is True assert repeat_time == session._show_option("repeat-time") assert main_pane_height == session.active_window.show_window_option( "main-pane-height", @@ -513,7 +513,7 @@ def check_window_name_mismatch() -> bool: assert retry_until(check_window_name_mismatch, 5, interval=0.25) def check_window_name_match() -> bool: - assert w.show_window_option("automatic-rename") == "on" + assert w.show_window_option("automatic-rename") return w.name in { pathlib.Path(os.getenv("SHELL", "bash")).name, portable_command, From 4bb33ec6da354991aba0a22cc9291f2d723c25ff Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:03:05 -0500 Subject: [PATCH 04/14] test(builder): `show_window_option` -> `_show_option` --- tests/workspace/test_builder.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/workspace/test_builder.py b/tests/workspace/test_builder.py index b26fda260d..b798bd8357 100644 --- a/tests/workspace/test_builder.py +++ b/tests/workspace/test_builder.py @@ -94,9 +94,9 @@ def test_focus_pane_index(session: Session) -> None: assert session.active_window.name == "focused window" - _pane_base_index = session.active_window.show_window_option( + _pane_base_index = session.active_window._show_option( "pane-base-index", - g=True, + _global=True, ) assert isinstance(_pane_base_index, int) pane_base_index = int(_pane_base_index) @@ -279,7 +279,7 @@ def test_global_session_env_options( assert isinstance(_visual_silence, bool) assert _visual_silence is True assert repeat_time == session._show_option("repeat-time") - assert main_pane_height == session.active_window.show_window_option( + assert main_pane_height == session.active_window._show_option( "main-pane-height", ) @@ -306,9 +306,9 @@ def test_window_options( p = p assert len(session.windows) == window_count assert isinstance(w, Window) - assert w.show_window_option("main-pane-height") == 5 + assert w._show_option("main-pane-height") == 5 if has_gte_version("2.3"): - assert w.show_window_option("pane-border-format") == " #P " + assert w._show_option("pane-border-format") == " #P " assert len(session.windows) == window_count window_count += 1 @@ -513,7 +513,7 @@ def check_window_name_mismatch() -> bool: assert retry_until(check_window_name_mismatch, 5, interval=0.25) def check_window_name_match() -> bool: - assert w.show_window_option("automatic-rename") + assert w._show_option("automatic-rename") return w.name in { pathlib.Path(os.getenv("SHELL", "bash")).name, portable_command, @@ -714,8 +714,10 @@ def test_pane_order(session: Session) -> None: window_count += 1 for w in session.windows: - pane_base_index = w.show_window_option("pane-base-index", g=True) + pane_base_index = w._show_option("pane-base-index", _global=True) + assert isinstance(pane_base_index, int) for p_index, p in enumerate(w.panes, start=pane_base_index): + assert p.index is not None assert int(p_index) == int(p.index) # pane-base-index start at base-index, pane_paths always start From db60c462713ada751d2f974d274653fb5d47f255 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:03:55 -0500 Subject: [PATCH 05/14] test(builder): `set_window_option` -> `set_option` --- tests/workspace/test_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/workspace/test_builder.py b/tests/workspace/test_builder.py index b798bd8357..bca7c6046e 100644 --- a/tests/workspace/test_builder.py +++ b/tests/workspace/test_builder.py @@ -76,7 +76,7 @@ def test_split_windows_three_pane(session: Session) -> None: assert len(session.windows) == window_count window_count += 1 - w.set_window_option("main-pane-height", 50) + w.set_option("main-pane-height", 50) w.select_layout(wconf["layout"]) From 6d90450367c2e65b61670aa3b347395209cc435b Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:05:00 -0500 Subject: [PATCH 06/14] builder: `show_window_option` -> `_show_option` --- src/tmuxp/workspace/builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tmuxp/workspace/builder.py b/src/tmuxp/workspace/builder.py index 0b341dd58c..99c01fda75 100644 --- a/src/tmuxp/workspace/builder.py +++ b/src/tmuxp/workspace/builder.py @@ -464,7 +464,7 @@ def iter_create_panes( """ assert isinstance(window, Window) - pane_base_index_str = window.show_window_option("pane-base-index", g=True) + pane_base_index_str = window._show_option("pane-base-index", _global=True) assert pane_base_index_str is not None pane_base_index = int(pane_base_index_str) From e57855ac5d6c0e8e9593676af21c39b40bc7d5fc Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:05:12 -0500 Subject: [PATCH 07/14] builder: `set_window_option` -> `set_option` --- src/tmuxp/workspace/builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tmuxp/workspace/builder.py b/src/tmuxp/workspace/builder.py index 99c01fda75..9bbbe6124c 100644 --- a/src/tmuxp/workspace/builder.py +++ b/src/tmuxp/workspace/builder.py @@ -433,7 +433,7 @@ def iter_create_windows( dict, ): for key, val in window_config["options"].items(): - window.set_window_option(key, val) + window.set_option(key, val) if window_config.get("focus"): window.select() @@ -585,7 +585,7 @@ def config_after_window( dict, ): for key, val in window_config["options_after"].items(): - window.set_window_option(key, val) + window.set_option(key, val) def find_current_attached_session(self) -> Session: """Return current attached session.""" From 0656ff9c14ab05762343d26c19885afd8f2cf2f0 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:05:38 -0500 Subject: [PATCH 08/14] docs(builder): Update docstring for `window_options` -> `window.options` --- src/tmuxp/workspace/builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tmuxp/workspace/builder.py b/src/tmuxp/workspace/builder.py index 9bbbe6124c..e9c35c5089 100644 --- a/src/tmuxp/workspace/builder.py +++ b/src/tmuxp/workspace/builder.py @@ -349,7 +349,7 @@ def iter_create_windows( Generator yielding :class:`libtmux.Window` by iterating through ``session_config['windows']``. - Applies ``window_options`` to window. + Applies ``options`` to window. Parameters ---------- From 8a8aa6a2ca02c039f9f82b69f55cd6818308b46c Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:05:59 -0500 Subject: [PATCH 09/14] freezer: `show_window_option` -> `_show_option` --- src/tmuxp/workspace/freezer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tmuxp/workspace/freezer.py b/src/tmuxp/workspace/freezer.py index e782ccec2c..5923fc9395 100644 --- a/src/tmuxp/workspace/freezer.py +++ b/src/tmuxp/workspace/freezer.py @@ -70,7 +70,7 @@ def freeze(session: Session) -> t.Dict[str, t.Any]: for window in session.windows: window_config: t.Dict[str, t.Any] = { - "options": window.show_window_options(), + "options": window._show_options(), "window_name": window.name, "layout": window.window_layout, "panes": [], From 6c8b7af47e04e63f421a7d411837214403c4de4d Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 6 Apr 2024 12:07:37 -0500 Subject: [PATCH 10/14] test(builder): Remove unused loop variables --- tests/workspace/test_builder.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/workspace/test_builder.py b/tests/workspace/test_builder.py index bca7c6046e..0942ebcabe 100644 --- a/tests/workspace/test_builder.py +++ b/tests/workspace/test_builder.py @@ -47,9 +47,8 @@ def test_split_windows(session: Session) -> None: window_count = len(session.windows) # current window count assert len(session.windows) == window_count for w, wconf in builder.iter_create_windows(session): - for p in builder.iter_create_panes(w, wconf): + for _ in builder.iter_create_panes(w, wconf): w.select_layout("tiled") # fix glitch with pane size - p = p assert len(session.windows) == window_count assert isinstance(w, Window) @@ -68,9 +67,8 @@ def test_split_windows_three_pane(session: Session) -> None: window_count = len(session.windows) # current window count assert len(session.windows) == window_count for w, wconf in builder.iter_create_windows(session): - for p in builder.iter_create_panes(w, wconf): + for _ in builder.iter_create_panes(w, wconf): w.select_layout("tiled") # fix glitch with pane size - p = p assert len(session.windows) == window_count assert isinstance(w, Window) @@ -301,9 +299,8 @@ def test_window_options( window_count = len(session.windows) # current window count assert len(session.windows) == window_count for w, wconf in builder.iter_create_windows(session): - for p in builder.iter_create_panes(w, wconf): + for _ in builder.iter_create_panes(w, wconf): w.select_layout("tiled") # fix glitch with pane size - p = p assert len(session.windows) == window_count assert isinstance(w, Window) assert w._show_option("main-pane-height") == 5 From 82394cc86bda4a575359196c4359143bdbf6144f Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 27 Apr 2024 08:04:31 -0500 Subject: [PATCH 11/14] Bump libtmux ref on improved-options branch --- poetry.lock | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 78c99e0010..05da860712 100644 --- a/poetry.lock +++ b/poetry.lock @@ -268,11 +268,8 @@ name = "docutils" version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=3.7" -files = [ - {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, - {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, -] +python-versions = "*" +files = [] [[package]] name = "exceptiongroup" @@ -402,7 +399,7 @@ develop = false type = "git" url = "https://github.com/tmux-python/libtmux.git" reference = "improved-options" -resolved_reference = "5505d8264c55bc50c102eb3d5db5adc371f7f1ec" +resolved_reference = "74f36b7ea01960f3dc4be2c2935ffa631ba31c09" [[package]] name = "linkify-it-py" From bab32d174a2809e634a9bd8165a3cf28b984a7b3 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 5 May 2024 11:06:18 -0500 Subject: [PATCH 12/14] !squash update lockfile --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 05da860712..ad8d8f8138 100644 --- a/poetry.lock +++ b/poetry.lock @@ -399,7 +399,7 @@ develop = false type = "git" url = "https://github.com/tmux-python/libtmux.git" reference = "improved-options" -resolved_reference = "74f36b7ea01960f3dc4be2c2935ffa631ba31c09" +resolved_reference = "7f907374282fe97c9e7b5534df268eaf3e059086" [[package]] name = "linkify-it-py" From be123d3d527b6024e4cb91da04e4067d6bf03cad Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sat, 11 May 2024 06:17:17 -0500 Subject: [PATCH 13/14] !squash deps libtmux bump --- poetry.lock | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index ad8d8f8138..c1cb435f68 100644 --- a/poetry.lock +++ b/poetry.lock @@ -268,8 +268,11 @@ name = "docutils" version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = "*" -files = [] +python-versions = ">=3.7" +files = [ + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, +] [[package]] name = "exceptiongroup" @@ -399,7 +402,7 @@ develop = false type = "git" url = "https://github.com/tmux-python/libtmux.git" reference = "improved-options" -resolved_reference = "7f907374282fe97c9e7b5534df268eaf3e059086" +resolved_reference = "d67070df29bb5a03e2bbf86b38b5937b47268288" [[package]] name = "linkify-it-py" From 6b3030002b59a580f28c9ccd7648e54e4700f978 Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 12 May 2024 11:58:54 -0500 Subject: [PATCH 14/14] build(deps): Bump packages --- poetry.lock | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index c1cb435f68..42f1921ebd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -268,11 +268,8 @@ name = "docutils" version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=3.7" -files = [ - {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, - {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, -] +python-versions = "*" +files = [] [[package]] name = "exceptiongroup"