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
unpythonic
for Python 3.6 or 3.7, use version 0.15.2.
- Minimum version for optional macro expander
mcpyrate
is now 3.6.2, because theastcompat
utility 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 (
type
statement) 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 := value
is now supported, and preferred, for all env-assignments. Old syntaxname << value
still 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 eachlet
binding, 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 theast
module in various versions of Python.
Fixed:
ETAEstimator
edge case: at any point after all tasks have been marked completed, return a constant zero estimate for the remaining time.- Fix borkage in
mathseq
when 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_context
now collects also names bound inmatch
/case
constructs (pattern matching, Python 3.10).