Releases: IVRTech/pystrix
Releases · IVRTech/pystrix
pystrix 1.3.0
Added
AGENTS.mdwith an architecture overview and contributor guidance.CLAUDE.mdpointing toAGENTS.md.- A Contributing section and AGI, FastAGI, and AMI quick-start examples in the README.
.readthedocs.yamlanddoc/requirements.txtfor reproducible documentation builds.- A GitHub Actions CI workflow that runs the test suite with coverage across Python 3.9 through 3.13, plus a documentation build check.
- A
pytestunit-test suite covering AMI message parsing and request building, AGI response parsing, and action and helper formatting, withpytestandpytest-covin atestextra (pip install -e '.[test]'). - Coverage measurement through
pytest-cov, reported in the CI logs. No coverage data leaves CI. - A CI status badge in the README.
- A curated
ruffconfiguration, a.pre-commit-config.yaml, and a CI lint job. - This changelog.
Changed
- Converted
README.rsttoREADME.mdand corrected the version and install URL. - Stated the license as the GNU LGPLv3 or later across the README and packaging metadata. pystrix is not dual-licensed. Both
COPYINGandCOPYING.LESSERship because the LGPL extends the GPL. - Declared Python 3.9+ through
python_requiresand trove classifiers (3.9 through 3.13), and dropped Python 2 and the end-of-life 3.x entries. - Narrowed the "any platform" claim. The FastAGI server runs on Linux and macOS only, because it reads
SOMAXCONNwithsysctl. - Removed the
AUTHORSfile. Provenance now lives in the README, and the contributor list comes from git history and the GitHub contributors page. - Modernized
doc/conf.py(exclude_patterns, Read the Docs theme with a fallback, raw-string regex). - Formatted the whole codebase with
ruff format(line length 88) and enabled import sorting (ruff'sIrule). Both are now enforced in pre-commit and CI. A.git-blame-ignore-revsfile letsgit blameskip the reformat commit. - Migrated packaging from
setup.pytopyproject.toml(PEP 621) with a PEP 639 SPDX license expression (LGPL-3.0-or-later). Moved the ruff config into[tool.ruff], and removedsetup.py,build-release.py, andruff.toml. Build withpython -m build; the version is read dynamically frompystrix.VERSION.
Removed
- The Python 2 compatibility shims: the
queueandsocketserverimport fallbacks, thebasestringbranch ingeneric_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
exceptaroundline.decode()in_AGI._read_lineto anisinstance(line, bytes)check. A realUnicodeDecodeErroron malformed socket bytes now surfaces instead of being swallowed and leaving raw bytes in the line (#50). - Applied safe lint fixes surfaced by ruff:
not x is/not x inrewritten tox is not/x not in, removed unused imports, and turned two invalid escape sequences (\d,\*) into raw strings. Intentional re-exports are marked with targeted ignores. _Request.build_requestnow honors its documented ActionID precedence: an explicit argument wins, then a value already set on the request, then a generated one. Previously a pre-set ActionID was dropped when no argument was passed, and it overrode an explicit argument. The resolved ActionID is also coerced to a string so a pre-set non-string value matches Asterisk's responses (#43).- Replaced the removed
cgi.urlparse.parse_qsinpystrix/agi/fastagi.pywithurllib.parse.parse_qs. This fixes FastAGI query-string parsing on all Python 3 and restores Python 3.13 support (#36). - Corrected the
_Response.timedescription in the AMI docs and fixed several typos. - Stopped tracking
doc/_build/output and macOS._metadata files, and fixed the.gitignorerule that let them in.
pystrix 1.2.0
Added
- FastAGI server sizes its listen backlog from the system
SOMAXCONN, raising the number of concurrent calls it can accept.
Changed
- FastAGI server enables
allow_reuse_addresson the socket.
Releases before 1.2.0 are recorded in the git commit history.