Skip to content

v0.15.3

Latest
Compare
Choose a tag to compare
@Technologicat Technologicat released this 27 Sep 13:48
· 5 commits to master since this release

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 the astcompat 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.
  • 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.
  • Walrus syntax name := value is now supported, and preferred, for all env-assignments. Old syntax name << 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 each let 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 to mcpyrate.astcompat. This module handles version differences in the ast 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 in match/case constructs (pattern matching, Python 3.10).