# changelog

author: mardnh@gmx.de
changelog:
  - Update to version 1.5.0
    * Support for YANG/NETCONF, the ability to store major
      configuration elements in a YANG model and manipulate it
      using NETCONF.
    * Support for global host reservations (previously each host
      reservation had to be associated with a specific subnet)
    * Class commands ? a new hook that allows dynamic changes
      to be made to client classes without restarting.
    * Performance and resiliency improvements to the High
      Availability hook.
    * A new congestion control feature to mitigate the effects of
      heavy DHCP traffic conditions.
    * Improvements to the High Availability feature, including paged
      updates between HA pairs to alleviate timeouts.
  - Run spec-cleaner


author: Adam Majer <adam.majer@suse.de>
changelog:
  - Update to version 1.6.0~beta2
    * Default file locations for lease file, server-duid, log files and lock
      files have changed. Files previously stored in `/var/kea` are now stored
      in `/var/run/kea`. Server hooks previously installed in `/usr/lib/hooks`
      are now installed in `/usr/lib/kea/hooks`. The log files are now stored
      in `/var/log/kea`.
    * The kea-admin commands (lease-init, lease-version, lease-upgrade) were
      renamed to better reflect the fact that the database can store much more
      than just leases. They're now called db-init, db-version, db-upgrade.
    * The Logging entry in the configuration file has moved to specific
      daemon sections. This require a simple configuration file modification.
      You need to move Logging entry from its global scope into the Dhcp4,
      Dhcp6, DhcpDdns, Control-agent or Netconf scope.
    Please see 1.6 migration wiki
    https://gitlab.isc.org/isc-projects/kea/wikis/migrating-to-kea-1.6
    For release notes, see
    https://ftp.isc.org/isc/kea/1.6.0-beta2/Kea160beta2ReleaseNotes.txt
  - Fix building of perfdhcp
  - Enable building of kea-shell
  - Update sonames of all affected libraries and ship only libraries,
    allowing `ldconfig` to actually make the symlinks
  - Rework spec file to abstract soversions


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.6.0
    * Corrected multiple occurrences of out of bounds vector reads.
    * Corrected a bug in the Kea MySQL Configuration Backend which
      caused the Kea DHCPv6 server to incorrectly require the
      server tag to be provided with the remote-subnet6-option-set
      command.
    * Corrected a bug in the Kea MySQL Configuration Backend which
      prevented the DHCP servers from discovering and fetching the
      changes applied with the new commands.
    * Prevent the DHCP servers from asserting when malformed
      hostname or FQDN options are received.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.8.0
    * User-defined option definitions were not committed, which was
      fixed.
    * kea-dhcp4 now rejects inbound client messages that have
      neither a hardware address nor a client identifier.
    * Rather than within the 'dhcp-ddns' section, DDNS behavioral
      parameters may now be specified at global, shared-network,
      and subnet scopes.
    * Added support of BOOTP leases with infinite valid lifetime.
    * Added the -N command line switch that enables experimental
      multi-threading support.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.9.1
    * New parameters: ddns-use-conflict-resolution,
      ip-reservations-unique, ddns-update-on-renew,
      cache-threshold, cache-max-age.
    * Support for new IPv6-only-preferred option for DHCPv4.
    * Added support of basic HTTP authentication in HTTP library,
      control agent.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.9.7
    * The Control Agent now supports TLS/HTTPS.
    * kea-shell supports TLS/HTTPS.
    * kea-admin now accepts the -P, --port parameter
    * kea-dhcp4 now supports specifying valid-lifetime in
      client classes.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.9.8
    * Kea now recognizes requests sent from vendors that include
      their information in DHCPv6 Vendor Class option (code 16).
    * Fixed the server ignoring the Subnet Selection option
      supplied by a client if its query contained a Relay Agent
      Information (RAI) option without a Link Selection option.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 0.9.4
    * Add a helper for concat expression handling.
    * Add "typeof" build/parse/print support.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 0.9.5
    * Support for set counters.
    * Support for restoring set element counters via nft -f.
    * Counter support for flowtables.
    * typeof concatenations support for sets.
    * Support for concatenated ranges in anonymous sets.
    * Allow to reject packets with 802.1q from the bridge family.
    * Support for matching on the conntrack ID.
  - Drop anonset-crashfix.patch (upstream solved differently)


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 0.9.7
    * Support for implicit chains
    * Support for ingress inet chains
    * Support for reject from prerouting chain
    * Support for --terse option in json
    * Support for the reset command with json


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 0.9.8
    * Complete support for matching ICMP header content fields.
    * Added raw tcp option match support.
    * Added ability to check for the presence of any tcp option.
    * Support for rejecting traffic from the ingress chain.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 0.9.9
    * Flowtable hardware offload support
    * Support for the table owner flag.
    * 802.1ad (QinQ) support
    * cgroupsv2 support.
    * match on SCTP packet chunks (dependent on Linux 5.14)
    * Allow to use verdict in set/map typeof definitions


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.0.0
    * Catch-all set element support.
    * The command-line option --define is now recognized.
    * Stateful expressions in maps.
    * Allow combination of jhash, symhash and numgen expressions with
      the queue statement.
    * Allow combination of verdict maps with interval concatenations.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.0.1
    * Reduce memory footprint when loading large sets/maps.
    * Speed up reload of large sets/maps.
    * Speed up listing of specific tables in large ruleset, e.g.
      large ruleset with ~100k lines.
    * Speed up --terse option when listing a ruleset large sets/maps.
    * Print raw payload expression in hexadecimal, e.g.
      "@ll,0,8 & 0x80 == 0x80"
    * egress hook support (available since 5.16-rc1).
    * Allow matching and update bytes at inner header/payload
      offset (available since 5.16-rc1).


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.0.2
    * New ruleset optimization -o/--optimize option.
    * Support for IP and TCP options and SCTP chunks in sets.
    * Support for tcp fastopen, md5sig and mptcp options.
    * MP-TCP subtype matching support.
    * JSON support for flowtables.
  - Add 0001-build-add-missing-AM_CPPFLAGS-to-examples.patch


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to new upstream release 1.1.2
    * This release adds supports for new kernel extensions: tproxy,
      tunneling, xfrm, osf, conntrack timeouts and helpers. This
      release deprecates the nftnl_rule_cmp() interface and the low
      level JSON infrastructure.
  - Remove bufferov.diff (obsolete)


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to new upstream release 1.1.3
    * expr: osf: add version option support
    * udata: add NFTNL_UDATA_* definitions
    * chain: support per chain rules listing


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to new upstream release 1.1.4
    * Add ct id support, add ct expectation support,
      add synproxy support.


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.1.5
    * flowtable: add support for handle attribute
    * obj/ct_timeout: Avoid array overrun in timeout_parse_attr_data()


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.1.8
    * libnftnl: export nftnl_set_elem_fprintf
    * examples: add support for NF_PROTO_INET family
    * table: add userdata support
    * object: add userdata and comment support
    * chain: add userdata and comment support
    * src: add support for chain ID attribute


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.2.0
    * table: add table owner support
    * expr: socket: add cgroups v2 support


author: Jan Engelhardt <jengelh@inai.de>
changelog:
  - Update to release 1.2.1
    * expr: add last match time support
    * expr: missing netlink attribute in last expression


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.2.2:
    * Fix message lost when using paho.mqtt.publish helper with
      QoS=0 message.
  - Changes from version 1.2.1:
    * Handle unicode username and passwords correctly.
    * Fix handling of invalid UTF-8 topics on incoming messages - the
      library now does not attempt to decode the topic - this will
      happen when the user accesses msg.topic in the on_message
      callback. If the topic is not valid UTF-8, an exception will be
      raised.
    * Fix issue with WebSocket connection in case of network issue
      (timeout or connection broken).
    * Fix issue with SSL connection, where latest incoming message
      may be delayed or never processed.
    * Fix possible message lost with publish.single and
      publish.multiple.
  - Add paho-mqtt-1.2.2-fix-readme-decoding.patch:
    * Fix error at build when using non-UTF8 locale.


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.2.3:
    * Fix possible hang of TLS connection during handshake.
    * Fix issue with publish helper with TLS connection.
    * Fix installation issue on non-UTF-8 system.
    * Fix non-working Websocket over TLS connection.
  - Remove paho-mqtt-1.2.2-fix-readme-decoding.patch (fixed
    upstream).


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.3.0:
    * Requires Python 2.7 or 3.4+.
    * Remove support for SSL without SSLContext (Requires Python
      2.7.9+ or 3.2+).
    * on_connect callback is now always called flags. Previously this
    * callback could accepts 3 OR 4 arguments, now it must accepts 4.
    * tls_insecure_set() must now be called *after* tls_set().
    * Allow username and password to be zero length (as opposed to
    * not being present).
    * Allow zero length client ids when using MQTT v3.1.1.
    * Add SSLContext support, including SNI.
    * Improved support for unicode topic and binary payload.
    * Allow arbitrary Websocket headers and path.
    * Fix issue with large inbound payload over Websocket.
    * Add exponential delay for reconnection.
    * Move unit tests to pytest and tox.
    * Add support for standard Python logging.
    * Fix duplicate incoming QoS==2 message.


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.3.1:
    * Fix reconnect_delay_set which ignored the max_delay.
    * Fix crash when connection is lost while trying to send message.
    * Fix issue with unicode topic when some character were
      multi-bytes UTF-8.
    * Fix issue with empty Client ID with broker that doesn't support
      them.
    * Fix issue with tls_set that did not allowed
      cert_reqs=ssl.CERT_NONE.


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.4.0:
    * Fix hang when client restarted and broker resumed a session
      with Qos2 message.
    * Fix reconnection loop when a clean_session=True client
      reconnect while Qos2 message are being sent.
    * Catch and log any exception raised by user callback.
    * Improve support for external event loop (like asyncio).
    * Fix order of message with publish.multiple helper.
    * Fix hang on wait_for_published() on bad network.
    * Fix issue with Websocket payload size between 127 and 65536.
    * Closes socket in client destructor to avoid FD leak.
    * Fix uncaught timeout exception during connection.
    * Remove dup flag on PUBREL packet.
    * Use secure entropy source for Websocket mask_key (urandom).
    * Fix mid generation that was not thread-safe.
    * Replace print() statements with proper logging.
    * Allow insecure TLS on publish and subscribe helpers.
    * Allow to remove authentication (reset username to None).
    * Add support for the non-standard bridge mode.


author: antoine.belvire@opensuse.org
changelog:
  - Update to version 1.5.0:
    * Add support for clean_session on subscribe helper
      (gh#eclipse/paho.mqtt.python#219).
    * Add support for non-standard bridge connection
      (gh#eclipse/paho.mqtt.python#282).
    * Fix hang with QoS 2 message and clean_session = False. The fix
      replace hang with message DROP. See README for known
      limitation (gh#eclipse/paho.mqtt.python#284,
      gh#eclipse/paho.mqtt.python#286).
    * Fix connection establishement timeout
      (gh#eclipse/paho.mqtt.python#291,
      gh#eclipse/paho.mqtt.python#288).
    * Add support for connecting through a proxy
      (gh#eclipse/paho.mqtt.python#315).
    * Add MQTT v5 support (gh#eclipse/paho.mqtt.python#334).
    * Improve error message when sending queue is full
      (gh#eclipse/paho.mqtt.python#378).
    * Improve error handling during initialization on edge case
      (gh#eclipse/paho.mqtt.python#387,
      gh#eclipse/paho.mqtt.python#388).
    * Allow to specify local client port used (similar to
      bind_address) (gh#eclipse/paho.mqtt.python#390).
    * Add method is_connected to know if MQTT connection is
      established (gh#eclipse/paho.mqtt.python#414).
    * Set connection timeout to keepalive
      (gh#eclipse/paho.mqtt.python#425).


author: Martin Hauke <mardnh@gmx.de>
changelog:
  - Update to version 1.5.1:
    * Exceptions that occur in callbacks are no longer suppressed
      by default. They can optionally be suppressed by setting
      `client.suppress_exceptions = True`.
    * Fix PUBREL remaining length of > 2 not being accepted for
      MQTT v5 message flows.


author: Adrian Schröter <adrian@suse.de>
changelog:
  - update to version 1.6.1:
    - Changed default TLS version to 1.2 instead of 1.0.
    - Fix incoming MQTT v5 messages with overall property length > 127 bytes being
      incorrectly decoded. Closes #541.
    - MQTTMessageInfo.wait_for_publish() and MQTTMessageInfo.is_published() will
      now raise exceptions if called when the publish call produced an error.
      Closes #550.
    - Remove periodic retry checks for outgoing messages with QoS>0. This means
      that outgoing messages will only be retried on the client reconnecting to
      the server. They will *not* be retried when the client is still connected.
    - The `rc` parameter in the `on_disconnect` callback now has meaningful values
      in the case of an error. Closes #441.
    - Callbacks can now be applied to client instances using decorators.
    - PUBACK messages are now sent to the broker only after the on_message
      callback has returned.
    - Raise exceptions when attempting to set MQTT v5 properties to forbidden
      values. Closes #586.
    - Callbacks can now be updated from within a callback.
    - Remove _out_packet_mutex and _current_out_packet_mutex and convert the
      _out_packet queue use to thread safe.
    - Add basic MQTT v5 support to the subscribe and publish helper functions.
      Closes #575.
    - Fix on_disconnect() sometimes calling the MQTT v3.x callback when it should
      call the MQTT v5 callback. Closes #570.
    - Big performance improvement when receiving large payloads, particularly for
      SSL. Closes #571,
    - Fix connecting with MQTT v5 to a broker that doesn't support MQTT v5.
      Closes #566.
    - Removed ancient Mosquitto compatibility class.
    - Fix exception on calling Client(client_id="", clean_session=False).
      Closes #520.
    - Experimental support for Websockets continuation frames. Closes #500.
      Closes #89.
    - `Properties.json()` now converts Correlation Data bytes() objects to hex.
      Closes #555.
    - Only use the internal sockpair wakeup when running with loop_start() or
      loop(). This removes problems when running with an external event loop.
    - Drain all of sockpairR bytes to avoid unnecessary wakeups and possible
      timeouts. Closes #563.
    - Add timeout to MQTTMessageInfo:wait_for_publish().


author: Todd R <toddrme2178@gmail.com>
changelog:
  - Update to 2.0.4
    + Bug fixes:
    * Fix render height for rendering full screen applications in Windows.
    * Fix in `TextArea`. Set `accept_handler` to `None` if not given.
    * Go to the beginning of the next line when enter is pressed in Vi navigation
      mode, and the buffer doesn't have an accept handler.
    * Fix the `default` argument of the `prompt` function when called multiple
      times.
    * Display decomposed multiwidth characters correctly.
    * Accept `history` in `prompt()` function again.
    + Backwards incompatible changes:
    * Renamed `PipeInput` to `PosixPipeInput`. Added `Win32PipeInput` and
      `create_input_pipe`.
    * Pass `buffer` argument to the `accept_handler` of `TextArea`.
    + New features:
    * Added `accept_default` argument to `prompt()`.
    * Make it easier to change the body/title of a Frame/Dialog.
    * Added `DynamicContainer`.
    * Added `merge_completers` for merging multiple completers together.
    * Add vt100 data to key presses in Windows.
    * Handle left/right key bindings in Vi block insert mode.
  - Update to  2.0.3
    + Bug fixes:
    * Fix in 'x' and 'X' Vi key bindings. Correctly handle line endings and args.
    * Fixed off by one error in Vi line selection.
    * Fixed bugs in Vi block selection. Correctly handle lines that the selection
      doesn't cross.
    * Python 2 bugfix. Handle str/unicode correctly.
    * Handle option+left/right in iTerm.
  - Update to 2.0.2
    + Bug fixes:
    * Python 3.7 support: correctly handle StopIteration in asynchronous generator.
    * Fixed off-by-one bug in Vi visual block mode.
    * Bugfix in TabsProcessor: handle situations when the cursor is at the end of
      the line.
  - Update to 2.0.1
    + Changes:
    * No automatic translation from \r into \n during the input processing. These
      are two different keys that can be handled independently. This is a big
      backward-incompatibility, because the `Enter` key is `ControlM`, not
      `ControlJ`. So, now that we stopped translating \r into \n, it could be that
      custom key bindings for `Enter` don't work anymore. Make sure to bind
      `Keys.Enter` instead of `Keys.ControlJ` for handling the `Enter` key.
    * The `CommandLineInterface` and the `Application` classes are merged. First,
      `CommandLineInterface` contained all the I/O objects (like the input, output
      and event loop), while the `Application` contained everything else. There was
      no practical reason to keep this separation. (`CommandLineInterface` was
      mostly a proxy to `Application`.)
    * prompt_toolkit no longer depends on Pygments, but it can still use Pygments
      for its color schemes and lexers. In many places we used Pygments "Tokens",
      this has been replaced by the concept of class names, somewhat similar to
      HTML and CSS.
      > `PygmentsStyle` and `PygmentsLexer` adaptors are available for
      plugging in Pygments styles and lexers.
      > Wherever we had a list of `(Token, text)` tuples, we now have lists of
      `(style_string, text)` tuples. The style string can contain both inline
      styling as well as refer to a class from the style sheet. `PygmentsTokens`
      is an adaptor that converts a list of Pygments tokens into a list of
      `(style_string, text)` tuples.
    * Changes in the `Style` classes.
      > `style.from_dict` does not exist anymore. Instantiate the ``Style`` class
      directory to create a new style. ``Style.from_dict`` can be used to create
      a style from a dictionary, where the dictionary keys are a space separated
      list of class names, and the values, style strings (like before).
      > `print_tokens` was renamed to `print_formatted_text`.
      > In many places in the layout, we accept a parameter named `style`. All the
      styles from the layout hierarchy are combined to decide what style to be
      used.
      > The ANSI color names were confusing and inconsistent with common naming
      conventions. This has been fixed, but aliases for the original names were
      kept.
    * The way focusing works is different. Before it was always a `Buffer` that
      was focused, and because of that, any visible `BufferControl` that contained
      this `Buffer` would be focused. Now, any user control can be focused. All
      of this is handled in the `Application.layout` object.
    * The `buffers` dictionary (`CommandLineInterface.buffers`) does not exist
      anymore. Further, `buffers` was a `BufferMapping` that keeps track of which
      buffer has the focus. This significantly reduces the freedom for creating
      complex applications. We wanted to move toward a layout that can be defined
      as a (hierarchical) collection of user widgets. A user widget does not need
      to have a `Buffer` underneath and any widget should be focusable.
      > `layout.Layout` was introduced to contain the root layout widget and keep
      track of the focus.
    * The key bindings were refactored. It became much more flexible to combine
      sets of key bindings.
      > `Registry` has been renamed to `KeyBindings`.
      > The `add_binding` function has been renamed to simply `add`.
      > Every `load_*` function returns one `KeyBindings` objects, instead of
      populating an existing one, like before.
      > `ConditionalKeyBindings` was added. This can be used to enable/disable
      all the key bindings from a given `Registry`.
      > A function named `merge_key_bindings` was added. This takes a list of
      `KeyBindings` and merges them into one.
      > `key_binding.defaults.load_key_bindings` was added to load all the key
      bindings.
      > `KeyBindingManager` has been removed completely.
      > `input_processor` was renamed to `key_processor`.
      > The `Key` class does not exist anymore. Every key is a string and it's
      considered fine to use string literals in the key bindings. This is more
      readable, but we still have run-time validation. The `Keys` enum still
      exist (for backwards-compatibility, but also to have an overview of which
      keys are supported.)
      > 'enter' and 'tab' are key aliases for 'c-m' and 'c-i'.
    * User controls can define key bindings, which are active when the user control
      is focused.
      > `UIControl` got a `get_key_bindings` (abstract) method.
    * Changes in the layout engine:
      > `LayoutDimension` was renamed to `Dimension`.
      > `VSplit` and `HSplit` now take a `padding` argument.
      > `VSplit` and `HSplit` now take an `align` argument.
      (TOP/CENTER/BOTTOM/JUSTIFY) or (LEFT/CENTER/RIGHT/JUSTIFY).
      > `Float` now takes `allow_cover_cursor` and `attach_to_window` arguments.
      > `Window` got an `WindowAlign` argument. This can be used for the alignment
      of the content. `TokenListControl` (renamed to `FormattedTextControl`) does
      not have an alignment argument anymore.
      > All container objects, like `Window`, got a `style` argument. The style for
      parent containers propagate to child containers, but can be overriden.
      This is in particular useful for setting a background color.
      > `FillControl` does not exist anymore. Use the `style` and `char` arguments
      of the `Window` class instead.
      > `DummyControl` was added.
      > The continuation function of `PromptMargin` now takes `line_number` and
      `is_soft_wrap` as input.
    * Changes to `BufferControl`:
      > The `InputProcessor` class has been refactored. The `apply_transformation`
      method should now takes a `TransformationInput` object as input.
      > The text `(reverse-i-search)` is now displayed through a processor. (See
      the `shortcuts` module for an example of its usage.)
    * `widgets` and `dialogs` modules:
      > A small collection of widgets was added. These are more complex collections
      of user controls that are ready to embed in a layout. A `shortcuts.dialogs`
      module was added as a high level API for displaying input, confirmation and
      message dialogs.
      > Every class that exposes a ``__pt_container__`` method (which is supposed
      to return a ``Container`` instance) is considered a widget. The
      ``to_container`` shortcut will call this method in situations where a
      ``Container`` object is expected. This avoids inheritance from other
      ``Container`` types, but also having to unpack the container object from
      the widget, in case we would have used composition.
      > Warning: The API of the widgets module is not considered stable yet, and
      can change is the future, if needed.
    * Changes to `Buffer`:
      > A `Buffer` no longer takes an `accept_action`.  Both `AcceptAction` and
      `AbortAction` have been removed. Instead it takes an `accept_handler`.
    * Changes regarding auto completion:
      > The left and right arrows now work in the multi-column auto completion
      menu.
      > By default, autocompletion is synchronous. The completer needs to be
      wrapped in `ThreadedCompleter` in order to get asynchronous autocompletion.
      > When the completer runs in a background thread, completions will be
      displayed as soon as they are generated. This means that we don't have to
      wait for all the completions to be generated, before displaying the first
      one. The completion menus are updated as soon as new completions arrive.
    * Changes regarding input validation:
      > Added the `Validator.from_callable` class method for easy creation of
      new validators.
    * Changes regarding the `History` classes:
      > The `History` base class has a different interface. This was needed for
      asynchronous loading of the history. `ThreadedHistory` was added for this.
    * Changes related to `shortcuts.prompt`:
      > There is now a class `PromptSession` which also has a method `prompt`. Both
      the class and the method take about the same arguments. This can be used to
      create a session. Every `prompt` call of the same instance will reuse all
      the arguments given to the class itself.
      The input history is always shared during the entire session.
      Of course, it's still possible to call the global `prompt` function. This
      will create a new `PromptSession` every time when it's called.
      > The `prompt` function now takes a `key_bindings` argument instead of
      `key_bindings_registry`. This should only contain the additional bindings.
      (The default bindings are always included.)
    * Changes to the event loops:
      > The event loop API is now closer to how asyncio works. A prompt_toolkit
      `Application` now has a `Future` object. Calling the `.run_async()` method
      creates and returns that `Future`. An event loop has a `run_until_complete`
      method that takes a future and runs the event loop until the Future is set.
      The idea is to be able to transition easily to asyncio when Python 2
      support can be dropped in the future.
      > `Application` still has a method `run()` that underneath still runs the
      event loop until the `Future` is set and returns that result.
      > The asyncio adaptors (like the asyncio event loop integration) now require
      Python 3.5. (We use the async/await syntax internally.)
      > The `Input` and `Output` classes have some changes. (Not really important.)
      > `Application.run_sub_applications` has been removed. The alternative is to
      call `run_coroutine_in_terminal` which returns a `Future`.
    * Changes to the `filters` module:
      > The `Application` is no longer passed around, so both `CLIFilter` and
      `SimpleFilter` were merged into `Filter`. `to_cli_filter` and
      `to_simple_filter` became `to_filter`.
      > All filters have been turned into functions. For instance, `IsDone`
      became `is_done` and `HasCompletions` became `has_completions`.
      This was done because almost all classes were called without any arguments
      in the `__init__` causing additional braces everywhere. This means that
      `HasCompletions()` has to be replaced by `has_completions` (without
      parenthesis).
      The few filters that took arguments as input, became functions, but still
      have to be called with the given arguments.
      For new filters, it is recommended to use the `@Condition` decorator,
      rather then inheriting from `Filter`.
    * Other renames:
      > `IncrementalSearchDirection` was renamed to `SearchDirection`.
      > The `use_alternate_screen` parameter has been renamed to `full_screen`.
      > `Buffer.initial_document` was renamed to `Buffer.document`.
      > `TokenListControl` has been renamed to `FormattedTextControl`.
      > `Application.set_return_value` has been renamed to `Application.set_result`.
    * Other new features:
      > `DummyAutoSuggest` and `DynamicAutoSuggest` were added.
      > `DummyClipboard` and `DynamicClipboard` were added.
      > `DummyCompleter` and `DynamicCompleter` were added.
      > `DummyHistory` and `DynamicHistory` was added.
      > `to_container` and `to_window` utilities were added.


author: Arun Persaud <arun@gmx.de>
changelog:
  - update to version 2.0.6:
    * Bug fixes:
      + Don't use the predefined ANSI colors for colors that are defined
      as RGB.  (Terminals can assign different color schemes for ansi
      colors, and we don't want use any of those for colors that are
      defined like #aabbcc for instance.)
      + Fix in handling of CPRs when patch_stdout is used.
    * Backwards incompatible changes:
      + Change to the `Buffer` class. Reset the buffer unless the
      `accept_handler` returns `True` (which means: "keep_text"). This
      doesn't affect applications that use `PromptSession`.
    * New features:
      + Added `AdjustBrightnessStyleTransformation`. This is a simple
      style transformation that improves the rendering on terminals
      with light or dark background.
      + Improved performance (string width caching and line height
      calculation).
      + Improved `TextArea`:
      o Exposed `focus_on_click`.
      o Added attributes: `auto_suggest`, `complete_while_typing`,
      `history`, `get_line_prefix`, `input_processors`.
      o Made attributes writable: `lexer`, `completer`,
      `complete_while_typing`, `accept_handler`, `read_only`,
      `wrap_lines`.
  - changes from version 2.0.5:
    * Bug fixes:
      + Fix in `DynamicContainer`. Return correct result for
      `get_children`. This fixes a bug related to focusing.
      + Properly compute length of `start`, `end` and `sym_b` characters
      of progress bar.
      + CPR (cursor position request) fix.
    * Backwards incompatible changes:
      + Stop restoring `PromptSession` attributes when exiting prompt.
    * New features:
      + Added `get_line_prefix` attribute to window. This opens many
      possibilities:
      o Line wrapping (soft and hard) can insert whitespace in front of
      the line, or insert some symbols in front. Like the Vim
      "breakindent" option.
      o Single line prompts also support line continuations now.
      o Line continuations can have a variable width.
      + For VI mode: implemented temporary normal mode (control-O in
      insert mode).
      + Added style transformations API. Useful for swapping between
      light and dark color schemes. Added `swap_light_and_dark_colors`
      parameter to `prompt()` function.
      + Added `format()` method to ANSI formatted text.
      + Set cursor position for Button widgets.
      + Added `pre_run` argument to `PromptSession.prompt()` method.


author: Arun Persaud <arun@gmx.de>
changelog:
  - update to version 2.0.7:
    * Bug fixes:
      + Fixed assertion in PromptSession: the style_transformation check
      was wrong.
      + Removed 'default' attribute in PromptSession. Only ask for it in
      the `prompt()` method. This fixes the issue that passing
      `default` once, will store it for all consequent calls in the
      `PromptSession`.
      + Ensure that `__pt_formatted_text__` always returns a
      `FormattedText` instance. This fixes an issue with
      `print_formatted_text`.
    * New features:
      + Improved handling of situations where stdin or stdout are not a
      terminal.  (Print warning instead of failing with an assertion.)
      + Added `print_container` utility.
      + Sound bell when attempting to edit read-only buffer.
      + Handle page-down and page-up keys in RadioList.
      + Accept any `collections.abc.Sequence` for HSplit/VSplit children
      (instead of lists only).
      + Improved Vi key bindings: return to navigation mode when Insert
      is pressed.


author: Arun Persaud <arun@gmx.de>
changelog:
  - specfile:
    * update copyright year
  - update to version 2.0.9:
    * Bug fixes:
      + Fixed `Application.run_system_command` on Windows.
      + Fixed bug in ANSI text formatting: correctly handle 256/true
      color sequences.
      + Fixed bug in WordCompleter. Provide completions when there's a
      space before the cursor.
  - changes from version 2.0.8:
    * Bug fixes:
      + Fixes the issue where changes made to the buffer in the accept
      handler were not reflected in the history.
      + Fix in the application invalidate handler. This prevents a
      significat slow down in some applications after some time
      (especially if there is a refresh interval).
      + Make `print_container` utility work if the input is not a pty.
    * New features:
      + Underline non breaking spaces instead of rendering as '&'.
      + Added mouse support for radio list.
      + Support completion styles for `READLINE_LIKE` display method.
      + Accept formatted text in the display text of completions.
      + Added a `FuzzyCompleter` and `FuzzyWordCompleter`.
      + Improved error handling in Application (avoid displaying a
      meaningless AssertionError in many cases).


author: Marketa Calabkova <mcalabkova@suse.com>
changelog:
  - Update to 3.0.4
    * Python 2 support has been dropped.
    * Native asyncio, so some async code becomes slightly different.
    * (almost) 100% type annotated.
    * Added shift-based text selection (use shift+arrows to start selecting text).
    * Accept an empty prompt continuation.
    * Improved support for "dumb" terminals.
    * `ShiftControl` has been replaced with `ControlShift` and `s-c` with `c-s` in
      key bindings. Aliases for backwards-compatibility have been added.


author: Dirk Müller <dmueller@suse.com>
changelog:
  - update to 3.0.8:
    - Added `validator` parameter to `input_dialog`.
    - New "placeholder" parameter added to `PromptSession`.
    - Fixes
    - The SSH/Telnet adaptors have been refactored and improved in several ways.
      See issues #876 and PR #1150 and #1184 on GitHub.
    * Handle terminal types for both telnet and SSH sessions.
    * Added pipe input abstraction. (base class for `PosixPipeInput` and
      `Win32PipeInput`).
    * The color depth logic has been refactored and moved to the `Output`
      implementations. Added `get_default_color_depth` method to `Output`
      objects.
    * All line feets are now preceded by a carriage return in the telnet
      connection stdout.
    - Introduce `REPLACE_SINGLE` input mode for Vi key bindings.
    - Improvements to the checkbox implementation:
    * Hide the scrollbar for a single checkbox.
    * Added a "checked" setter to the checkbox.
    - Expose `KeyPressEvent` in key_binding/__init__.py (often used in type
      annotations).
    - The renderer has been optimized so that no trailing spaces are generated
      (this improves copying in some terminals).


author: Atri Bhattacharya <badshah400@gmail.com>
changelog:
  - Update to version 3.0.26:
    * No Linux relevant changes.
  - Changes from version 3.0.25:
    * Use `DummyOutput` when `sys.stdout` is `None` and `DummyInput`
      when `sys.stdin` is `None`.
    * Correctly reset `Application._is_running` flag in case of
      exceptions in some situations.
    * Handle SIGINT (when sent from another process) and allow
      binding it to a key binding.
    * Increase the event loop `slow_duration_callback` by default to
      0.5 to prevent printing warnings if rendering takes too long
      on slow systems.
  - Older changelogs: see
    https://github.com/prompt-toolkit/python-prompt-toolkit/blob/3.0.26/CHANGELOG


author: Dirk Müller <dmueller@suse.com>
changelog:
  - update to 3.0.28:
    - Support format specifiers for HTML and ANSI formatted text.
    - Accept defaults for checkbox and radio list, and their corresponding dialogs.
    - Fix resetting of cursor shape after the application terminates.
    - Support for cursor shapes. The cursor shape for prompts/applications can now
      be configured, either as a fixed cursor shape, or in case of Vi input mode,
      according to the current input mode.
    - Handle "cursor forward" command in ANSI formatted text. This makes it
      possible to render many kinds of generated ANSI art.
    - Accept `align` attribute in `Label` widget.
    - Added `PlainTextOutput`: an output implementation that doesn't render any
      ANSI escape sequences. This will be used by default when redirecting stdout
      to a file.
    - Added `create_app_session_from_tty`: a context manager that enforces
      input/output to go to the current TTY, even if stdin/stdout are attached to
      pipes.
    - Added `to_plain_text` utility for converting formatted text into plain text.
    - Don't automatically use `sys.stderr` for output when `sys.stdout` is not a
      TTY, but `sys.stderr` is. The previous behavior was confusing, especially
      when rendering formatted text to the output, and we expect it to follow


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.9:
    * ethtool: fix module setup
    * ethtool: initial support <https://github.com/svinota/pyroute2/pull/675>
    * tc: multimatch support <https://github.com/svinota/pyroute2/pull/674>
    * tc: meta support <https://github.com/svinota/pyroute2/pull/671>
    * tc: cake: add stats_app decoder <https://github.com/svinota/pyroute2/pull/662>
    * conntrack: filter <https://github.com/svinota/pyroute2/pull/660>
    * ndb.objects.interface: reload after setns
    * ndb.objects.route: create() dst syntax
    * ndb.objects.route: 'default' syntax
    * wireguard: basic testing


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.10 bsc#1161898:
    * general: don't use pkg_resources <https://github.com/svinota/pyroute2/issues/677>
    * iproute: fix Windows support
    * netlink: provide the target field
    * ndb: use the target field from the netlink header
    * ndb: multiple SQL fixes, transactions fixed with the PostgreSQL backend
    * ndb: multiple object cache fixes <https://github.com/svinota/pyroute2/issues/683>
    * ndb.schema: drop DB triggers
    * ndb.objects: fix object management within a netns <https://github.com/svinota/pyroute2/issues/628>
    * ndb.objects.route: support route metrics
    * ndb.objects.route: fix default route syntax


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.11:
    * ndb.report: filters and transformations
    * ndb.objects.route: support basic MPLS routes management
    * ndb.objects.route: support MPLS lwtunnel routes
    * ndb.schema: reschedule events


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.12:
    * rtnl: implement team config pass <https://github.com/svinota/pyroute2/issues/699>
    * ndb.auth: example auth modules for RADIUS and OpenStack / Keystone
    * cli: syntax fixes


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.13:
    * netns: allow to pass custom libc reference <https://github.com/svinota/pyroute2/issues/702>
    * generic: att L2TP support <https://github.com/svinota/pyroute2/pull/709>
    * iproute: link_lookup() optimization <https://github.com/svinota/pyroute2/issues/712>
    * ndb: basic cluster support


author: Dirk Mueller <dmueller@suse.com>
changelog:
  - update to 0.5.14:
    * iproute: ip neigh get <https://github.com/svinota/pyroute2/pull/723>
    * iproute: link_lookup fix <https://github.com/svinota/pyroute2/pull/725>
    * nftables: missing hooks <https://github.com/svinota/pyroute2/pull/732>
    * netns: fix <https://github.com/svinota/pyroute2/pull/733>


author: Antonio Larrosa <alarrosa@suse.com>
changelog:
  - update to 0.5.18:
    * netlink: support zero length lladdr
      <https://github.com/svinota/pyroute2/issues/717>
  - update to 0.5.17:
    * license: aligned cli/ss2
      <https://github.com/svinota/pyroute2/pull/777>
    * ndb: del_ip() improvements
    * ndb: wait(timeout=...)
  - update to 0.5.16:
    * ndb: fix syntax for Python < 3.6
      <https://github.com/svinota/pyroute2/pull/776>
  - update to 0.5.15:
    * ndb: don't mess with SQL adapters unless really needed
    * ndb: support more virtual interface types
    * ndb: support in for views and record sets
    * ndb: fix nested fetches from DB
    * tests: start migration to pytest


