values for its constants from the C header files, instead of having the
values hard-coded in the python module as was previously the case.
+* Loading multiple python modules from a single OS module (``.so``, ``.dll``)
+ now works correctly (previously it silently returned the first python
+ module in the file). (Contributed by Václav Šmilauer in :issue:`16421`.)
+
Significant Optimizations
:exc:`ValueError` if given a negative length; previously it returned nonsense
values (:issue:`14794`).
+* The :class:`complex` constructor, unlike the :mod:`cmath` functions, was
+ incorrectly accepting :class:`float` values if an object's ``__complex__``
+ special method returned one. This now raises a :exc:`TypeError`.
+ (:issue:`16290`.)
+
Changes in the C API
--------------------
builtins.
- Issue #16455: On FreeBSD and Solaris, if the locale is C, the
- ASCII/surrogateescape codec is now used, instead of the locale encoding, to
+ ASCII/surrogateescape codec is now used (instead of the locale encoding) to
decode the command line arguments. This change fixes inconsistencies with
- os.fsencode() and os.fsdecode() because these operating systems announces an
- ASCII locale encoding, whereas the ISO-8859-1 encoding is used in practice.
+ os.fsencode() and os.fsdecode(), because these operating systems announce an
+ ASCII locale encoding, but actually use the ISO-8859-1 encoding in practice.
- Issue #16562: Optimize dict equality testing. Patch by Serhiy Storchaka.