v0.15.3
0.15.3 (27 September 2024) - New tree snakes edition:
IMPORTANT:
- Minimum Python language version is now 3.8.
- We support 3.8, 3.9, 3.10, 3.11, 3.12, and PyPy3 (language versions 3.8, 3.9, and 3.10).
- Python 3.6 and 3.7 support dropped, as these language versions have officially reached end-of-life. If you need
unpythonicfor Python 3.6 or 3.7, use version 0.15.2.
- Minimum version for optional macro expander
mcpyrateis now 3.6.2, because theastcompatutility module was moved there.
New:
- Python 3.12 support.
- As in, all tests pass, so there are no regressions. Some undiscovered interactions with new language features (
typestatement) may still be broken, although the most obvious cases are already implemented.
- As in, all tests pass, so there are no regressions. Some undiscovered interactions with new language features (
- Python 3.11 support.
- As in, all tests pass, so there are no regressions. Some undiscovered interactions with new language features (
try/except*construct) may still be broken, although the most obvious cases are already implemented.
- As in, all tests pass, so there are no regressions. Some undiscovered interactions with new language features (
- Walrus syntax
name := valueis now supported, and preferred, for all env-assignments. Old syntaxname << valuestill works, and will remain working at least until v0.16.0, whenever that is.- Note that language support for using an assignment expression inside a subscript without parenthesizing it was added in Python 3.10.
- If you still use Python 3.8 or 3.9, with the new
:=syntax you must put parentheses around eachletbinding, because syntactically, the bindings subform looks like a subscript. - All documentation is written in Python 3.10 syntax; all unit tests are written in Python 3.8 syntax.
Changed:
- Utility module
unpythonic.syntax.astcompat, used by the macro layer, moved tomcpyrate.astcompat. This module handles version differences in theastmodule in various versions of Python.
Fixed:
ETAEstimatoredge case: at any point after all tasks have been marked completed, return a constant zero estimate for the remaining time.- Fix borkage in
mathseqwhen running with SymPy 1.13 (SymPy is only used in tests). Bump SymPy version to 1.13. - Fix bug in scopeanalyzer:
get_names_in_store_contextnow collects also names bound inmatch/caseconstructs (pattern matching, Python 3.10).