Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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, ...)
Expand Down
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand All @@ -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).
Expand All @@ -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
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 `<major>.<minor>.<patch>`, 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 `<major>.<minor>.<patch>`, 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

Expand Down
2 changes: 1 addition & 1 deletion pystrix/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,5 @@
import pystrix.agi
import pystrix.ami

VERSION = "1.2.0"
VERSION = "1.3.0"
COPYRIGHT = "2013, Neil Tallim <flan@uguu.ca>"
Loading