Changelog

This document contains a reverse-chronological list of changes to txaio.

Note

For detailed release information including wheels and artifacts, see Release Notes.

26.6.1

Fix

  • Logging at warn level on the asyncio backend no longer triggers a DeprecationWarning from the standard library: txaio now dispatches the warn level to logging.Logger.warning instead of the deprecated .warn alias (#89)

Other

  • Preserve verified artifact chain-of-custody in the release pipeline, aligning txaio with the rest of the WAMP group. The wheel, source distribution and documentation are now built once in the main workflow and uploaded with upload-artifact-verified; the release workflow download-artifact-verifieds those exact, checksum-verified artifacts (by main run id) and publishes them, instead of rebuilding from source. This guarantees that what is tested is what is shipped (#207)

  • Auto-publish a GitHub Discussions announcement for nightly and stable releases: a new release-post-comment.yml workflow runs after the release workflow, finds the freshly-created GitHub Release and posts its notes into the Discussions ci-cd category. The category is resolved by name (case-insensitive), so no repo-specific category id is hard-coded. Requires GitHub Discussions enabled on the repository with a ci-cd category (#207)

  • Align artifact handling with the rest of the WAMP group: CI now uploads build, coverage and documentation artifacts via the shared upload-artifact-verified action (SHA256 chain-of-custody), and the release workflow validates the exact PyPI payload — the universal py3-none-any wheel plus the source distribution — with the shared, fail-closed check-release-fileset action before publishing (#212)

  • Remove three permanently-skipped legacy tests that exercised the @asyncio.coroutine decorator. That decorator was removed in Python 3.11 (txaio’s minimum supported version), so the tests could no longer run on any supported interpreter and only emitted skips (#152)

  • Bumped the shared wamp-ai and wamp-cicd Git submodules to match the rest of the WAMP project group (zlmdb / autobahn-python 26.6.1) for the coordinated release. The wamp-cicd bump picks up the GHSA-6658 shell-injection hardening in the shared identifiers.yml reusable workflow (untrusted GitHub event fields are now passed via env: as quoted data with a fail-closed branch-name allowlist) (#218)

  • Declare the ty type checker in the dev extra and run it from the project venv (dropping the separate global uv tool install ty step), so local and CI resolve the same latest ty. Fixed a newly-reported ty invalid-argument-type diagnostic in tx.py (the Twisted ILogObserver is provided via zope.interface @provider, which static checkers cannot follow) with a localized cast rather than a blanket rule ignore. Excluded the .ai / .cicd submodules from ruff (they carry their own linting/CI) (#218)

25.12.2

New

  • Modernized documentation infrastructure with Furo theme, MyST Markdown support, and sphinx-autoapi for automatic API documentation generation (#210)

  • Switch from setuptools to Hatchling

  • Added standardized project badges (PyPI, Python versions, CI, Docs, License, Downloads) to README.md and docs/index.rst

  • Added comprehensive documentation sections: Installation, Getting Started, Programming Guide, Contributing, and Releases

  • Added AI assistance documentation under docs/ai/ with acknowledgement and audit files

Fix

  • Fixed RST badge rendering by setting override_image_directive=False in sphinxcontrib-images configuration

  • Fixed F841 linting error in sphinx_auto_section_anchors.py (unused variable)

  • Fixed Incomplete source distribution in 25.12.1: missing tests/util.py (#208)

Other

  • Updated Sphinx requirement to >=8.2.3 for docs optional dependency

  • Updated .cicd submodule to latest with linting fix

  • Standardized conf.py configuration across WAMP ecosystem projects

25.12.1

New

  • Phase 1.3: CI/CD Modernization - align workflows with wamp-cicd patterns (#205)

  • Phase 1.2: Build Tooling Modernization - migrate to src layout, Furo/MyST/AutoAPI docs (#203)

  • Phase 1.1: Update infrastructure submodules to latest Phase 0 versions (#201)

  • Migrate from mypy to ty (Astral type checker) for faster type checking

  • Enable tests and coverage in GitHub Actions

  • Add coverage report artifact upload

  • Modernize docs/conf.py with Furo theme, MyST Markdown, sphinx-autoapi

Fix

  • ci: fix publish-github-releases to skip on PRs

  • ci: align release.yml with autobahn-python model to prevent accidental releases

25.9.2

Fix

  • fix: minimum Python version specification in pyproject.toml (#198)

25.9.1

New

  • Migrate from legacy setup.py/setup.cfg/requirements.txt to modern pyproject.toml

  • Upgrade GitHub workflows to use just+uv toolchain

  • Add modern pyproject.toml configuration with all tool configs

  • Add centralized AI support files git submodule (.ai)

  • Add support for Python 3.14 (#196)

Fix

  • polish AI policy and docs

  • relax mypy configuration; disable coverage + typing jobs in CI (temporary)

Other

  • Minimum Python version bumped to 3.11, support 3.11-3.14 on CPython/PyPy

  • Copyrights maintained by typedef int GmbH (Germany)

25.6.1

New

  • announcement of upcoming (but not yet effective) new AI policy clarifying matter with respect to AI assisted contributions (see #1663 in AutobahnPython)

Fix

  • update license file to include contributors (#188)

  • remove obsolete dependency on six (#186)

  • update pypy version in CI workflow (#187)

  • setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.

Other

  • Copyrights transferred from Crossbar.io Technologies GmbH (Germany) to typedef int GmbH (Germany)

23.1.1

Fix

  • support for Python up to v3.11

  • update GitHub CI

  • copyright transferred to typedef int GmbH - no license change!

22.2.1

Fix

  • cancel handling in python 3.8/3.9 (#175)

  • gracefully fail if coroutine called with wrong args (#176)

  • eliminate redundant dependency on mock (#170)

  • doc note that twisted supports native coroutines (#172)

21.2.1

Fix

  • update minimum dependencies (here, and in other crossbar packages) in an attempt to tame the new pip dep resolver madness

20.12.1

New

  • CI/CD migrated to GitHub Actions

  • support Python 3.9 (CI / testing added)

  • minimum Python version is now 3.6

20.4.1

New

  • upload wheel to S3 (bucket “crossbarbuilder”) in CI deploy stage

Fix

  • fix event loop threading issue (PR #163)

20.3.1

New

  • support import-time framework selection

Fix

  • remove python2 support (finally)

20.1.1

New

  • moved time_ns and perf_counter_ns helper functions here

Other

  • IMPORTANT: beginning release v20.1.1, we only support Python 3.5 or later

18.8.1

New

  • add API to support cancellation; this means passing a 1-argument callable to create_future and txaio.cancel to actually cancel a future

  • support Python 3.7 (CI / testing added)

Other

  • IMPORTANT: release v18.8.1 is the last release supporting Python 2. We will support Python 3.5 and later beginning with release v20.1.1.

18.7.1

New

  • move to calver

Other

  • deprecate Python 3.3 support and CI testing

2.10.0

Fix

  • the asyncio version of make_logger now deduces a proper namespace instead of using the root (thanks spr0cketeer)

2.9.0

March 2, 2018

(No detailed changelog available)

2.8.2

September 4, 2017

Fix

  • no longer install LICENSE file into installation directory (conflicts!)

2.8.1

July 21, 2017

Fix

  • the asyncio version of sleep() correctly returns a Future instance

2.8.0

June 8, 2017

New

  • run CI on Python 3.5 and 3.6

Fix

  • asyncio - remove the hacks for “simulating” chained futures (no longer works - cpy36 has native code for future)

2.7.1

May 1, 2017

New

  • asyncio: example and docs for running multiple loops

  • asyncio: log exception tracebacks when they’re available for error-message

2.7.0

April 15, 2017

New

  • allow alternate asyncio loops

  • new future creation API for alternate loops

2.6.1

February 9, 2017

New

  • added inline sleep helper (Twisted only for now)

2.6.0

December 29, 2016

Fix

  • avoid giving negative times to callLater with batched timers (issue #81)

2.5.2

November 6, 2016

Fix

  • fix pytest3/2

  • fix Sphinx 1.4+ doc building

Other

  • Copyrights transferred from Tavendo to Crossbar.io Technologies

2.5.1

April 28, 2016

Fix

  • Bug with make_batched_timer remembering (via a closure) the reactor/event-loop too persistantly

2.5.0

April 28, 2016

New

  • Objects returned from the txaio.make_batched_timer() API now have millisecond resolution and spread out their notifications over the entire range of the bucket

Other

  • Document that @coroutine and @inlineCallbacks are not supported

2.4.0

April 22, 2016

New

  • Added txaio.make_batched_timer() API. The main use-case for this is when you have lots of of timers, but their exact resolution isn’t important; batching them into buckets causes far fewer delayed call instances to be outstanding in the underlying event-loop/reactor.

2.3.1

April 10, 2016

New

  • added universal wheels

2.3.0

April 9, 2016

New

  • More logging infrastructure and APIs to support moving all of Crossbar.io’s logging to txaio

Previous Releases

We didn’t produce any release notes prior to 2.4.0. Instead of making up summaries of all previous releases after the fact, you will have to do something like git log v1.1.0..v2.0.0 to see what changed between releases. If you do make a summary, pull-requests are welcome!