freshcrate
Home > Frameworks > libtmux

libtmux

Typed library that provides an ORM wrapper for tmux, a terminal multiplexer.

Description

<div align="center"> <h1>⚙️ libtmux</h1> <p><strong>Drive tmux from Python: typed, object-oriented control over servers, sessions, windows, and panes.</strong></p> <p> <a href="https://libtmux.git-pull.com/"><img src="https://raw.githubusercontent.com/tmux-python/libtmux/master/docs/_static/img/libtmux.svg" alt="libtmux logo" height="120"></a> </p> <p> <a href="https://pypi.org/project/libtmux/"><img src="https://img.shields.io/pypi/v/libtmux.svg" alt="PyPI version"></a> <a href="https://libtmux.git-pull.com/"><img src="https://github.com/tmux-python/libtmux/workflows/docs/badge.svg" alt="Docs status"></a> <a href="https://github.com/tmux-python/libtmux/actions"><img src="https://github.com/tmux-python/libtmux/workflows/tests/badge.svg" alt="Tests status"></a> <a href="https://codecov.io/gh/tmux-python/libtmux"><img src="https://codecov.io/gh/tmux-python/libtmux/branch/master/graph/badge.svg" alt="Coverage"></a> <a href="https://github.com/tmux-python/libtmux/blob/master/LICENSE"><img src="https://img.shields.io/github/license/tmux-python/libtmux.svg" alt="License"></a> </p> </div> ## 🐍 What is libtmux? libtmux is a typed Python API over [tmux], the terminal multiplexer. Stop shelling out and parsing `tmux ls`. Instead, interact with real Python objects: `Server`, `Session`, `Window`, and `Pane`. The same API powers [tmuxp], so it stays battle-tested in real-world workflows. ### ✨ Features - Typed, object-oriented control of tmux state - Query and [traverse](https://libtmux.git-pull.com/topics/traversal/) live sessions, windows, and panes - Raw escape hatch via `.cmd(...)` on any object - Works with multiple tmux sockets and servers - [Context managers](https://libtmux.git-pull.com/topics/context_managers/) for automatic cleanup - [pytest plugin](https://libtmux.git-pull.com/api/pytest-plugin/) for isolated tmux fixtures - Proven in production via tmuxp and other tooling ## Requirements & support - tmux: >= 3.2a - Python: >= 3.10 (CPython and PyPy) Maintenance-only backports (no new fixes): - Python 2.x: [`v0.8.x`](https://github.com/tmux-python/libtmux/tree/v0.8.x) - tmux 1.8-3.1c: [`v0.48.x`](https://github.com/tmux-python/libtmux/tree/v0.48.x) ## 📦 Installation Stable release: ```console $ pip install libtmux ``` With pipx: ```console $ pipx install libtmux ``` With uv / uvx: ```console $ uv add libtmux ``` ```console $ uvx --from "libtmux" python ``` From the main branch (bleeding edge): ```console $ pip install 'git+https://github.com/tmux-python/libtmux.git' ``` Tip: libtmux is pre-1.0. Pin a range in projects to avoid surprises: requirements.txt: ```ini libtmux==0.50.* ``` pyproject.toml: ```toml libtmux = "0.50.*" ``` ## 🚀 Quickstart ### Open a tmux session First, start a tmux session to connect to: ```console $ tmux new-session -s foo -n bar ``` ### Pilot your tmux session via Python Use [ptpython], [ipython], etc. for a nice REPL with autocompletions: ```console $ pip install --user ptpython ``` ```console $ ptpython ``` Connect to a live tmux session: ```python >>> import libtmux >>> svr = libtmux.Server() >>> svr Server(socket_path=/tmp/tmux-.../default) ``` **Tip:** You can also use [tmuxp]'s [`tmuxp shell`] to drop straight into your current tmux server / session / window / pane. [ptpython]: https://github.com/prompt-toolkit/ptpython [ipython]: https://ipython.org/ [`tmuxp shell`]: https://tmuxp.git-pull.com/cli/shell/ ### Run any tmux command Every object has a `.cmd()` escape hatch that honors socket name and path: ```python >>> server = Server(socket_name='libtmux_doctest') >>> server.cmd('display-message', 'hello world') <libtmux...> ``` Create a new session: ```python >>> server.cmd('new-session', '-d', '-P', '-F#{session_id}').stdout[0] '$...' ``` ### List and filter sessions [**Learn more about Filtering**](https://libtmux.git-pull.com/topics/filtering/) ```python >>> server.sessions [Session($... ...), ...] ``` Filter by attribute: ```python >>> server.sessions.filter(history_limit='2000') [Session($... ...), ...] ``` Direct lookup: ```python >>> server.sessions.get(session_id=session.session_id) Session($... ...) ``` ### Control sessions and windows [**Learn more about Workspace Setup**](https://libtmux.git-pull.com/topics/workspace_setup/) ```python >>> session.rename_session('my-session') Session($... my-session) ``` Create new window in the background (don't switch to it): ```python >>> bg_window = session.new_window(attach=False, window_name="bg-work") >>> bg_window Window(@... ...:bg-work, Session($... ...)) >>> session.windows.filter(window_name__startswith="bg") [Window(@... ...:bg-work, Session($... ...))] >>> session.windows.get(window_name__startswith="bg") Window(@... ...:bg-work, Session($... ...)) >>> bg_window.kill() ``` ### Split windows and send keys [**Learn more about Pane Interaction**](https://libtmux.git-pull.com/topics/pane_interaction/) ```python >>> pane = window.sp

Release History

VersionChangesUrgencyDate
0.55.1Imported from PyPI (0.55.1)Low4/21/2026
v0.55.1A point release focused on a pytest-plugin cleanup fix, a new Sphinx extension for documenting pytest fixtures, and a docs-stack migration to [gp-sphinx](https://gp-sphinx.git-pull.com). ## Highlights ### Fix: `pytest_plugin` leaks tmux socket files on teardown (#661, fixes #660) The `server` and `TestServer` fixtures now `unlink(2)` the tmux socket from `/tmp/tmux-<uid>/` during teardown, in addition to calling `server.kill()`. tmux does not reliably remove its own socket on non-gracefHigh4/19/2026
v0.55.0## What's Changed via @tony in https://github.com/tmux-python/libtmux/pull/636 ### Pane.set_title() New `Pane.set_title()` method wraps `select-pane -T` and returns the pane for method chaining. A `Pane.title` property aliases `pane_title` for convenience: ```python pane.set_title("my-worker") pane.pane_title # 'my-worker' pane.title # 'my-worker' ``` The `pane_title` format variable is now included in libtmux's pane format queries (it was previously excluded via an Low3/8/2026
v0.54.0## Highlights - **Structured lifecycle logging** across Server, Session, Window, and Pane with filterable `extra` context - **Bug fixes** for `rename_window()`, `Server.kill()`, `new_session()`, and `kill_window()` error handling --- ## What's new ### Structured lifecycle logging ([#637](https://github.com/tmux-python/libtmux/pull/637)) All lifecycle operations (create, kill, rename, split) now emit INFO-level log records with structured `extra` context. Every log call includes sLow3/7/2026
v0.53.1## What's Changed ### Bug fixes * Fix race condition in new_session() by avoiding list-sessions query by @neubig in https://github.com/tmux-python/libtmux/pull/625 ### Development * build: Migrate from Makefile to justfile by @tony in https://github.com/tmux-python/libtmux/pull/617 ## New Contributors * @neubig made their first contribution in https://github.com/tmux-python/libtmux/pull/625 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.53.0...v0.53.1Low2/19/2026
v0.53.0A focused maintenance release that fixes a critical bug in `Session.attach()` that caused tracebacks when users killed sessions while attached via `tmuxp load`. ## Highlights - **Fixed:** `Session.attach()` no longer raises `TmuxObjectDoesNotExist` when a user kills the session during attachment - **Breaking:** `Session.attach()` no longer calls `refresh()` after returning (semantically incorrect for interactive commands) --- ## Bug Fixes ### Session.attach() no longer fails if sLow12/14/2025
v0.52.1## Development * ci(release): Migrate to PyPI Trusted Publisher by @tony in https://github.com/tmux-python/libtmux/pull/615 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.52.0...v0.52.1Low12/7/2025
v0.52.0# libtmux 0.52.0 ## `capture_pane()` enhancements The `Pane.capture_pane()` method now supports 5 new parameters exposing additional tmux `capture-pane` flags: | Parameter | tmux Flag | Description | |-----------|-----------|-------------| | `escape_sequences` | `-e` | Include ANSI escape sequences (colors, attributes) | | `escape_non_printable` | `-C` | Escape non-printable chars as octal `\xxx` | | `join_wrapped` | `-J` | Join wrapped lines back together | | `preserve_trailing` |Low12/7/2025
v0.51.0## Breaking Changes ### Deprecate legacy APIs Legacy API methods (deprecated in v0.16–v0.33) now raise `DeprecatedError` (hard error) instead of emitting `DeprecationWarning`. See the [migration guide](https://libtmux.git-pull.com/migration.html) for full context and examples. * Deprecate legacy APIs (raise `DeprecatedError`) by @tony in https://github.com/tmux-python/libtmux/pull/611 ### Method Renamings | Deprecated | Replacement | Class | Deprecated Since | |------------|--Low12/6/2025
v0.50.1## Documentation * Doc fixes by @tony in https://github.com/tmux-python/libtmux/pull/612 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.50.0...v0.50.1Low12/6/2025
v0.50.0libtmux 0.50 brings a major enhancement to option and hook management with a unified, typed API for managing tmux options and hooks across all object types. ## Highlights - **Unified Options API**: New `show_option()`, `show_options()`, `set_option()`, and `unset_option()` methods available on Server, Session, Window, and Pane - **Hook Management**: Full programmatic control over tmux hooks with support for indexed hook arrays and bulk operations - **SparseArray**: New internal data struLow11/30/2025
v0.49.0## What's Changed ### Breaking: tmux <3.2 fully dropped * Drop support for tmux versions < 3.2 by @tony in https://github.com/tmux-python/libtmux/pull/608 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.48.0...v0.49.0Low11/29/2025
v0.48.0## What's Changed ### Breaking: tmux <3.2 deprecated Deprecate old tmux versions by @tony in https://github.com/tmux-python/libtmux/pull/606 ### Development tmux: Add tmux 3.6 to testgrid by @tony in https://github.com/tmux-python/libtmux/pull/607 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.47.0...v0.48.0Low11/28/2025
v0.47.0## Breaking changes * Support Python 3.14 by @tony in https://github.com/tmux-python/libtmux/pull/601 * Drop Python 3.9 by @tony in https://github.com/tmux-python/libtmux/pull/602 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.46.2...v0.47.0Low11/1/2025
v0.46.2## What's Changed * Fix `new_window` argument typing in `Session` by @Data5tream in https://github.com/tmux-python/libtmux/pull/596 * types: Add `StrPath` typing, fix `new_session` by @tony in https://github.com/tmux-python/libtmux/pull/597 * types: Add `StrPath` typing, fix `new_session`, part 2 by @tony in https://github.com/tmux-python/libtmux/pull/598 ## New Contributors * @Data5tream made their first contribution in https://github.com/tmux-python/libtmux/pull/596 **Full ChanLow5/26/2025
v0.46.1**Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.46.0...v0.46.1 # Changes ## Feature branch at [v0.46.x](https://github.com/tmux-python/libtmux/tree/v0.46.x) [v0.46.x](https://github.com/tmux-python/libtmux/tree/v0.46.x) will extend the life of v0.46.0 while new features are being developed for watching for changes within libtmux panes, windows, and sessions. See: - https://github.com/tmux-python/libtmux/pull/587 - https://github.com/tmux-python/libtmux/pull/58Low3/16/2025
v0.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) ```python # Before: from libtmux.test import namer # After: from libtmux.test.named import namer ``` ```python # Before: from libtmux.test import RETRY_INTERVAL_SECONDS # After: from libtmux.test.constants import RETRY_INTERVAL_SECONDS ``` ## Internal Improvements - **Enhanced TestLow2/25/2025
v0.45.0## What's Changed ### Breaking Changes #### Test helpers: Refactor by @tony in https://github.com/tmux-python/libtmux/pull/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 sesLow2/23/2025
v0.44.2## What's Changed ### Bug fixes * fix(typings) Move typing-extensions into `TypeGuard` by @tony in https://github.com/tmux-python/libtmux/pull/572 ### Documentation * Doc / typos fixes by @tony in https://github.com/tmux-python/libtmux/pull/569 ### Development * Tests: Improved parametrization by @tony in https://github.com/tmux-python/libtmux/pull/570 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.44.1...v0.44.2Low2/17/2025
v0.44.1## What's Changed ### Packaging * types: Only use typing-extensions if necessary by @ppentchev in https://github.com/tmux-python/libtmux/pull/563 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.44.0...v0.44.1Low2/17/2025
v0.44.0## What's Changed ### Support for context managers _by @tony in https://github.com/tmux-python/libtmux/pull/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 Example usage: ```python with Server()Low2/16/2025
v0.43.0## What's Changed ### New feature * `TestServer`: `Server`, but `partial`'d to run on a test socket by @tony in https://github.com/tmux-python/libtmux/pull/565 ### Documentation * Fix "Topics" links in docs * docs(traversal) Add more doctests by @tony in https://github.com/tmux-python/libtmux/pull/567 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.42.1...v0.43.0Low2/15/2025
v0.42.1## Changes ### Packaging: `typing-extensions` usage * Move a typing-extensions import into a t.TYPE_CHECKING section by @ppentchev in https://github.com/tmux-python/libtmux/pull/562 * py(deps[testing,lint]) Add `typing-extensions` for older python versions by @tony in https://github.com/tmux-python/libtmux/pull/564 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.42.0...v0.42.1Low2/15/2025
v0.42.0## What's Changed ### Improvements * `tmux_cmd`: Modernize to use `text=True` by @tony in https://github.com/tmux-python/libtmux/pull/560 Attempted fix for https://github.com/tmux-python/libtmux/pull/558. **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.41.0...v0.42.0Low2/2/2025
v0.41.0## What's Changed ### Fixes * Fix hardcoded uid in `__str__` method of `Server` class by @lazysegtree in https://github.com/tmux-python/libtmux/pull/557 ### Development * Use future annotations by @tony in https://github.com/tmux-python/libtmux/pull/555 ### Documentation * Fix docstring for color parameter by @TravisDart in https://github.com/tmux-python/libtmux/pull/544 ## New Contributors * @lazysegtree made their first contribution in https://github.com/tmux-python/libtmLow2/2/2025
v0.40.1## Bug fixes * Fix passing both window command and environment by @ppentchev in https://github.com/tmux-python/libtmux/pull/553 ## New Contributors * @ppentchev made their first contribution in https://github.com/tmux-python/libtmux/pull/553 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.40.0...v0.40.1Low12/24/2024
v0.40.0_Maintenance only, no bug fixes or new features_ ## Development * Python 3.9 Modernization by @tony in https://github.com/tmux-python/libtmux/pull/550 * test(legacy[session]) Stabilize assertion by @tony in https://github.com/tmux-python/libtmux/pull/552 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.39.0...v0.40.0Low12/21/2024
v0.39.0## What's Changed ### Breaking changes * Drop Python 3.8 by @tony in https://github.com/tmux-python/libtmux/pull/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 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.38.1...v0.39.0Low11/26/2024
v0.38.1**Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.38.0...v0.38.1 Minimum Python back to 3.8 for now.Low11/26/2024
v0.38.0## What's Changed ### 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](https://github.com/astral-sh/ruff/blob/v0.4.2/CHANGELOG.md). [uv]: https://github.com/astral-sh/uv ### Documentation * [docs] Sphinx v8 compatibility: configure a non-empty inventory name for Python Intersphinx mapping. by @jayaddison iLow11/26/2024
v0.37.0## Tests * pytest-xdist support in https://github.com/tmux-python/libtmux/pull/522 * test stability improvements in https://github.com/tmux-python/libtmux/pull/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. **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.36.0...v0.37.0Low4/21/2024
v0.36.0## What's Changed * Linting: Aggressive `ruff` pass (ruff v0.3.4) by @tony in https://github.com/tmux-python/libtmux/pull/539 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.35.1...v0.36.0Low3/24/2024
v0.35.1## What's Changed * fix: server.attached_sessions by @patrislav1 in https://github.com/tmux-python/libtmux/pull/537 * chore(Server.attached_sessions): Use .filter() by @tony in https://github.com/tmux-python/libtmux/pull/538 ## New Contributors * @patrislav1 made their first contribution in https://github.com/tmux-python/libtmux/pull/537 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.35.0...v0.35.1Low3/23/2024
v0.35.0## Breaking changes * refactor: Eliminate redundant targets / window_index's across codebase by @tony in https://github.com/tmux-python/libtmux/pull/536 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.34.0...v0.35.0Low3/17/2024
v0.34.0## Breaking #### Command target change ([#535](https://github.com/tmux-python/libtmux/issues/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()`](https://libtmux.git-pull.com/reference/servers.html#libtmux.Server.cmd "libtmux.Server.cmd") - [`Session.cmd()`](https://libtmux.git-pull.com/referenceLow3/17/2024
v0.33.0### Breaking changes[](https://libtmux.git-pull.com/history.html#breaking-changes "Permalink to this heading") #### Improved new sessions ([](https://github.com/tmux-python/libtmux/issues/532)[#532](https://github.com/tmux-python/libtmux/issues/532))[](https://libtmux.git-pull.com/history.html#improved-new-sessions-532 "Permalink to this heading") - `Session.new_window()`: - Learned `direction`, via [`WindowDirection`](https://libtmux.git-pull.com/reference/constants.html#libtmux.consLow3/17/2024
v0.33.0b1## What's Changed * Split, new window follow ups by @tony in https://github.com/tmux-python/libtmux/pull/534 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.33.0b0...v0.33.0b1Low3/17/2024
v0.33.0b0### Breaking changes[](https://libtmux.git-pull.com/history.html#breaking-changes "Permalink to this heading") #### Improved new sessions ([](https://github.com/tmux-python/libtmux/issues/532)[#532](https://github.com/tmux-python/libtmux/issues/532))[](https://libtmux.git-pull.com/history.html#improved-new-sessions-532 "Permalink to this heading") - `Session.new_window()` to [`Session.new_window()`](https://libtmux.git-pull.com/reference/sessions.html#libtmux.Session.new_window "libtmux.SeLow3/17/2024
v0.32.0## What's Changed * Fix docstring ordering in pane.split_window by @Ngalstyan4 in https://github.com/tmux-python/libtmux/pull/528 * Add implicit exports into __init__.py by @ssbarnea in https://github.com/tmux-python/libtmux/pull/531 ## New Contributors * @Ngalstyan4 made their first contribution in https://github.com/tmux-python/libtmux/pull/528 * @ssbarnea made their first contribution in https://github.com/tmux-python/libtmux/pull/531 **Full Changelog**: https://github.com/tmux-pythLow3/2/2024
v0.31.0post0# Post-release Documentation Fixes - Doc fixes to command examples **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.31.0...v0.31.0post0Low2/17/2024
v0.31.0## Cleanups ([#527](https://github.com/tmux-python/libtmux/issues/527)) - Streamline {Server,Session,Window,Pane}.cmd(), across all usages to: - Use cmd: str as first positional - Removed unused keyword arguments **kwargs ## Renamings ([#527](https://github.com/tmux-python/libtmux/issues/527)) - Session.attached_window renamed to [Session.active_window()](http://localhost:8023/reference/sessions.html#libtmux.Session.active_window) - Session.attached_window deprecated - Session.aLow2/17/2024
v0.30.2- `TMUX_MAX_VERSION`: 3.3 -> 3.4 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.30.1...v0.30.2Low2/16/2024
v0.30.1- pytest plugin, test module: Update to renamed methods introduced in v0.30.0 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.30.0...v0.30.1Low2/16/2024
v0.30.0# New and improved commands by @tony in https://github.com/tmux-python/libtmux/pull/525 ### 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()` Low2/16/2024
v0.29.0## Develpment * fix(warnings): Use `DeprecationWarning` for APIs being deprecated by @tony in https://github.com/tmux-python/libtmux/pull/526 ## Testing * pytest: Ignore `DeprecationWarning` in tests @tony in https://github.com/tmux-python/libtmux/pull/526 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.28.1...v0.29.0Low2/16/2024
v0.28.1_Maintenance only, no bug fixes or new features_ #### Testing - CI: Bump actions to node 20+ versions #### Documentation - Refine docs and add migration for v0.28.0 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.28.0...v0.28.1Low2/15/2024
v0.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 Low2/15/2024
v0.27.1## What's Changed * pyproject: Include `MIGRATION` in sdist by @tony in https://github.com/tmux-python/libtmux/pull/517, for https://github.com/tmux-python/libtmux/issues/508 **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.27.0...v0.27.1Low2/8/2024
v0.27.0### Improvements - QueryList: Generic fixes by @tony in https://github.com/tmux-python/libtmux/pull/515 - This improves the annotations in descendant objects such as: - `Server.sessions` - `Session.windows` - `Window.panes` - Bolster tests (ported from `libvcs`): doctests and pytests **Full Changelog**: https://github.com/tmux-python/libtmux/compare/v0.26.0...v0.27.0Low2/7/2024
v0.26.0## What's Changed ### 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) - https://docs.astral.sh/ruff/rules/#flake8-commas-com - https://pypi.org/project/flake8-commas/ - Add flake8Low2/6/2024
v0.25.0## Changes ### Comparator fixes * Fixed `__eq__` for windows. by @m1guelperez in https://github.com/tmux-python/libtmux/pull/505 * fix(pane,session,server): Return `False` if type mismatched by @tony in https://github.com/tmux-python/libtmux/pull/510 ### Documentation * ruff: Enable pydocstyle w/ numpy convention by @tony in https://github.com/tmux-python/libtmux/pull/509 ## New Contributors * @m1guelperez made their first contribution in https://github.com/tmux-python/libtmux/pLow11/25/2023

Dependencies & License Audit

Loading dependencies...

Similar Packages

dmuxTmux pane manager with AI agent integration for parallel development workflows5.7.0
pre-commitA framework for managing and maintaining multi-language pre-commit hooks.v4.6.0
azure-core-tracing-opentelemetryMicrosoft Azure Azure Core OpenTelemetry plugin Library for Pythonazure-template_0.1.0b6187637
spdx-toolsSPDX parser and tools.0.8.5
lacesDjango components that know how to render themselves.0.1.2