python/cpython

Commits on Jan 26, 2021

Commits on Jan 25, 2021

  1. bpo-38250: [Enum] single-bit flags are canonical (GH-24215)

    Flag members are now divided by one-bit verses multi-bit, with multi-bit being treated as aliases. Iterating over a flag only returns the contained single-bit flags.
    
    Iterating, repr(), and str() show members in definition order.
    
    When constructing combined-member flags, any extra integer values are either discarded (CONFORM), turned into ints (EJECT) or treated as errors (STRICT). Flag classes can specify which of those three behaviors is desired:
    
    >>> class Test(Flag, boundary=CONFORM):
    ...     ONE = 1
    ...     TWO = 2
    ...
    >>> Test(5)
    <Test.ONE: 1>
    
    Besides the three above behaviors, there is also KEEP, which should not be used unless necessary -- for example, _convert_ specifies KEEP as there are flag sets in the stdlib that are incomplete and/or inconsistent (e.g. ssl.Options). KEEP will, as the name suggests, keep all bits; however, iterating over a flag with extra bits will only return the canonical flags contained, not the extra bits.
    
    Iteration is now in member definition order.  If member definition order
    matches increasing value order, then a more efficient method of flag
    decomposition is used; otherwise, sort() is called on the results of
    that method to get definition order.
    
    
    ``re`` module:
    
    repr() has been modified to support as closely as possible its previous
    output; the big difference is that inverted flags cannot be output as
    before because the inversion operation now always returns the comparable
    positive result; i.e.
    
       re.A|re.I|re.M|re.S is ~(re.L|re.U|re.S|re.T|re.DEBUG)
    
    in both of the above terms, the ``value`` is 282.
    
    re's tests have been updated to reflect the modifications to repr().

Commits on Jan 24, 2021

Commits on Jan 23, 2021

Commits on Jan 22, 2021

Commits on Jan 21, 2021

Commits on Jan 20, 2021

  1. bpo-42856: Add --with-wheel-pkg-dir=PATH configure option (GH-24210)

    Add --with-wheel-pkg-dir=PATH option to the ./configure script. If
    specified, the ensurepip module looks for setuptools and pip wheel
    packages in this directory: if both are present, these wheel packages
    are used instead of ensurepip bundled wheel packages.
    
    Some Linux distribution packaging policies recommend against bundling
    dependencies. For example, Fedora installs wheel packages in the
    /usr/share/python-wheels/ directory and don't install the
    ensurepip._bundled package.
    
    ensurepip: Remove unused runpy import.