Skip to content

Latest commit

 

History

History
921 lines (563 loc) · 23.9 KB

CHANGES

File metadata and controls

921 lines (563 loc) · 23.9 KB

Changelog

To install the unreleased libtmux version, see developmental releases.

pip:

$ pip install --user --upgrade --pre libtmux

libtmux 0.25.x (unreleased)

  • Notes on upcoming releases will be added here

libtmux 0.24.1 (2023-11-23)

Packaging

  • Remove requirements/ folder, which was unused and deprecated by pyproject.toml (#507)
  • pyproject: Add gp-libs to test dependency group

libtmux 0.24.0 (2023-11-19)

Maintenance only, no bug fixes or new features

Breaking changes

  • Python 3.7 Dropped (#497)

Packaging

Development

  • Move formatting from black to ruff format (#506)

    This retains the same formatting style of black while eliminating a dev dependency by using our existing rust-based ruff linter.

  • CI: Update action packages to fix warnings

libtmux 0.23.2 (2023-09-09)

Maintenance only, no bug fixes or new features

Breaking changes

  • Cut last python 3.7 release (EOL was June 27th, 2023)

    For security updates, a 0.23.x branch can be maintained for a limited time, if necessary.

libtmux 0.23.1 (2023-09-02)

Maintenance only, no bug fixes or new features

Development

  • Automated typo fixes from typos-cli:

    typos --format brief --write-changes
  • ruff: Remove ERA / eradicate plugin

    This rule had too many false positives to trust. Other ruff rules have been beneficial.

libtmux 0.23.0 (2023-08-20)

Maintenance only, no bug fixes or new features

Development

  • Code quality improved via ruff rules (#488)

    This includes fixes made by hand, and with ruff's automated fixes. Despite selecting additional rules, which include import sorting, ruff runs nearly instantaneously when checking the whole codebase.

Post-release: v0.23.0post0 (2023-08-20)

  • Fixes code comments cleaned up by ruff, but missed in QA. In the future, even when using an automated tool, we will review more thoroughly.

Post-release: v0.23.0post1 (2023-08-26)

  • Fixes for more ERA001 issues.

Post-release: v0.23.0post2 (2023-08-28)

  • Yet more ERA001 fixes.

libtmux 0.22.2 (2023-08-20)

Development

  • build system: Remove setuptools requirement (#495, in related to #493, #494)

libtmux 0.22.1 (2023-05-28)

Maintenance only, no bug fixes or new features

Development

  • Add back black for formatting

    This is still necessary to accompany ruff, until it replaces black.

libtmux 0.22.0 (2023-05-27)

Maintenance only, no bug fixes or new features

Internal improvements

  • 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.

  • poetry: 1.4.0 -> 1.5.0

    See also: https://github.com/python-poetry/poetry/releases/tag/1.5.0

libtmux 0.21.1 (2023-04-07)

Development

  • Update mypy to 1.2.0

Fixes

  • SkipDefaultFieldsReprMixin: Fix typing for mypy 1.2.0

libtmux 0.21.0 (2023-01-29)

Breaking internal change

  • Default format separator (LIBTMUX_TMUX_FORMAT_SEPARATOR): | -> (#475, in re: #471, #472)

    Fixes buffer_sample with pipes causing fetch_objs()-powered listings to fail unexpectedly.

libtmux 0.20.0 (2023-01-15)

What's new

  • Server.new_session: Accept x and y, thanks @rockandska (#469)
  • New test fixture: session_params. The dict is used directly in the session pytest fixture (#470)

libtmux 0.19.1 (2022-01-07)

Fixes

libtmux 0.19.0 (2022-01-07)

New features

  • pane.capture_pane() learned to accept start and end line numbers (#465)

libtmux 0.18.3 (2023-01-07)

Improvement

  • fetch_objs now raises ObjectDoesNotExist with detailed information on lookup that failed (#466)

libtmux 0.18.2 (2022-12-30)

Fixes

  • Server: Launching of new session with default socket (#857)

libtmux 0.18.1 (2022-12-28)

Fixes

  • Window.panes: Fix docstring
  • Remove unused code documentation

libtmux 0.18.0 (2022-12-27)

Breaking

  • Server: Add __repr__ and set socket_path if none set.

    Before (0.17 and below):

    <libtmux.server.Server object at ...>

    New __repr__ (0.18+):

    Server(socket_name=test)
    Server(socket_path=/tmp/tmux-1000/default)

libtmux 0.17.2 (2022-12-27)

  • Server: Move _list_panes and _update_panes to deprecated

libtmux 0.17.1 (2022-12-27)

Fixes

  • Documentation fixes
  • Add deprecation warning to Server.children, Session.children, Window.children.

libtmux 0.17.0 (2022-12-26)

Breaking changes (#426)

  • Finding objects / relations

    • 0.16 and below: session._windows(), session.list_windows(), etc.

      0.17 and after: {attr}session.windows <libtmux.Session.windows>

    • 0.16 and below: session.find_where({'window_name': my_window})

      0.17 and after: {meth}session.windows.get(window_name=my_window, default=None) <libtmux.Session.windows>

      • If not found and not default, raises {exc}~libtmux._internal.query_list.ObjectDoesNotExist
      • If multiple objects found, raises {exc}~libtmux._internal.query_list.MultipleObjectsReturned
    • 0.16 and below: session.where({'window_name': my_window})

      0.17 and after: {meth}session.windows.filter(window_name=my_window) <libtmux.Session.windows>

  • Accessing attributes

    • 0.16 and below: window['id']

      0.17 and after: window.id

    • 0.16 and below: window.get('id')

      0.17 and after: window.id

    • 0.16 and below: window.get('id', None)

      0.17 and after: getattr(window, 'id', None)

New features

Detect if server active (#448)

  • Server.is_alive()
  • Server.raise_if_dead()

Internal

  • Remove unused sphinx-click development dependency

libtmux 0.16.1 (2022-12-12)

Fixes

  • Remove reliance on packaging.version.Version (#461)

    This is too critical of a package to pin a dependency as it may interfere with other packages the user relies on. In addition, libtmux doesn't need strict compatibility with packaging.

libtmux 0.16.0 (2022-12-10)

Breaking changes

  • Fix distutils warning, vendorize LegacyVersion (#351)

    Removal of reliancy on distutils.version.LooseVersion, which does not support tmux(1) versions like 3.1a.

    Fixes warning:

    DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.

    The temporary workaround, before 0.16.0 (assuming setup.cfg):

    [tool:pytest]
    filterwarnings =
        ignore:.* Use packaging.version.*:DeprecationWarning::
        ignore:The frontend.Option(Parser)? class.*:DeprecationWarning::

Features

  • Window.split_window() and Session.new_window() now support an optional dictionary of environmental variables, via (#453), credit @zappolowski.

libtmux 0.15.10 (2022-11-05)

There will be more improvements over the coming weeks and months to shore up flakiness across shells and environments.

Tests

  • Compatibility improvement for test_capture_pane and env (#452), credit: @zappolowski!
  • Remove more BASHisms from tests (#455)

libtmux 0.15.9 (2022-10-30)

Bug fix

  • tmux_cmd(): Fix raise of TmuxCommandNotFound (#450)

CI

  • Use python 3.11 (#451)

Packaging

  • Add python 3.11 to trove classifiers (#451)

Development

  • Add python 3.11 to asdf and pyenv configurations (#451)

libtmux 0.15.8 (2022-10-02)

Bug fix

  • Session.new_window(): Improve support for window_name: '' downstream in tmuxp (#444, credit: @trankchung)

libtmux 0.15.7 (2022-09-23)

  • Move .coveragerc -> pyproject.toml (#443)

libtmux 0.15.6 (2022-09-23)

Maintenance only, no bug fixes or new features

Packaging

  • Remove MANIFEST.in

    This is handled by poetry's include in pyproject.toml.

libtmux 0.15.5 (2022-09-23)

Maintenance only, no bug fixes or new features

Packaging

  • Remove .tmuxp-before-script.sh from .tmuxp.yaml

libtmux 0.15.4 (2022-09-21)

Bug fixes

  • Use stable pytest API imports where possible to fix issues in downstream packaging on Arch (#441, via #442)

Packaging

  • Add .tmuxp-before-script.sh (used by .tmuxp.yaml) and conftest.py to source distributoins (#441, via #442)

libtmux 0.15.3 (2022-09-20)

Tests / docs

libtmux 0.15.2 (2022-09-17)

Maintenance release, no features or fixes

Tests

  • pytest plugin: Initial tests (for testing the plugin itself, #423)

Packaging

  • pyproject.toml: Note pytest framework in trove classifiers

Infrastructure

  • CI speedups (#428)

    • Avoid fetching unused apt package
    • Split out release to separate job so the PyPI Upload docker image isn't pulled on normal runs

libtmux 0.15.1 (2022-09-11)

Packaging

  • pyproject.toml: Drop old issues package, remove anther package from grouping

Documentation

  • Cleanup quickstart page

libtmux 0.15.0 (2022-09-10)

New features

Breaking changes

  • Remove common.which() in favor of {func}shutil.which, Credit: @rocksandska, via #407
  • Fixes #402: {func}common.tmux_cmd will only strip trailing empty lines. Before this change, all empty lines were filtered out. This will lead to a more accurate behavior when using {meth}Pane.capture_pane. Credit: @rockandska, via #405.
  • Source files for libtmux modules moved to src/, via #414.

Development

Tests

Documentation

libtmux 0.14.2 (2022-08-17)

Fixes

  • {meth}Server.new_session really works without session_name, #401 fixes #399. Improved tests and doctests added.

libtmux 0.14.1 (2022-08-17)

Fixes

  • {meth}Server.new_session works without session_name, #400 fixes #399

    This still passed None to the session name, this was fixed in v0.14.2.

libtmux 0.14.0 (2022-08-05)

Breaking changes

  • {meth}Pane.send_keys: suppress_history default value changed from True to False, #395

Tests and docs

  • Initial doctests examples stubbed out #394

  • Fix bug in temp_window() context manager, #394

  • Pytest configuration conftest.py moved to libtmux/conftest.py, so doctest can detect the fixtures #394

libtmux 0.13.0 (2022-08-05)

What's new

  • Improved typings

    Now mypy --strict compliant (#383)

    Smaller touchups from #392

Breaking changes

  • Deprecated individual item lookups (#390)

    • Removed key lookups from {meth}libtmux.common.EnvironmentMixin.show_environment

      Only EnvironmentMixin.show_environment() (without an argument) exists, and it still returns a dict.

    • Add key lookups via {meth}libtmux.common.EnvironmentMixin.getenv

      # Before
      server.show_environment('DISPLAY')
      
      # After
      server.getenv('DISPLAY')
      
      # Before
      session.show_environment('DISPLAY')
      
      # After
      session.getenv('DISPLAY')
    • Removed key lookups from {meth}Session.show_options

      session.show_options()  # still returns dict, without an argument
      
      # Old
      session.show_options('DISPLAY')
      
      # Now
      session.show_option('DISPLAY')
    • Removed key lookups from {meth}Window.show_window_options

      window.show_window_options()  # still returns dict, without an argument
      
      # Old
      window.show_window_options('DISPLAY')
      
      # Now
      window.show_window_option('DISPLAY')
  • Remove libtmux.test.retry(), deprecated since 0.12.x (#393)

Development

  • Fix incorrect function name findWhere() (#391)

libtmux 0.12.0 (2022-07-13)

Compatibility

  • Brought back python 3.7 and 3.8 support (#375)

  • Support for tmux 3.3a

    • Add to CI

    • Bump TMUX_MAX_VERSION from 2.4 -> 3.3

      2.4 to 3.3a already worked, this is just the constant being updated.

Development

  • Remove tox and tox-poetry-installer

    This created issues with running poetry while inside the virtualenv.

  • Typings: Core relations, e.g. Pane.window, Pane.session, Pane.server, Window.server #385

Documentation

  • Renewed logo
  • Try out sphinx-autoapi for its table of contents generation (#367)
  • Break up API documentations for utilities, exception, and test helpers and remove duplicate docs from API page. Server, session, window, and pane docs are in the Reference section now.

Testing

  • retry(): Add deprecation warning. This will be removed in 0.13.x (#368, #372)

  • New function retry_until(): Polls a callback function for a set period of time until it returns True or times out. By default it will raise {exc}libtmux.exc.WaitTimeout, with raises=False it will return False. Thank you @categulario! (#368, #372)

  • #384 Chore: Use absolute modules rather than root-level to avoid cyclic imports.

    # Bad / Old
    from libtmux import Server
    
    # Good / New
    from libtmux.server import Server

Internals

  • #382 [mypy] support added:

    • Basic mypy tests now pass

libtmux 0.11.0 (2022-03-10)

Compatibility

  • Python 3.7 and 3.8 returns in 0.12.0

    Final python 3.7 and 3.8 release

    Bug fixes and security updates will go to v0.11.x

  • Internal: Use new separator to split tmux(1) formatting information (#289, #343)

    The separator is configurable via LIBTMUX_TMUX_FORMAT_SEPARATOR. If you ever have compatibility issues in the future let us know which default works best across versions.

    Credit: @JonathanRaiman and @jagguli

  • Basic type annotations (#359, #361) via @otherJL0

Development

  • Code cleanup (#362) from @otherJL0
  • Format with black w/ string normalization. This is a one-time diff (#354)

Documentation

  • Sidebar reorganized into sections
  • Added documentation on fetching developmental releases of libtmux

libtmux 0.10.3 (2022-01-10)

Packaging

First experimental release using poetry build (#347). If you are packaging and run across any difficulty please see #346.

Compatibility

  • Drop python 3.6 (#344)

  • Add python 3.10, though still packaging.version issues remain (#344)

    A compat module and version constraints will need to be added for this

Development

  • poetry: 1.1.7 -> 1.1.12 (#344)
  • Add .pre-commit-config.yaml (#344)

libtmux 0.10.2 (2021-10-30)

  • #324: Update poetry to 1.1

    • CI: Use poetry 1.1.7 and install-poetry.py installer
    • Relock poetry.lock at 1.1 (w/ 1.1.7's fix)
  • #339 (CI): Lock python at 3.9 to avoid poetry issue with dataclasses

  • ci: Fix publishing docs (similar to #339)

  • #341 #342: Server.attached_sessions() now supports multiple attached sessions.

    Remove attached sessions limitation to not detect multiple attached clients, thank you @timoses

libtmux 0.10.1 (2021-06-16)

  • Update Window.select_window() for #271

libtmux 0.10.0 (2021-06-16)

  • #321: Convert to markdown
  • #271: Fix select_window() by providing the session ID as argument to -t. Thanks @Flowdalic
  • Drop python 3.5 support

libtmux 0.9.0 (2021-06-14)

Python 2.7 support dropped.

  • #306: chore: Remove python 2.7 support
  • #314: chore: Python 3.x syntax tweaks
  • #312: ci: Add tmux 3.2a to CI
  • chore: Update black to 21.6b0
  • #271: Fix select_window() by providing the session ID as argument to -t.

libtmux 0.8.5 (2020-10-25)

  • #297: Enchance subprocess interaction std[in|out|err]. Needed for interact with big buffer, fixes #251, thank you @gil-obradors!
  • #303 Add common.get_libtmux_version which gives the tmux version as a loose constraint. Fix linking to terms inside docs, and duplicate description of module which sphinx warned about in api.rst.
  • #266 Fix issue on local tests where env variables would cause show-environment to pause tests indefinitely.

libtmux 0.8.4 (2020-10-25)

  • #234: Window.split_window: Allow passing percent, Thank you @jinankjain!
  • #289: Fix warning due to invalid escape sequences, Thank you @tirkarthi!
  • #295: Publish docs via our own action
  • #295: Move more packaging over to poetry, though we'll keep setup.py for the moment to ensure compatibility package maintainers.
  • #295: New development instructions
  • #295: Move doc/ to docs/
  • #296: CI: Test python 2.7, cache python packages, prevent running internal PRs twice

libtmux 0.8.3 (2020-08-16)

  • #278: Fix Python deprecation warnings, thanks @d1618033

    Also thanks Flowdalic for a similar PR at #294

  • Add project_urls to setup.py

  • #293 Move from Pipfile to poetry

  • Fix show_option test in tmux 3.0

  • Clean up handle_option_error comments

  • Move CI to a GitHub action

libtmux 0.8.2 (2019-06-02)

  • CHANGES updated to plain reStructuredText
  • Add project_urls to setup.py for pypi.
  • Looser Pipfile versions, add Pipfile.lock

libtmux 0.8.1 (2019-01-26)

  • #117 Fix issue with renaming clients with tmux 2.7 on BSD/macOS machines.
  • #121 Support literal=True (-l) in Pane.send_keys from @ritiek
  • #131 Fix for unicode commands in Python 2, thanks @myw
  • #172 Support for next-X.Y versions from @sloria
  • #120 capture_pane support for Pane
  • #119 display_message support for Pane
  • Sort imports with isort
  • Add sphinxcontrib-napoleon package for documentation
  • Move docstrings over to numpy's style

libtmux 0.8.0 (2018-03-11)

  • #46 Change license from BSD to MIT
  • Move to new organization, tmux-python
  • Support package updates to pytest, sphinx, etc.
  • Travis/CI: Limit tests to Python 2.7 and 3.6 (removed 3.3 to 3.5)
  • Travis/CI: Update pypy veersions
  • #103 Server.new_session learned how to run commands in window on session start, thanks @grimpy!
  • #68 Make Server.has_session() use returncode, thanks @jlargentaye! This should make has_session more robust.

libtmux 0.7.8 (2018-03-04)

libtmux 0.7.7 (2017-11-10)

  • Don't add -x/-y in tmux >= 2.6 if running tmuxp from inside client.

libtmux 0.7.6 (2017-11-09)

  • Allow Window.select_layout with no args
  • Fix test where bell- was no longer ambiguous as of tmux 2.6

libtmux 0.7.5 (2017-10-07)

  • Hotfix to support tmux 2.6 session creation

libtmux 0.7.4 (2017-08-19)

libtmux 0.7.3 (2017-05-29)

  • Exact matches only supported on 2.1 and up

libtmux 0.7.2 (2017-05-29)

  • Support exact matching in Server.has_session

libtmux 0.7.1 (2017-04-28)

  • #37 Improve support for formatted options like pane-border-status. Thanks @kaushalmodi.

libtmux 0.7.0 (2017-04-27)

  • Support for python 2.6 dropped. New minimum version is 2.7

  • Add support for tmux 2.4, pypy and pypy3

  • Overhaul error handling when setting and showing options

    • Added handle_option_error for handling option errors
    • Added {exc}libtmux.exc.OptionError base exception
    • Added {exc}libtmux.exc.InvalidOption and libtmux.exc.AmbiguousOption
    • {exc}libtmux.exc.UnknownOption now extends {exc}libtmux.exc.OptionError
  • Overhaul version checking

    • has_version has been renamed to get_version
    • get_version will return tmux built from git master as the latest version supported by the libtmux version with -master at the end, e.g. 2.4-master
    • get_version will return tmux on openbsd base system as the latest version supported by the libtmux version with -openbsd at the end, e.g. 2.4-openbsd
    • has_required_tmux_version has been renamed to has_minimum_version
    • added has_gt_version, has_gte_version, has_lt_version, has_lte_version,
  • Fixed up documentation in some session methods

  • Added pydoc exception info to option methods in window and sessions.

  • Added TMUX_MIN_VERSION and TMUX_MAX_VERSION

libtmux 0.6.5 (2017-04-02)

  • Fix which command
  • Add TmuxCommandNotFound exception
  • Add tmux_search_paths and append_env_path kwargs to tmux_cmd.

libtmux 0.6.4 (2017-03-25)

  • #32 support for OpenBSD's tmux

libtmux 0.6.3 (2017-02-08)

  • #25 support for working with tmux master, thanks @sloria.

libtmux 0.6.2 (2017-01-19)

  • #197 use LooseVersion instead of StrictVersion for version checks. Thanks @minijackson.
  • Pin packages with pyup.io
  • #21 Readme fix from @huwenchao.

libtmux 0.6.1 (2016-12-20)

  • #18 Fix logger, courtesy of @geekli
  • #19 Add support for start_directory in new sessions and panes, courtesy of @gandelman-a.
  • Fix tests and add official support for 2.3

libtmux 0.6.0 (2016-09-16)

  • Raise exception for invalid session names. tmux does not allow names that are empty, contain periods or colons.
  • Remove unused target_session param in Server.attach_session and Server.switch_client.

libtmux 0.5.1 (2016-08-18)

  • #12 - fix logger message when tmux doesn't exist in PATH

libtmux 0.5 (2016-06-15)

  • #8 new exception UnknownOption
  • #8 return None for options that are valid tmux options, but unset at that scope.
  • #6 major documentation overhaul

libtmux 0.4.1 (2016-05-23)

libtmux 0.4.0 (2016-05-23)

  • attributes for formatters are now accessible via Session, Window and Pane objects. session.name is equivalent to session.get('session_name'), you can do the same with other properties in _info. window.name, pane.current_path, session.id, window.id, pane.id, session.index, window.index, pane.index, etc.
  • attached_sessions, attached_window and attached_pane are now properties.
  • _TMUX metadata object changed to _info.
  • .findWhere() is now find_where.
  • README and usage fixes

libtmux 0.3.0 (2016-05-23)

  • switch to pytest

libtmux 0.1.0 (2016-05-22)

  • libtmux forked from tmuxp.