diff --git a/AGENTS.md b/AGENTS.md index b507d04..864c6e3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,7 +18,7 @@ The core split to keep in mind: AGI is one blocking call per script; AMI is one ``` pystrix/ -├── __init__.py VERSION lives here (currently 1.2.0) +├── __init__.py VERSION lives here (single source of truth) ├── ami/ │ ├── ami.py Manager class + threading/socket core (the heart of AMI) │ ├── core.py ~60 Action classes (Login, Originate, Hangup, Ping, ...) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09a51aa..17a8fb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [1.3.0] - 2026-06-24 + ### Added - `AGENTS.md` with an architecture overview and contributor guidance. - `CLAUDE.md` pointing to `AGENTS.md`. @@ -29,7 +31,7 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Migrated packaging from `setup.py` to `pyproject.toml` (PEP 621) with a PEP 639 SPDX license expression (`LGPL-3.0-or-later`). Moved the ruff config into `[tool.ruff]`, and removed `setup.py`, `build-release.py`, and `ruff.toml`. Build with `python -m build`; the version is read dynamically from `pystrix.VERSION`. ### Removed -- The Python 2 compatibility shims: the `queue` and `socketserver` import fallbacks, the `basestring` branch in `generic_transforms`, and the explicit `(object)` base classes. The codebase is now Python 3 only. +- The Python 2 compatibility shims: the `queue` and `socketserver` import fallbacks, the `basestring` branch in `generic_transforms`, and the explicit `(object)` base classes. The codebase is now Python 3 only. Dropping Python 2 is released as a pragmatic minor bump rather than a major one, since Python 2 support was already nominal and end-of-life. ### Fixed - Narrowed the bare `except` around `line.decode()` in `_AGI._read_line` to an `isinstance(line, bytes)` check. A real `UnicodeDecodeError` on malformed socket bytes now surfaces instead of being swallowed and leaving raw bytes in the line (#50). @@ -51,5 +53,6 @@ to follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases before 1.2.0 are recorded in the git commit history. -[Unreleased]: https://github.com/IVRTech/pystrix/compare/v1.2.0...HEAD +[Unreleased]: https://github.com/IVRTech/pystrix/compare/v1.3.0...HEAD +[1.3.0]: https://github.com/IVRTech/pystrix/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/IVRTech/pystrix/releases/tag/v1.2.0 diff --git a/README.md b/README.md index 26ce47c..5c839c2 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,16 @@ pystrix runs on Python 3.9+. It targets Asterisk 1.10+ and provides a rich, easy The package is a toolkit, not a framework. You can drop it into a larger project without adopting an async framework such as Twisted. -This repository is version **1.2.0**. The canonical version lives in `pystrix/__init__.py`. New releases follow `..`, with a patch release cut for each bug fix. +This repository is version **1.3.0**. The canonical version lives in `pystrix/__init__.py`. New releases follow `..`, with a patch release cut for each bug fix. + +## Compatibility + +| pystrix | Python | +| --- | --- | +| 1.3.x | 3.9 – 3.13 | +| 1.2.0 and earlier | 2.7, 3.4+ (legacy, unmaintained) | + +From 1.3.0 on, the `requires-python` metadata makes pip resolve automatically: a project on an older Python receives 1.2.x. All versions target Asterisk 1.10+. ## Installation diff --git a/pystrix/__init__.py b/pystrix/__init__.py index bad110c..cb15305 100644 --- a/pystrix/__init__.py +++ b/pystrix/__init__.py @@ -43,5 +43,5 @@ import pystrix.agi import pystrix.ami -VERSION = "1.2.0" +VERSION = "1.3.0" COPYRIGHT = "2013, Neil Tallim "