------------------------------------------------------------------- Thu May 29 06:01:07 UTC 2025 - Johannes Kastl - update to 0.46.2: * Fix new_window argument typing in Session by @Data5tream in #596 - types: Add StrPath typing, fix new_session by @tony in #597 - types: Add StrPath typing, fix new_session, part 2 by @tony in #598 ------------------------------------------------------------------- Sun Mar 16 17:05:39 UTC 2025 - Johannes Kastl - update to 0.46.1: * Documentation - Fix typo in Pane.send_keys (#593) ------------------------------------------------------------------- Wed Feb 26 05:43:02 UTC 2025 - Johannes Kastl - update to 0.46.0: * Breaking Changes - Test Helper Imports Refactored: Direct imports from libtmux.test are no longer possible. You must now import from specific submodules (#580) # Before: from libtmux.test import namer # After: from libtmux.test.named import namer # Before: from libtmux.test import RETRY_INTERVAL_SECONDS # After: from libtmux.test.constants import RETRY_INTERVAL_SECONDS * Internal Improvements - Enhanced Test Utilities: The EnvironmentVarGuard now handles variable cleanup more reliably - Comprehensive Test Coverage: Added test suites for constants and environment utilities - Code Quality: Added proper coverage markers to exclude type checking blocks from coverage reports - Documentation: Improved docstrings and examples in the random module These changes improve maintainability of test helpers both internally and for downstream packages that depend on libtmux. * What's Changed Coverage: Test helpers by @tony in #580 ------------------------------------------------------------------- Mon Feb 24 06:03:52 UTC 2025 - Johannes Kastl - update to 0.45.0: * Breaking Changes - Test helpers: Refactor by @tony in #578 Test helper functionality has been split into focused modules (#578): libtmux.test module split into: - libtmux.test.constants: Test-related constants (TEST_SESSION_PREFIX, etc.) - libtmux.test.environment: Environment variable mocking - libtmux.test.random: Random string generation utilities - libtmux.test.temporary: Temporary session/window management - Breaking: Import paths have changed. Update imports: # Old (0.44.x and earlier) from libtmux.test import ( TEST_SESSION_PREFIX, get_test_session_name, get_test_window_name, namer, temp_session, temp_window, EnvironmentVarGuard, ) # New (0.45.0+) from libtmux.test.constants import TEST_SESSION_PREFIX from libtmux.test.environment import EnvironmentVarGuard from libtmux.test.random import get_test_session_name, get_test_window_name, namer from libtmux.test.temporary import temp_session, temp_window * Misc - Cursor rules: Add Cursor Rules for Development and Git Commit Standards by @tony in #575 * CI - tests(ci) Check runtime deps import correctly by @tony in #574 ------------------------------------------------------------------- Tue Feb 18 06:01:52 UTC 2025 - Johannes Kastl - update to 0.44.2: * Bug fixes - fix(typings) Move typing-extensions into TypeGuard by @tony in #572 * Documentation - Doc / typos fixes by @tony in #569 * Development - Tests: Improved parametrization by @tony in #570 ------------------------------------------------------------------- Mon Feb 17 12:48:34 UTC 2025 - Johannes Kastl -update to 0.44.1: * types: Only use typing-extensions if necessary by @ppentchev in #563 ------------------------------------------------------------------- Mon Feb 17 06:28:03 UTC 2025 - Johannes Kastl - update to 0.44.0: * Support for context managers by @tony in #566. Added context manager support for all main tmux objects: - Server: Automatically kills the server when exiting the context - Session: Automatically kills the session when exiting the context - Window: Automatically kills the window when exiting the context - Pane: Automatically kills the pane when exiting the context This makes it easier to write clean, safe code that properly cleans up tmux resources. ------------------------------------------------------------------- Sun Feb 16 09:41:23 UTC 2025 - Johannes Kastl - update to 0.43.0: * New feature - TestServer: Server, but partial'd to run on a test socket by @tony in #565 * Documentation - Fix "Topics" links in docs - docs(traversal) Add more doctests by @tony in #567 - update to 0.42.1: * Packaging: typing-extensions usage - Move a typing-extensions import into a t.TYPE_CHECKING section by @ppentchev in #562 - py(deps[testing,lint]) Add typing-extensions for older python versions by @tony in #564 ------------------------------------------------------------------- Sat Feb 8 09:21:04 UTC 2025 - Johannes Kastl - update to 0.42.0: * Improvements - tmux_cmd: Modernize to use text=True by @tony in #560 Attempted fix for #558. ------------------------------------------------------------------- Sat Feb 8 08:46:33 UTC 2025 - Johannes Kastl - update to 0.41.0: * Fixes - Fix hardcoded uid in __str__ method of Server class by @lazysegtree in #557 * Development - Use future annotations by @tony in #555 * Documentation - Fix docstring for color parameter by @TravisDart in #544 ------------------------------------------------------------------- Fri Dec 27 12:20:13 UTC 2024 - Johannes Kastl - update to 0.40.1: * Bug fixes - Fix passing both window command and environment by @ppentchev in #553 ------------------------------------------------------------------- Sat Dec 21 14:58:31 UTC 2024 - Johannes Kastl - update to 0.40.0: * Python 3.9 Modernization by @tony in #550 * test(legacy[session]) Stabilize assertion by @tony in #552 ------------------------------------------------------------------- Wed Nov 27 11:31:36 UTC 2024 - Johannes Kastl - update to 0.39.0: * Drop Python 3.8 by @tony in #548 Python 3.8 reached end-of-life on October 7th, 2024 (see devguide.python.org, Status of Python Versions, Unsupported versions See also: https://devguide.python.org/versions/#unsupported-versions ------------------------------------------------------------------- Wed Nov 27 11:22:20 UTC 2024 - Johannes Kastl - update to 0.38.1: * Minimum Python back to 3.8 for now. ------------------------------------------------------------------- Wed Nov 27 11:11:58 UTC 2024 - Johannes Kastl - update to 0.38.0: * Development - Project and package management: poetry to uv (#547) uv is the new package and project manager for the project, replacing Poetry. - Code quality: Use f-strings in more places (#540) via ruff 0.4.2. * Documentation - [docs] Sphinx v8 compatibility: configure a non-empty inventory name for Python Intersphinx mapping. by @jayaddison in #542 - Fix docstrings in query_list for MultipleObjectsReturned and ObjectDoesNotExist. * Other - Bump dev dependencies, including ruff 0.4.2, f-string tweaks by @tony in #540 ------------------------------------------------------------------- Tue Apr 23 08:02:41 UTC 2024 - Johannes Kastl - update to 0.37.0: Tests * pytest-xdist support in #522 * test stability improvements in #522 - retry_until() tests: Relax clock in assert. - tests/test_pane.py::test_capture_pane_start: Use retry_until() to poll, improve correctness of test. ------------------------------------------------------------------- Sun Mar 24 18:12:11 UTC 2024 - Johannes Kastl - update to 0.36.0: * Linting: Aggressive ruff pass (ruff v0.3.4) by @tony in #539 ------------------------------------------------------------------- Sun Mar 24 10:22:08 UTC 2024 - Johannes Kastl - update to 0.35.1: * fix: server.attached_sessions by @patrislav1 in #537 * chore(Server.attached_sessions): Use .filter() by @tony in #538 ------------------------------------------------------------------- Tue Mar 19 06:49:58 UTC 2024 - Johannes Kastl - update to 0.35.0: Breaking changes * refactor: Eliminate redundant targets / window_index's across codebase by @tony in #536 ------------------------------------------------------------------- Sun Mar 17 19:34:56 UTC 2024 - Johannes Kastl - update to 0.34.0: Breaking changes! * Command target change (#535)# Commands: All cmd() methods using custom or overridden targets must use the keyword argument target. This avoids entanglement with inner shell values that include -t for other purposes. These methods include: - Server.cmd() - Session.cmd() - Window.cmd() - Pane.cmd() ------------------------------------------------------------------- Sun Mar 17 19:26:06 UTC 2024 - Johannes Kastl - update to 0.33.0: Breaking changes! * Improved new sessions (#532) - Session.new_window(): - Learned direction, via WindowDirection). - PEP 3102 keyword-only arguments after window name (#534). - Added {meth}Window.new_window() shorthand to create window based on that window's position. * Improved window splitting (#532) - Window.split_window() to Window.split() - Deprecate Window.split_window() - Pane.split_window() to Pane.split() - Deprecate Pane.split_window() - Learned direction, via PaneDirection). - Deprecate vertical and horizontal in favor of direction. - Learned zoom * Tweak: Pane position (#532) It's now possible to retrieve the position of a pane in a window via a bool helper:: - Pane.at_left - Pane.at_right - Pane.at_bottom - Pane.at_right ------------------------------------------------------------------- Sat Mar 16 19:07:17 UTC 2024 - Johannes Kastl - update to 0.32.0: * Fix docstring ordering in pane.split_window by @Ngalstyan4 in #528 * Add implicit exports into init.py by @ssbarnea in #531 ------------------------------------------------------------------- Sun Feb 18 17:38:34 UTC 2024 - Johannes Kastl - update to 0.31.0: * Cleanups (#527) - Streamline {Server,Session,Window,Pane}.cmd(), across all usages to: - Use cmd: str as first positional - Removed unused keyword arguments **kwargs * Renamings (#527) - Session.attached_window renamed to Session.active_window() - Session.attached_window deprecated - Session.attached_pane renamed to Session.active_pane() - Session.attached_pane deprecated - Window.attached_pane renamed to Window.active_pane() - Window.attached_pane deprecated * Improvements (#527) - Server.attached_windows now users QueryList’s .filter() ------------------------------------------------------------------- Sun Feb 18 17:37:15 UTC 2024 - Johannes Kastl - update to 0.30.2: * Bump `TMUX_MAX_VERSION` 3.3 -> 3.4 ------------------------------------------------------------------- Sun Feb 18 17:35:47 UTC 2024 - Johannes Kastl - update to 0.30.1: * pytest plugin, test module: Update to renamed methods introduced in v0.30.0 ------------------------------------------------------------------- Sun Feb 18 17:32:57 UTC 2024 - Johannes Kastl - update to 0.30.0: * New commands - Pane.kill() * Renamed commands - Window.select_window() renamed to Window.select() - Deprecated Window.select_window() - Pane.select_pane() renamed to Pane.select() - Deprecated Pane.pane_select() - Session.attach_session() renamed to Session.attach() - Deprecated Session.attach_session() - Server.kill_server() renamed to Server.kill() - Deprecated Server.kill_server() - Session.kill_session() renamed to Session.kill() - Deprecated Session.kill_session() - Window.kill_window() renamed to Window.kill() Deprecated Window.kill_window() * Improved commands - Server.new_session(): Support environment variables - Window.split_window(): Support size via -l - Supports columns/rows (size=10) and percentage (size='10%') ------------------------------------------------------------------- Sun Feb 18 17:31:02 UTC 2024 - Johannes Kastl - update to 0.29.0: * fix(warnings): Use |DeprecationWarning| for APIs being deprecated * pytest: Ignore |DeprecationWarning| in tests ------------------------------------------------------------------- Sun Feb 18 17:29:48 UTC 2024 - Johannes Kastl - update to 0.28.1: Maintenance only, no bug fixes or new features ------------------------------------------------------------------- Thu Feb 15 06:23:16 UTC 2024 - Johannes Kastl - update to 0.28.0: * Breaking changes - Session.new_window() + Window.split_window(): No longer attaches by default - 0.28 +: Now defaults to attach=False. - 0.27.1 and before: defaults to attach=True. Pass attach=True for the old behavior. - Pane.resize_pane() renamed to Pane.resize(): (#523) This convention will be more consistent with Window.resize(). - Pane.resize_pane(): Params changed (#523) No longer accepts -U, -D, -L, -R directly, instead accepts ResizeAdjustmentDirection. * New features - Pane.resize(): Improved param coverage (#523) Learned to accept adjustments via adjustment_direction w/ ResizeAdjustmentDirection + adjustment. Learned to accept manual height and / or width (columns/rows or percentage) Zoom (and unzoom) - Window.resize_window(): New Method (#523) If Pane.resize_pane() (now Pane.resize()) didn't work before, try resizing the window. * Bug fixes - Window.refresh() and Pane.refresh(): Refresh more underlying state (#523) - Obj._refresh: Allow passing args (#523) e.g. -a (all) to list-panes and list-windows - Server.panes: Fix listing of panes (#523) Would list only panes in attached session, rather than all in a server. * Improvements - Pane, Window: Improve parsing of option values that return numbers (#520) - Obj._refresh: Allow passing list_extra_args to ensure list-windows and list-panes can return more than the target (#523) ------------------------------------------------------------------- Fri Feb 9 19:26:01 UTC 2024 - Johannes Kastl - ignore some checks again, that seemed fine but are now again failing intermittently ------------------------------------------------------------------- Thu Feb 8 19:58:58 UTC 2024 - Johannes Kastl - update to 0.27.1: * pyproject: Include MIGRATION in sdist by @tony in #517, for #508 ------------------------------------------------------------------- Thu Feb 8 19:57:35 UTC 2024 - Johannes Kastl - update to 0.27.0: * Improvements - QueryList: Generic fixes by @tony in #515 - This improves the annotations in descendant objects such as: - Server.sessions - Session.windows - Window.panes - Bolster tests (ported from libvcs): doctests and pytests ------------------------------------------------------------------- Thu Feb 8 19:48:46 UTC 2024 - Johannes Kastl - update to 0.26.0: * Breaking change - get_by_id() (already deprecated) keyword argument renamed from id to - Server.get_by_id(session_id), Session.get_by_id(window_id), and Window.get_by_id(pane_id) (#514) * Documentation - Various docstring fixes and tweaks (#514) * Development - Strengthen linting (#514) - Add flake8-commas (COM) - Add flake8-builtins (A) - Add flake8-errmsg (EM) * CI - Move CodeQL from advanced configuration file to GitHub's default ------------------------------------------------------------------- Mon Nov 27 05:28:27 UTC 2023 - Johannes Kastl - update to 0.25.0: * Comparator fixes - Fixed __eq__ for windows. by @m1guelperez in #505 - fix(pane,session,server): Return False if type mismatched by @tony in #510 * Documentation - ruff: Enable pydocstyle w/ numpy convention by @tony in #509 ------------------------------------------------------------------- Fri Nov 24 05:47:57 UTC 2023 - Johannes Kastl - update to 0.24.1: * packaging: Remove requirements/ folder. Unused. by @tony in #507 * pyproject: Add gp-libs to test dependency group ------------------------------------------------------------------- Mon Nov 20 05:42:36 UTC 2023 - Johannes Kastl - update to 0.24.0: * Breaking changes - Drop Python 3.7 by @tony in #497 * Packaging - packaging(pytest): Move configuration to pyproject.toml by @tony in #499 - Poetry: 1.5.1 -> 1.6.1 (#497), 1.6.1 -> 1.7.0 (direct to trunk) See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md - Packaging (poetry): Fix development dependencies Per Poetry's docs on managing dependencies and poetry check, we had it wrong: Instead of using extras, we should create these: [tool.poetry.group.group-name.dependencies] dev-dependency = "1.0.0" Which we now do. * Development - Formatting: black -> ruff format by @tony in #506 - CI: Update action packages to fix warnings - dorny/paths-filter: 2.7.0 -> 2.11.1 - codecov/codecov-action: 2 -> 3 * Full Changelog: v0.23.2...v0.24.0 ------------------------------------------------------------------- Mon Sep 11 04:53:57 UTC 2023 - Johannes Kastl - update to 0.23.2: _Maintenance only, no bug fixes or new features_ Final Python 3.7 Release (End of life was June 27th, 2023) ------------------------------------------------------------------- Wed Sep 6 07:13:49 UTC 2023 - Johannes Kastl - update to 0.23.1: _Maintenance only, no bug fixes, or new features_ * Development - Automated typo fixes from [typos-cli]: ```console typos --format brief --write-changes ``` [typos-cli]: https://github.com/crate-ci/typos - ruff's linter for code comments, `ERA` (eradicate), has been removed ------------------------------------------------------------------- Wed Sep 6 07:12:15 UTC 2023 - Johannes Kastl - update to 0.23.0: _This maintenance release covers only developer quality of life improvements, no bug fixes or new features_ * Maintenance - Stricter code quality rules (via ruff) by @tony in https://github.com/tmux-python/libtmux/pull/488 ------------------------------------------------------------------- Wed Sep 6 07:10:33 UTC 2023 - Johannes Kastl - update to 0.22.2: _Maintenance only, no bug fixes or features for this release_ * Build system - ci: Remove setuptools requirement for build-system in https://github.com/tmux-python/libtmux/pull/495 ------------------------------------------------------------------- Mon May 29 17:53:51 UTC 2023 - Johannes Kastl - update to 0.22.1: * Add back black dev dependency until `ruff` replaces black's formatting ------------------------------------------------------------------- Sat May 27 19:34:56 UTC 2023 - Johannes Kastl - update to 0.22.0: * Move formatting, import sorting, and linting to ruff. * This rust-based checker has dramatically improved performance. Linting and formatting can be done almost instantly. * This change replaces black, isort, flake8 and flake8 plugins. ------------------------------------------------------------------- Tue May 16 10:52:55 UTC 2023 - Johannes Kastl - ignore flaky test test_capture_pane (see https://github.com/tmux-python/libtmux/issues/484) - ignore flaky test test_new_window_with_environment[environment0] (see https://github.com/tmux-python/libtmux/ issues/480#issuecomment-1551533987) ------------------------------------------------------------------- Mon May 8 08:04:10 UTC 2023 - Daniel Garcia - Depends on poetry-core for building, we don't need the full poetry module in this case. ------------------------------------------------------------------- Fri May 5 07:20:24 UTC 2023 - Johannes Kastl - add sle15_python_module_pythons ------------------------------------------------------------------- Thu Apr 6 06:22:55 UTC 2023 - Johannes Kastl - ignore yet another test: test_new_window_with_environment[environment1] (reported at https://github.com/tmux-python/libtmux/issues/478) ------------------------------------------------------------------- Thu Mar 9 09:55:19 UTC 2023 - Johannes Kastl - new package python-libtmux: Python API / wrapper for tmux