Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scheduled monthly dependency update for October #226

Closed
wants to merge 38 commits into from

Conversation

pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Oct 1, 2021

Update attrs from 19.3.0 to 21.2.0.

Changelog

21.2.0

-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- We had to revert the recursive feature for ``attr.evolve()`` because it broke some use-cases -- sorry!
`806 <https://github.com/python-attrs/attrs/issues/806>`_
- Python 3.4 is now blocked using packaging metadata because ``attrs`` can't be imported on it anymore.
To ensure that 3.4 users can keep installing  ``attrs`` easily, we will `yank <https://pypi.org/help/#yanked>`_ 21.1.0 from PyPI.
This has **no** consequences if you pin ``attrs`` to 21.1.0.
`807 <https://github.com/python-attrs/attrs/issues/807>`_


----

21.1.0

-------------------

Deprecations
^^^^^^^^^^^^

- The long-awaited, much-talked-about, little-delivered ``import attrs`` is finally upon us!

Since the NG APIs have now been proclaimed stable, the **next** release of ``attrs`` will allow you to actually ``import attrs``.
We're taking this opportunity to replace some defaults in our APIs that made sense in 2015, but don't in 2021.

So please, if you have any pet peeves about defaults in ``attrs``'s APIs, *now* is the time to air your grievances in 487!
We're not gonna get such a chance for a second time, without breaking our backward-compatibility guarantees, or long deprecation cycles.
Therefore, speak now or forever hold you peace!
`487 <https://github.com/python-attrs/attrs/issues/487>`_
- The *cmp* argument to ``attr.s()`` and `attr.ib()` has been **undeprecated**
It will continue to be supported as syntactic sugar to set *eq* and *order* in one go.

I'm terribly sorry for the hassle around this argument!
The reason we're bringing it back is it's usefulness regarding customization of equality/ordering.

The ``cmp`` attribute and argument on ``attr.Attribute`` remains deprecated and will be removed later this year.
`773 <https://github.com/python-attrs/attrs/issues/773>`_


Changes
^^^^^^^

- It's now possible to customize the behavior of ``eq`` and ``order`` by passing in a callable.
`435 <https://github.com/python-attrs/attrs/issues/435>`_,
`627 <https://github.com/python-attrs/attrs/issues/627>`_
- The instant favorite `next-generation APIs <https://www.attrs.org/en/stable/api.html#next-gen>`_ are not provisional anymore!

They are also officially supported by Mypy as of their `0.800 release <https://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html>`_.

We hope the next release will already contain an (additional) importable package called ``attrs``.
`668 <https://github.com/python-attrs/attrs/issues/668>`_,
`786 <https://github.com/python-attrs/attrs/issues/786>`_
- If an attribute defines a converter, the type of its parameter is used as type annotation for its corresponding ``__init__`` parameter.

If an ``attr.converters.pipe`` is used, the first one's is used.
`710 <https://github.com/python-attrs/attrs/issues/710>`_
- Fixed the creation of an extra slot for an ``attr.ib`` when the parent class already has a slot with the same name.
`718 <https://github.com/python-attrs/attrs/issues/718>`_
- ``__attrs__init__()`` will now be injected if ``init=False``, or if ``auto_detect=True`` and a user-defined ``__init__()`` exists.

This enables users to do "pre-init" work in their ``__init__()`` (such as ``super().__init__()``).

``__init__()`` can then delegate constructor argument processing to ``self.__attrs_init__(*args, **kwargs)``.
`731 <https://github.com/python-attrs/attrs/issues/731>`_
- ``bool(attr.NOTHING)`` is now ``False``.
`732 <https://github.com/python-attrs/attrs/issues/732>`_
- It's now possible to use ``super()`` inside of properties of slotted classes.
`747 <https://github.com/python-attrs/attrs/issues/747>`_
- Allow for a ``__attrs_pre_init__()`` method that -- if defined -- will get called at the beginning of the ``attrs``-generated ``__init__()`` method.
`750 <https://github.com/python-attrs/attrs/issues/750>`_
- Added forgotten ``attr.Attribute.evolve()`` to type stubs.
`752 <https://github.com/python-attrs/attrs/issues/752>`_
- ``attrs.evolve()`` now works recursively with nested ``attrs`` classes.
`759 <https://github.com/python-attrs/attrs/issues/759>`_
- Python 3.10 is now officially supported.
`763 <https://github.com/python-attrs/attrs/issues/763>`_
- ``attr.resolve_types()`` now takes an optional *attrib* argument to work inside a ``field_transformer``.
`774 <https://github.com/python-attrs/attrs/issues/774>`_
- ``ClassVar``\ s are now also detected if they come from `typing-extensions <https://pypi.org/project/typing-extensions/>`_.
`782 <https://github.com/python-attrs/attrs/issues/782>`_
- To make it easier to customize attribute comparison (435), we have added the ``attr.cmp_with()`` helper.

See the `new docs on comparison <https://www.attrs.org/en/stable/comparison.html>`_ for more details.
`787 <https://github.com/python-attrs/attrs/issues/787>`_
- Added **provisional** support for static typing in ``pyright`` via the `dataclass_transforms specification <https://github.com/microsoft/pyright/blob/master/specs/dataclass_transforms.md>`_.
Both the ``pyright`` specification and ``attrs`` implementation may change in future versions of both projects.

Your constructive feedback is welcome in both `attrs795 <https://github.com/python-attrs/attrs/issues/795>`_ and `pyright#1782 <https://github.com/microsoft/pyright/discussions/1782>`_.
`796 <https://github.com/python-attrs/attrs/issues/796>`_


----

20.3.0

-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- ``attr.define()``, ``attr.frozen()``, ``attr.mutable()``, and ``attr.field()`` remain **provisional**.

This release does **not** change change anything about them and they are already used widely in production though.

If you wish to use them together with mypy, you can simply drop `this plugin <https://gist.github.com/hynek/1e3844d0c99e479e716169034b5fa963#file-attrs_ng_plugin-py>`_ into your project.

Feel free to provide feedback to them in the linked issue 668.

We will release the ``attrs`` namespace once we have the feeling that the APIs have properly settled.
`668 <https://github.com/python-attrs/attrs/issues/668>`_


Changes
^^^^^^^

- ``attr.s()`` now has a *field_transformer* hook that is called for all ``Attribute``\ s and returns a (modified or updated) list of ``Attribute`` instances.
``attr.asdict()`` has a *value_serializer* hook that can change the way values are converted.
Both hooks are meant to help with data (de-)serialization workflows.
`653 <https://github.com/python-attrs/attrs/issues/653>`_
- ``kw_only=True`` now works on Python 2.
`700 <https://github.com/python-attrs/attrs/issues/700>`_
- ``raise from`` now works on frozen classes on PyPy.
`703 <https://github.com/python-attrs/attrs/issues/703>`_,
`712 <https://github.com/python-attrs/attrs/issues/712>`_
- ``attr.asdict()`` and ``attr.astuple()`` now treat ``frozenset``\ s like ``set``\ s with regards to the *retain_collection_types* argument.
`704 <https://github.com/python-attrs/attrs/issues/704>`_
- The type stubs for ``attr.s()`` and ``attr.make_class()`` are not missing the *collect_by_mro* argument anymore.
`711 <https://github.com/python-attrs/attrs/issues/711>`_


----

20.2.0

-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- ``attr.define()``, ``attr.frozen()``, ``attr.mutable()``, and ``attr.field()`` remain **provisional**.

This release fixes a bunch of bugs and ergonomics but they remain mostly unchanged.

If you wish to use them together with mypy, you can simply drop `this plugin <https://gist.github.com/hynek/1e3844d0c99e479e716169034b5fa963#file-attrs_ng_plugin-py>`_ into your project.

Feel free to provide feedback to them in the linked issue 668.

We will release the ``attrs`` namespace once we have the feeling that the APIs have properly settled.
`668 <https://github.com/python-attrs/attrs/issues/668>`_


Changes
^^^^^^^

- ``attr.define()`` et al now correct detect ``__eq__`` and ``__ne__``.
`671 <https://github.com/python-attrs/attrs/issues/671>`_
- ``attr.define()`` et al's hybrid behavior now also works correctly when arguments are passed.
`675 <https://github.com/python-attrs/attrs/issues/675>`_
- It's possible to define custom ``__setattr__`` methods on slotted classes again.
`681 <https://github.com/python-attrs/attrs/issues/681>`_
- In 20.1.0 we introduced the ``inherited`` attribute on the ``attr.Attribute`` class to differentiate attributes that have been inherited and those that have been defined directly on the class.

It has shown to be problematic to involve that attribute when comparing instances of ``attr.Attribute`` though, because when sub-classing, attributes from base classes are suddenly not equal to themselves in a super class.

Therefore the ``inherited`` attribute will now be ignored when hashing and comparing instances of ``attr.Attribute``.
`684 <https://github.com/python-attrs/attrs/issues/684>`_
- ``zope.interface`` is now a "soft dependency" when running the test suite; if ``zope.interface`` is not installed when running the test suite, the interface-related tests will be automatically skipped.
`685 <https://github.com/python-attrs/attrs/issues/685>`_
- The ergonomics of creating frozen classes using ``define(frozen=True)`` and sub-classing frozen classes has been improved:
you don't have to set ``on_setattr=None`` anymore.
`687 <https://github.com/python-attrs/attrs/issues/687>`_


----

20.1.0

-------------------

Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Python 3.4 is not supported anymore.
It has been unsupported by the Python core team for a while now, its PyPI downloads are negligible, and our CI provider removed it as a supported option.

It's very unlikely that ``attrs`` will break under 3.4 anytime soon, which is why we do *not* block its installation on Python 3.4.
But we don't test it anymore and will block it once someone reports breakage.
`608 <https://github.com/python-attrs/attrs/issues/608>`_


Deprecations
^^^^^^^^^^^^

- Less of a deprecation and more of a heads up: the next release of ``attrs`` will introduce an ``attrs`` namespace.
That means that you'll finally be able to run ``import attrs`` with new functions that aren't cute abbreviations and that will carry better defaults.

This should not break any of your code, because project-local packages have priority before installed ones.
If this is a problem for you for some reason, please report it to our bug tracker and we'll figure something out.

The old ``attr`` namespace isn't going anywhere and its defaults are not changing – this is a purely additive measure.
Please check out the linked issue for more details.

These new APIs have been added *provisionally* as part of 666 so you can try them out today and provide feedback.
Learn more in the `API docs <https://www.attrs.org/en/stable/api.html#provisional-apis>`_.
`408 <https://github.com/python-attrs/attrs/issues/408>`_


Changes
^^^^^^^

- Added ``attr.resolve_types()``.
It ensures that all forward-references and types in string form are resolved into concrete types.

You need this only if you need concrete types at runtime.
That means that if you only use types for static type checking, you do **not** need this function.
`288 <https://github.com/python-attrs/attrs/issues/288>`_,
`302 <https://github.com/python-attrs/attrs/issues/302>`_
- Added ``attr.s(collect_by_mro=False)`` argument that if set to ``True`` fixes the collection of attributes from base classes.

It's only necessary for certain cases of multiple-inheritance but is kept off for now for backward-compatibility reasons.
It will be turned on by default in the future.

As a side-effect, ``attr.Attribute`` now *always* has an ``inherited`` attribute indicating whether an attribute on a class was directly defined or inherited.
`428 <https://github.com/python-attrs/attrs/issues/428>`_,
`635 <https://github.com/python-attrs/attrs/issues/635>`_
- On Python 3, all generated methods now have a docstring explaining that they have been created by ``attrs``.
`506 <https://github.com/python-attrs/attrs/issues/506>`_
- It is now possible to prevent ``attrs`` from auto-generating the ``__setstate__`` and ``__getstate__`` methods that are required for pickling of slotted classes.

Either pass ``attr.s(getstate_setstate=False)`` or pass ``attr.s(auto_detect=True)`` and implement them yourself:
if ``attrs`` finds either of the two methods directly on the decorated class, it assumes implicitly ``getstate_setstate=False`` (and implements neither).

This option works with dict classes but should never be necessary.
`512 <https://github.com/python-attrs/attrs/issues/512>`_,
`513 <https://github.com/python-attrs/attrs/issues/513>`_,
`642 <https://github.com/python-attrs/attrs/issues/642>`_
- Fixed a ``ValueError: Cell is empty`` bug that could happen in some rare edge cases.
`590 <https://github.com/python-attrs/attrs/issues/590>`_
- ``attrs`` can now automatically detect your own implementations and infer ``init=False``, ``repr=False``, ``eq=False``, ``order=False``, and ``hash=False`` if you set ``attr.s(auto_detect=True)``.
``attrs`` will ignore inherited methods.
If the argument implies more than one method (e.g. ``eq=True`` creates both ``__eq__`` and ``__ne__``), it's enough for *one* of them to exist and ``attrs`` will create *neither*.

This feature requires Python 3.
`607 <https://github.com/python-attrs/attrs/issues/607>`_
- Added ``attr.converters.pipe()``.
The feature allows combining multiple conversion callbacks into one by piping the value through all of them, and retuning the last result.

As part of this feature, we had to relax the type information for converter callables.
`618 <https://github.com/python-attrs/attrs/issues/618>`_
- Fixed serialization behavior of non-slots classes with ``cache_hash=True``.
The hash cache will be cleared on operations which make "deep copies" of instances of classes with hash caching,
though the cache will not be cleared with shallow copies like those made by ``copy.copy()``.

Previously, ``copy.deepcopy()`` or serialization and deserialization with ``pickle`` would result in an un-initialized object.

This change also allows the creation of ``cache_hash=True`` classes with a custom ``__setstate__``,
which was previously forbidden (`494 <https://github.com/python-attrs/attrs/issues/494>`_).
`620 <https://github.com/python-attrs/attrs/issues/620>`_
- It is now possible to specify hooks that are called whenever an attribute is set **after** a class has been instantiated.

You can pass ``on_setattr`` both to ``attr.s()`` to set the default for all attributes on a class, and to ``attr.ib()`` to overwrite it for individual attributes.

``attrs`` also comes with a new module ``attr.setters`` that brings helpers that run validators, converters, or allow to freeze a subset of attributes.
`645 <https://github.com/python-attrs/attrs/issues/645>`_,
`660 <https://github.com/python-attrs/attrs/issues/660>`_
- **Provisional** APIs called ``attr.define()``, ``attr.mutable()``, and ``attr.frozen()`` have been added.

They are only available on Python 3.6 and later, and call ``attr.s()`` with different default values.

If nothing comes up, they will become the official way for creating classes in 20.2.0 (see above).

**Please note** that it may take some time until mypy – and other tools that have dedicated support for ``attrs`` – recognize these new APIs.
Please **do not** open issues on our bug tracker, there is nothing we can do about it.
`666 <https://github.com/python-attrs/attrs/issues/666>`_
- We have also provisionally added ``attr.field()`` that supplants ``attr.ib()``.
It also requires at least Python 3.6 and is keyword-only.
Other than that, it only dropped a few arguments, but changed no defaults.

As with ``attr.s()``: ``attr.ib()`` is not going anywhere.
`669 <https://github.com/python-attrs/attrs/issues/669>`_


----
Links

Update beautifulsoup4 from 4.9.1 to 4.10.0.

Changelog

4.10.0

* This is the first release of Beautiful Soup to only support Python
3. I dropped Python 2 support to maintain support for newer versions
(58 and up) of setuptools. See:
https://github.com/pypa/setuptools/issues/2769 [bug=1942919]

* The behavior of methods like .get_text() and .strings now differs
depending on the type of tag. The change is visible with HTML tags
like <script>, <style>, and <template>. Starting in 4.9.0, methods
like get_text() returned no results on such tags, because the
contents of those tags are not considered 'text' within the document
as a whole.

But a user who calls script.get_text() is working from a different
definition of 'text' than a user who calls div.get_text()--otherwise
there would be no need to call script.get_text() at all. In 4.10.0,
the contents of (e.g.) a <script> tag are considered 'text' during a
get_text() call on the tag itself, but not considered 'text' during
a get_text() call on the tag's parent.

Because of this change, calling get_text() on each child of a tag
may now return a different result than calling get_text() on the tag
itself. That's because different tags now have different
understandings of what counts as 'text'. [bug=1906226] [bug=1868861]

* NavigableString and its subclasses now implement the get_text()
method, as well as the properties .strings and
.stripped_strings. These methods will either return the string
itself, or nothing, so the only reason to use this is when iterating
over a list of mixed Tag and NavigableString objects. [bug=1904309]

* The 'html5' formatter now treats attributes whose values are the
empty string as HTML boolean attributes. Previously (and in other
formatters), an attribute value must be set as None to be treated as
a boolean attribute. In a future release, I plan to also give this
behavior to the 'html' formatter. Patch by Isaac Muse. [bug=1915424]

* The 'replace_with()' method now takes a variable number of arguments,
and can be used to replace a single element with a sequence of elements.
Patch by Bill Chandos. [rev=605]

* Corrected output when the namespace prefix associated with a
namespaced attribute is the empty string, as opposed to
None. [bug=1915583]

* Performance improvement when processing tags that speeds up overall
tree construction by 2%. Patch by Morotti. [bug=1899358]

* Corrected the use of special string container classes in cases when a
single tag may contain strings with different containers; such as
the <template> tag, which may contain both TemplateString objects
and Comment objects. [bug=1913406]

* The html.parser tree builder can now handle named entities
found in the HTML5 spec in much the same way that the html5lib
tree builder does. Note that the lxml HTML tree builder doesn't handle
named entities this way. [bug=1924908]

* Added a second way to pass specify encodings to UnicodeDammit and
EncodingDetector, based on the order of precedence defined in the
HTML5 spec, starting at:
https://html.spec.whatwg.org/multipage/parsing.html#parsing-with-a-known-character-encoding

Encodings in 'known_definite_encodings' are tried first, then
byte-order-mark sniffing is run, then encodings in 'user_encodings'
are tried. The old argument, 'override_encodings', is now a
deprecated alias for 'known_definite_encodings'.

This changes the default behavior of the html.parser and lxml tree
builders, in a way that may slightly improve encoding
detection but will probably have no effect. [bug=1889014]

* Improve the warning issued when a directory name (as opposed to
the name of a regular file) is passed as markup into the BeautifulSoup
constructor. [bug=1913628]

4.9.3

* Implemented a significant performance optimization to the process of
searching the parse tree. Patch by Morotti. [bug=1898212]

4.9.2

* Fixed a bug that caused too many tags to be popped from the tag
stack during tree building, when encountering a closing tag that had
no matching opening tag. [bug=1880420]

* Fixed a bug that inconsistently moved elements over when passing
a Tag, rather than a list, into Tag.extend(). [bug=1885710]

* Specify the soupsieve dependency in a way that complies with
PEP 508. Patch by Mike Nerone. [bug=1893696]

* Change the signatures for BeautifulSoup.insert_before and insert_after
(which are not implemented) to match PageElement.insert_before and
insert_after, quieting warnings in some IDEs. [bug=1897120]
Links

Update colorama from 0.4.3 to 0.4.4.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update decorator from 4.4.2 to 5.1.0.

Changelog

5.1.0

Added a function `decoratorx` using the `FunctionMaker` and thus
preserving the signature of `__code__` objects. Then fixed three small bugs:
- Sphinx was printing a few warnings when building the documentation, as
signaled by Tomasz Kłoczko
- functions decorated with `decorator.contextmanager` were one-shot,
as discovered by Alex Pizarro.
- `decorator.decorator` was not passing the kwsyntax argument.

5.0.9

Fixed a test breaking PyPy. Restored support for Sphinx.

5.0.8

Made the decorator module more robust when decorating builtin functions
lacking dunder attributes, like `dict.__setitem__`.

5.0.7

The decorator module was not passing correctly the defaults inside the
`*args` tuple, thanks to Dan Shult for the fix. Also fixed some mispellings
in the documentation and integrated codespell in the CI, thanks to 
Christian Clauss.

5.0.6

The decorator module was not copying the __module__ attribute anymore.
Thanks to Nikolay Markov for the notice.

5.0.5

Dropped support for Python < 3.5 with a substantial simplification of
the code base (now building a decorator does not require calling "exec").
Added a way to mimic functools.wraps-generated decorators.
Ported the Continuous Integration from Travis to GitHub.
Links

Update eppy from 0.5.52 to 0.5.56.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update kiwisolver from 1.2.0 to 1.3.2.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update lxml from 4.5.2 to 4.6.3.

Changelog

4.6.3

==================

Bugs fixed
----------

* A vulnerability (CVE-2021-28957) was discovered in the HTML Cleaner by Kevin Chung,
which allowed JavaScript to pass through.  The cleaner now removes the HTML5
``formaction`` attribute.

4.6.2

==================

Bugs fixed
----------

* A vulnerability (CVE-2020-27783) was discovered in the HTML Cleaner by Yaniv Nizry,
which allowed JavaScript to pass through.  The cleaner now removes more sneaky
"style" content.

4.6.1

==================

Bugs fixed
----------

* A vulnerability was discovered in the HTML Cleaner by Yaniv Nizry, which allowed
JavaScript to pass through.  The cleaner now removes more sneaky "style" content.

4.6.0

==================

Features added
--------------

* GH310: ``lxml.html.InputGetter`` supports ``__len__()`` to count the number of input fields.
Patch by Aidan Woolley.

* ``lxml.html.InputGetter`` has a new ``.items()`` method to ease processing all input fields.

* ``lxml.html.InputGetter.keys()`` now returns the field names in document order.

* GH-309: The API documentation is now generated using ``sphinx-apidoc``.
Patch by Chris Mayo.

Bugs fixed
----------

* LP1869455: C14N 2.0 serialisation failed for unprefixed attributes
when a default namespace was defined.

* ``TreeBuilder.close()`` raised ``AssertionError`` in some error cases where it
should have raised ``XMLSyntaxError``.  It now raises a combined exception to
keep up backwards compatibility, while switching to ``XMLSyntaxError`` as an
interface.
Links

Update matplotlib from 3.3.0 to 3.4.3.

Changelog

3.4.3

This is the third bugfix release of the 3.4.x series.

This release contains several critical bug-fixes:

* Clarify deprecation of `Axes.figbox`
* Disable `MultiCursor` widget on `Axes` subplots which it is not tracking
* Don't simplify path in `LineCollection.get_segments`
* Fix DPI in subfigures, affecting tick spacing, and scatter marker size
* Fix broken EPS output when using Type 42 STIX fonts
* Fix change in tick behaviour when calling `Axes.clear`
* Fix class docstrings for `Norm`s created from `Scale`s
* Fix compatibility with NumPy 1.21.0
* Fix crash on broken TrueType fonts
* Fix incorrect hits from `Path.intersects_path`
* Fix leak if affine_transform is passed invalid vertices
* Fix legends of `stackplot` with `edgecolors='face'`
* Fix plot directive when building in parallel
* Fix `supxlabel` and `supylabel` behaviour in constrained layout
* Fix tests with latest Inkscape and Ghostscript
* Improve `DateFormatter` styling for month names when `usetex=True`
* Re-disable autoscaling after interactive zoom
* Work around bug in Pillow 8.3.0

3.4.2

This is the second bugfix release of the 3.4.x series.

This release contains several critical bug-fixes:

* Generate wheels usable on older PyPy7.3.{0,1}
* Fix compatibility with Python 3.10
* Add `subplot_mosaic` Axes in the order the user gave them to us
* Correctly handle 'none' *facecolors* in `do_3d_projection`
* Ensure that Matplotlib is importable even if there's no HOME
* Fix `CenteredNorm` with *halfrange*
* Fix `bar_label` for bars with NaN values
* Fix clip paths when zoomed such that they are outside the figure
* Fix creation of `RangeSlider` with *valinit*
* Fix handling of "d" glyph in backend_ps, fixing EPS output
* Fix handling of datetime coordinates in `pcolormesh` with Pandas
* Fix processing of some `errorbar` arguments
* Fix removal of shared polar Axes
* Fix resetting grid visibility
* Fix subfigure indexing error and tight bbox
* Fix textbox cursor color
* Fix TkAgg event loop error on window close
* Ignore errors for sip with no setapi (Qt4Agg import errors)

3.4.1

This is the first bugfix release of the 3.4.x series.

This release contains several critical bug-fixes:

* fix errorbar when specifying fillstyle
* fix Inkscape cleanup at exit on Windows for tests
* fix legends of colour-mapped scatter plots
* fix positioning of annotation fancy arrows
* fix size and color rendering for 3D scatter plots
* fix suptitle manual positioning when using constrained layout
* respect antialiasing settings in cairo backends as well

3.4.0

Highlights of this release include:

- Figure and Axes creation / management
 - New subfigure functionality
 - Single-line string notation for `subplot_mosaic`
 - Changes to behavior of Axes creation methods (`gca`, `add_axes`, `add_subplot`)
 - `add_subplot`/`add_axes` gained an *axes_class* parameter
 - Subplot and subplot2grid can now work with constrained layout
- Plotting methods
 - `axline` supports transform parameter
 - New automatic labeling for bar charts
 - A list of hatches can be specified to `bar` and `barh`
 - Setting `BarContainer` orientation
 - Contour plots now default to using `ScalarFormatter`
 - `Axes.errorbar` cycles non-color properties correctly
 - `errorbar` *errorevery* parameter matches *markevery*
 - `hexbin` supports data reference for *C* parameter
 - Support callable for formatting of Sankey labels
 - `Axes.spines` access shortcuts
 - New `stairs` method and `StepPatch` artist
 - Added *orientation* parameter for stem plots
 - Angles on Bracket arrow styles
 - `TickedStroke` patheffect
- Colors and colormaps
 - Collection color specification and mapping
 - Transparency (alpha) can be set as an array in collections
 - pcolormesh has improved transparency handling by enabling snapping
 - IPython representations for Colormap objects
 - `Colormap.set_extremes` and `Colormap.with_extremes`
 - Get under/over/bad colors of Colormap objects
 - New `cm.unregister_cmap` function
 - New `CenteredNorm` for symmetrical data around a center
 - New `FuncNorm` for arbitrary normalizations
 - GridSpec-based colorbars can now be positioned above or to the left of the main axes
- Titles, ticks, and labels
 - supxlabel and supylabel
 - Shared-axes `subplots` tick label visibility is now correct for top or left labels
 - An iterable object with labels can be passed to `Axes.plot`
- Fonts and Text
 - Text transform can rotate text direction
 - `matplotlib.mathtext` now supports *overset* and *underset* LaTeX symbols
 - *math_fontfamily* parameter to change `Text` font family
 - `TextArea`/`AnchoredText` support *horizontalalignment*
 - PDF supports URLs on Text artists
- rcParams improvements
 - New rcParams for dates: set converter and whether to use interval_multiples
 - Date formatters now respect *usetex* rcParam
 - Setting *image.cmap* to a Colormap
 - Tick and tick label colors can be set independently using rcParams
- 3D Axes improvements
 - Errorbar method in 3D Axes
 - Stem plots in 3D Axes
 - 3D Collection properties are now modifiable
 - Panning in 3D Axes
- Interactive tool improvements
 - New `RangeSlider` widget
 - Sliders can now snap to arbitrary values
 - Pausing and Resuming Animations
- Sphinx extensions
 - `plot_directive` *caption* option
- Backend-specific improvements
 - Consecutive rasterized draws now merged
 - Support raw/rgba frame format in `FFMpegFileWriter`
 - nbAgg/WebAgg support middle-click and double-click
 - nbAgg support binary communication
 - Indexed color for PNG images in PDF files when possible
 - Improved font subsettings in PDF/PS
 - Kerning added to strings in PDFs
 - Fully-fractional HiDPI in QtAgg
 - wxAgg supports fullscreen toggle

3.4.0rc3

This is the third release candidate for Matplotlib 3.4.0.

3.4.0rc2

This is the second release candidate for Matplotlib 3.4.0.

3.4.0rc1

This is the first release candidate for Matplotlib 3.4.0.

3.3.4

This is the fourth bugfix release of the 3.3.x series.

This release contains several critical bug-fixes:

* Fix WebAgg initialization.
* Fix parsing `QT_API` setting with mixed case.
* Fix build with link-time optimization disabled in environment.
* Fix test compatibility with NumPy 1.20.
* Fix test compatibility with pytest 6.2.

3.3.3

This is the third bugfix release of the 3.3.x series.

This release contains several critical bug-fixes:

* Fix calls to `Axis.grid` with argument `visible=True`.
* Fix fully masked `imshow`.
* Fix inconsistent color mapping in scatter for 3D plots.
* Fix notebook/nbAgg figures when used with ipywidgets in the same cell.
* Fix notebook/nbAgg/WebAgg on older (e.g., Firefox ESR) browsers.
* Fix pcolormesh with `datetime` coordinates.
* Fix performance regression with `datetime`s.
* Fix singular ticks with small log ranges.
* Fix timers/animations on wx and notebook backends.
* Remove certifi as a hard runtime dependency.

3.3.2

This is the second bugfix release of the 3.3.x series.

This release contains several critical bug-fixes:

* fix `Axis` scale on twinned `Axes`
* fix auto-close of `Figure`s in nbagg
* fix automatic title placement if `Axes` is off the `Figure`
* fix autoranging of log scales with barstacked histogram
* fix extra redraws when using `Button` or `TextBox` widgets
* fix imshow with `LogNorm` and large vmin/vmax ranges
* fix plotting Pandas `DataFrame` with string `MultiIndex`
* fix `scatter` with `marker=''`
* fix `scatter3d` color/linewidth re-projection
* fix state of mode buttons in TkAgg backends
* include license files in built distribution
* reduce Visual C++ runtime requirements on Windows

3.3.1

This is the first bugfix release of the 3.3.x series.

This release contains several critical bug-fixes:

* fix docstring import issues when running Python with optimization
* fix `hist` with categorical data, such as with Pandas
* fix install on BSD systems
* fix nbagg compatibility with Chrome 84+
* fix ordering of scatter marker size in 3D plots
* fix performance regression when plotting `Path`s
* fix reading from URL in `imread`
* fix several regressions with new date epoch handling
* fix some bad constrained and tight layout interactions with colorbars
* fix use of customized toolbars in TkAgg and WXAgg backends
Links

Update more-itertools from 8.4.0 to 8.10.0.

Changelog

8.10.0

------

* Changes to existing functions
 * The type stub for :func:`iter_except` was improved (thanks to  MarcinKonowalczyk)

* Other changes:
 *  Type stubs now ship with the source release (thanks to saaketp)
 *  The Sphinx docs were improved (thanks to MarcinKonowalczyk)

8.9.0

-----

* New functions
 * :func:`interleave_evenly` (thanks to mbugert)
 * :func:`repeat_each` (thanks to FinalSh4re)
 * :func:`chunked_even` (thanks to valtron)
 * :func:`map_if` (thanks to sassbalint)
 * :func:`zip_broadcast` (thanks to kalekundert)

* Changes to existing functions
 * The type stub for :func:`chunked` was improved (thanks to  PhilMacKay)
 * The type stubs for :func:`zip_equal` and `zip_offset` were improved (thanks to maffoo)
 * Building Sphinx docs locally was improved (thanks to MarcinKonowalczyk)

8.8.0

-----

* New functions
 * :func:`countable` (thanks to krzysieq)

* Changes to existing functions
 * :func:`split_before` was updated to handle empy collections (thanks to TiunovNN)
 * :func:`unique_everseen` got a performance boost (thanks to Numerlor)
 * The type hint for :func:`value_chain` was corrected (thanks to vr2262)

8.7.0

-----

* New functions
 * :func:`convolve` (from the Python itertools docs)
 * :func:`product_index`, :func:`combination_index`, and :func:`permutation_index` (thanks to N8Brooks)
 * :func:`value_chain` (thanks to jenstroeger)

* Changes to existing functions
 * :func:`distinct_combinations` now uses a non-recursive algorithm (thanks to  knutdrand)
 * :func:`pad_none` is now the preferred name for :func:`padnone`, though the latter remains available.
 * :func:`pairwise` will now use the Python standard library implementation on Python 3.10+
 * :func:`sort_together` now accepts a ``key`` argument (thanks to brianmaissy)
 * :func:`seekable` now has a ``peek`` method, and can indicate whether the iterator it's wrapping is exhausted (thanks to gsakkis)
 * :func:`time_limited` can now indicate whether its iterator has expired (thanks to roysmith)
 * The implementation of :func:`unique_everseen` was improved (thanks to plammens)

* Other changes:
 * Various documentation updates (thanks to cthoyt, Evantm, and cyphase)

8.6.0

-----

* New itertools
 * :func:`all_unique` (thanks to brianmaissy)
 * :func:`nth_product` and :func:`nth_permutation` (thanks to N8Brooks)

* Changes to existing itertools
 * :func:`chunked` and :func:`sliced` now accept a ``strict`` parameter (thanks to shlomif and jtwool)

* Other changes
 * Python 3.5 has reached its end of life and is no longer supported.
 * Python 3.9 is officially supported.
 * Various documentation fixes (thanks to timgates42)

8.5.0

-----

* New itertools
 * :func:`windowed_complete` (thanks to MarcinKonowalczyk)

* Changes to existing itertools:
 * The :func:`is_sorted` implementation was improved (thanks to cool-RR)
 * The :func:`groupby_transform` now accepts a ``reducefunc`` parameter.
 * The :func:`last` implementation was improved (thanks to brianmaissy)

* Other changes
 * Various documentation fixes (thanks to craigrosie, samuelstjean, PiCT0)
 * The tests for :func:`distinct_combinations` were improved (thanks to Minabsapi)
 * Automated tests now run on GitHub Actions. All commits now check:
     * That unit tests pass
     * That the examples in docstrings work
     * That test coverage remains high (using `coverage`)
     * For linting errors (using `flake8`)
     * For consistent style (using `black`)
     * That the type stubs work (using `mypy`)
     * That the docs build correctly (using `sphinx`)
     * That packages build correctly (using `twine`)
Links

Update numpy from 1.19.1 to 1.21.2.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update pluggy from 0.13.1 to 1.0.0.

Changelog

1.0.0

=========================

Deprecations and Removals
-------------------------

- `116 <https://github.com/pytest-dev/pluggy/issues/116>`_: Remove deprecated ``implprefix`` support.
Decorate hook implementations using an instance of HookimplMarker instead.
The deprecation was announced in release ``0.7.0``.


- `120 <https://github.com/pytest-dev/pluggy/issues/120>`_: Remove the deprecated ``proc`` argument to ``call_historic``.
Use ``result_callback`` instead, which has the same behavior.
The deprecation was announced in release ``0.7.0``.


- `265 <https://github.com/pytest-dev/pluggy/issues/265>`_: Remove the ``_Result.result`` property. Use ``_Result.get_result()`` instead.
Note that unlike ``result``, ``get_result()`` raises the exception if the hook raised.
The deprecation was announced in release ``0.6.0``.


- `267 <https://github.com/pytest-dev/pluggy/issues/267>`_: Remove official support for Python 3.4.


- `272 <https://github.com/pytest-dev/pluggy/issues/272>`_: Dropped support for Python 2.
Continue to use pluggy 0.13.x for Python 2 support.


- `308 <https://github.com/pytest-dev/pluggy/issues/308>`_: Remove official support for Python 3.5.


- `313 <https://github.com/pytest-dev/pluggy/issues/313>`_: The internal ``pluggy.callers``, ``pluggy.manager`` and ``pluggy.hooks`` are now explicitly marked private by a ``_`` prefix (e.g. ``pluggy._callers``).
Only API exported by the top-level ``pluggy`` module is considered public.


- `59 <https://github.com/pytest-dev/pluggy/issues/59>`_: Remove legacy ``__multicall__`` recursive hook calling system.
The deprecation was announced in release ``0.5.0``.



Features
--------

- `282 <https://github.com/pytest-dev/pluggy/issues/282>`_: When registering a hookimpl which is declared as ``hookwrapper=True`` but whose
function is not a generator function, a ``PluggyValidationError`` exception is
now raised.

Previously this problem would cause an error only later, when calling the hook.

In the unlikely case that you have a hookwrapper that *returns* a generator
instead of yielding directly, for example:

.. code-block:: python

   def my_hook_real_implementation(arg):
       print("before")
       yield
       print("after")


   hookimpl(hookwrapper=True)
   def my_hook(arg):
       return my_hook_implementation(arg)

change it to use ``yield from`` instead:

.. code-block:: python

   hookimpl(hookwrapper=True)
   def my_hook(arg):
       yield from my_hook_implementation(arg)


- `309 <https://github.com/pytest-dev/pluggy/issues/309>`_: Add official support for Python 3.9.
Links

Update py from 1.9.0 to 1.10.0.

The bot wasn't able to find a changelog for this release. Got an idea?

Links

Update pyclipper from 1.2.0 to 1.3.0.

Changelog

1.3.0

Export `pyclipper.__version__` string (40).
Removed long-deprecated `SCALING_FACTOR` global variable.

1.2.1

No code changes in the main library. Only added wheels for Python 3.9.
Links

Update pytest from 6.0.1 to 6.2.5.

Changelog

6.2.5

=========================


Trivial/Internal Changes
------------------------

- `8494 <https://github.com/pytest-dev/pytest/issues/8494>`_: Python 3.10 is now supported.


- `9040 <https://github.com/pytest-dev/pytest/issues/9040>`_: Enable compatibility with ``pluggy 1.0`` or later.

6.2.4

=========================

Bug Fixes
---------

- `8539 <https://github.com/pytest-dev/pytest/issues/8539>`_: Fixed assertion rewriting on Python 3.10.

6.2.3

=========================

Bug Fixes
---------

- `8414 <https://github.com/pytest-dev/pytest/issues/8414>`_: pytest used to create directories under ``/tmp`` with world-readable
permissions. This means that any user in the system was able to read
information written by tests in temporary directories (such as those created by
the ``tmp_path``/``tmpdir`` fixture). Now the directories are created with
private permissions.

pytest used to silenty use a pre-existing ``/tmp/pytest-of-<username>`` directory,
even if owned by another user. This means another user could pre-create such a
directory and gain control of another user's temporary directory. Now such a
condition results in an error.

6.2.2

=========================

Bug Fixes
---------

- `8152 <https://github.com/pytest-dev/pytest/issues/8152>`_: Fixed "(<Skipped instance>)" being shown as a skip reason in the verbose test summary line when the reason is empty.


- `8249 <https://github.com/pytest-dev/pytest/issues/8249>`_: Fix the ``faulthandler`` plugin for occasions when running with ``twisted.logger`` and using ``pytest --capture=no``.

6.2.1

=========================

Bug Fixes
---------

- `7678 <https://github.com/pytest-dev/pytest/issues/7678>`_: Fixed bug where ``ImportPathMismatchError`` would be raised for files compiled in
the host and loaded later from an UNC mounted path (Windows).


- `8132 <https://github.com/pytest-dev/pytest/issues/8132>`_: Fixed regression in ``approx``: in 6.2.0 ``approx`` no longer raises
``TypeError`` when dealing with non-numeric types, falling back to normal comparison.
Before 6.2.0, array types like tf.DeviceArray fell through to the scalar case,
and happened to compare correctly to a scalar if they had only one element.
After 6.2.0, these types began failing, because they inherited neither from
standard Python number hierarchy nor from ``numpy.ndarray``.

``approx`` now converts arguments to ``numpy.ndarray`` if they expose the array
protocol and are not scalars. This treats array-like objects like numpy arrays,
regardless of size.

6.2.0

=========================

Breaking Changes
----------------

- `7808 <https://github.com/pytest-dev/pytest/issues/7808>`_: pytest now supports python3.6+ only.



Deprecations
------------

- `7469 <https://github.com/pytest-dev/pytest/issues/7469>`_: Directly constructing/calling the following classes/functions is now deprecated:

- ``_pytest.cacheprovider.Cache``
- ``_pytest.cacheprovider.Cache.for_config()``
- ``_pytest.cacheprovider.Cache.clear_cache()``
- ``_pytest.cacheprovider.Cache.cache_dir_from_config()``
- ``_pytest.capture.CaptureFixture``
- ``_pytest.fixtures.FixtureRequest``
- ``_pytest.fixtures.SubRequest``
- ``_pytest.logging.LogCaptureFixture``
- ``_pytest.pytester.Pytester``
- ``_pytest.pytester.Testdir``
- ``_pytest.recwarn.WarningsRecorder``
- ``_pytest.recwarn.WarningsChecker``
- ``_pytest.tmpdir.TempPathFactory``
- ``_pytest.tmpdir.TempdirFactory``

These have always been considered private, but now issue a deprecation warning, which may become a hard error in pytest 8.0.0.


- `7530 <https://github.com/pytest-dev/pytest/issues/7530>`_: The ``--strict`` command-line option has been deprecated, use ``--strict-markers`` instead.

We have plans to maybe in the future to reintroduce ``--strict`` and make it an encompassing flag for all strictness
related options (``--strict-markers`` and ``--strict-config`` at the moment, more might be introduced in the future).


- `7988 <https://github.com/pytest-dev/pytest/issues/7988>`_: The ``pytest.yield_fixture`` decorator/function is now deprecated. Use :func:`pytest.fixture` instead.

``yield_fixture`` has been an alias for ``fixture`` for a very long time, so can be search/replaced safely.



Features
--------

- `5299 <https://github.com/pytest-dev/pytest/issues/5299>`_: pytest now warns about unraisable exceptions and unhandled thread exceptions that occur in tests on Python>=3.8.
See :ref:`unraisable` for more information.


- `7425 <https://github.com/pytest-dev/pytest/issues/7425>`_: New :fixture:`pytester` fixture, which is identical to :fixture:`testdir` but its methods return :class:`pathlib.Path` when appropriate instead of ``py.path.local``.

This is part of the movement to use :class:`pathlib.Path` objects internally, in order to remove the dependency to ``py`` in the future.

Internally, the old :class:`Testdir <_pytest.pytester.Testdir>` is now a thin wrapper around :class:`Pytester <_pytest.pytester.Pytester>`, preserving the old interface.


- `7695 <https://github.com/pytest-dev/pytest/issues/7695>`_: A new hook was added, `pytest_markeval_namespace` which should return a dictionary.
This dictionary will be used to augment the "global" variables available to evaluate skipif/xfail/xpass markers.

Pseudo example

``conftest.py``:

.. code-block:: python

  def pytest_markeval_namespace():
      return {"color": "red"}

``test_func.py``:

.. code-block:: python

  pytest.mark.skipif("color == 'blue'", reason="Color is not red")
  def test_func():
      assert False


- `8006 <https://github.com/pytest-dev/pytest/issues/8006>`_: It is now possible to construct a :class:`~pytest.MonkeyPatch` object directly as ``pytest.MonkeyPatch()``,
in cases when the :fixture:`monkeypatch` fixture cannot be used. Previously some users imported it
from the private `_pytest.monkeypatch.MonkeyPatch` namespace.

Additionally, :meth:`MonkeyPatch.context <pytest.MonkeyPatch.context>` is now a classmethod,
and can be used as ``with MonkeyPatch.context() as mp: ...``. This is the recommended way to use
``MonkeyPatch`` directly, since unlike the ``monkeypatch`` fixture, an instance created directly
is not ``undo()``-ed automatically.



Improvements
------------

- `1265 <https://github.com/pytest-dev/pytest/issues/1265>`_: Added an ``__str__`` implementation to the :class:`~pytest.pytester.LineMatcher` class which is returned from ``pytester.run_pytest().stdout`` and similar. It returns the entire output, like the existing ``str()`` method.


- `2044 <https://github.com/pytest-dev/pytest/issues/2044>`_: Verbose mode now shows the reason that a test was skipped in the test's terminal line after the "SKIPPED", "XFAIL" or "XPASS".


- `7469 <https://github.com/pytest-dev/pytest/issues/7469>`_ The types of builtin pytest fixtures are now exported so they may be used in type annotations of test functions.
The newly-exported types are:

- ``pytest.FixtureRequest`` for the :fixture:`request` fixture.
- ``pytest.Cache`` for the :fixture:`cache` fixture.
- ``pytest.CaptureFixture[str]`` for the :fixture:`capfd` and :fixture:`capsys` fixtures.
- ``pytest.CaptureFixture[bytes]`` for the :fixture:`capfdbinary` and :fixture:`capsysbinary` fixtures.
- ``pytest.LogCaptureFixture`` for the :fixture:`caplog` fixture.
- ``pytest.Pytester`` for the :fixture:`pytester` fixture.
- ``pytest.Testdir`` for the :fixture:`testdir` fixture.
- ``pytest.TempdirFactory`` for the :fixture:`tmpdir_factory` fixture.
- ``pytest.TempPathFactory`` for the :fixture:`tmp_path_factory` fixture.
- ``pytest.MonkeyPatch`` for the :fixture:`monkeypatch` fixture.
- ``pytest.WarningsRecorder`` for the :fixture:`recwarn` fixture.

Constructing them is not supported (except for `MonkeyPatch`); they are only meant for use in type annotations.
Doing so will emit a deprecation warning, and may become a hard-error in pytest 8.0.

Subclassing them is also not supported. This is not currently enforced at runtime, but is detected by type-checkers such as mypy.


- `7527 <https://github.com/pytest-dev/pytest/issues/7527>`_: When a comparison between :func:`namedtuple <collections.namedtuple>` instances of the same type fails, pytest now shows the differing field names (possibly nested) instead of their indexes.


- `7615 <https://github.com/pytest-dev/pytest/issues/7615>`_: :meth:`Node.warn <_pytest.nodes.Node.warn>` now permits any subclass of :class:`Warning`, not just :class:`PytestWarning <pytest.PytestWarning>`.


- `7701 <https://github.com/pytest-dev/pytest/issues/7701>`_: Improved reporting when using ``--collected-only``. It will now show the number of collected tests in the summary stats.


- `7710 <https://github.com/pytest-dev/pytest/issues/7710>`_: Use strict equality comparison for non-numeric types in :func:`pytest.approx` instead of
raising :class:`TypeError`.

This was the undocumented behavior before 3.7, but is now officially a supported feature.


- `7938 <https://github.com/pytest-dev/pytest/issues/7938>`_: New ``--sw-skip`` argument which is a shorthand for ``--stepwise-skip``.


- `8023 <https://github.com/pytest-dev/pytest/issues/8023>`_: Added ``'node_modules'`` to default value for :confval:`norecursedirs`.


- `8032 <https://github.com/pytest-dev/pytest/issues/8032>`_: :meth:`doClassCleanups <unittest.TestCase.doClassCleanups>` (introduced in :mod:`unittest` in Python and 3.8) is now called appropriately.



Bug Fixes
---------

- `4824 <https://github.com/pytest-dev/pytest/issues/4824>`_: Fixed quadratic behavior and improved performance of collection of items using autouse fixtures and xunit fixtures.


- `7758 <https://github.com/pytest-dev/pytest/issues/7758>`_: Fixed an issue where some files in packages are getting lost from ``--lf`` even though they contain tests that failed. Regressed in pytest 5.4.0.


- `7911 <https://github.com/pytest-dev/pytest/issues/7911>`_: Directories created by by :fixture:`tmp_path` and :fixture:`tmpdir` are now considered stale after 3 days without modification (previous value was 3 hours) to avoid deleting directories still in use in long running test suites.


- `7913 <https://github.com/pytest-dev/pytest/issues/7913>`_: Fixed a crash or hang in :meth:`pytester.spawn <_pytest.pytester.Pytester.spawn>` when the :mod:`readline` module is involved.


- `7951 <https://github.com/pytest-dev/pytest/issues/7951>`_: Fixed handling of recursive symlinks when collecting tests.


- `7981 <https://github.com/pytest-dev/pytest/issues/7981>`_: Fixed symlinked directories not being followed during collection. Regressed in pytest 6.1.0.


- `8016 <https://github.com/pytest-dev/pytest/issues/8016>`_: Fixed only one doctest being collected when using ``pytest --doctest-modules path/to/an/__init__.py``.



Improved Documentation
----------------------

- `7429 <https://github.com/pytest-dev/pytest/issues/7429>`_: Add more information and use cases about skipping doctests.


- `7780 <https://github.com/pytest-dev/pytest/issues/7780>`_: Classes which should not be inherited from are now marked ``final class`` in the API reference.


- `7872 <https://github.com/pytest-dev/pytest/issues/7872>`_: ``_pytest.config.argparsing.Parser.addini()`` accepts explicit ``None`` and ``"string"``.


- `7878 <https://github.com/pytest-dev/pytest/issues/7878>`_: In pull request section, ask to commit after editing changelog and authors file.



Trivial/Internal Changes
------------------------

- `7802 <https://github.com/pytest-dev/pytest/issues/7802>`_: The ``attrs`` dependency requirement is now >=19.2.0 instead of >=17.4.0.


- `8014 <https://github.com/pytest-dev/pytest/issues/8014>`_: `.pyc` files created by pytest's assertion rewriting now conform to the newer PEP-552 format on Python>=3.7.
(These files are internal and only interpreted by pytest itself.)

6.1.2

=========================

Bug Fixes
---------

- `7758 <https://github.com/pytest-dev/pytest/issues/7758>`_: Fixed an issue where some files in packages are getting lost from ``--lf`` even though they contain tests that failed. Regressed in pytest 5.4.0.


- `7911 <https://github.com/pytest-dev/pytest/issues/7911>`_: Directories created by `tmpdir` are now considered stale after 3 days without modification (previous value was 3 hours) to avoid deleting directories still in use in long running test suites.



Improved Documentation
----------------------

- `7815 <https://github.com/pytest-dev/pytest/issues/7815>`_: Improve deprecation warning message for ``pytest._fillfuncargs()``.

6.1.1

=========================

Bug Fixes
---------

- `7807 <https://github.com/pytest-dev/pytest/issues/7807>`_: Fixed regression in pytest 6.1.0 causing incorrect rootdir to be determined in some non-trivial cases where parent directories have config files as well.


- `7814 <https://github.com/pytest-dev/pytest/issues/7814>`_: Fixed crash in header reporting when :confval:`testpaths` is used and contains absolute paths (regression in 6.1.0).

6.1.0

=========================

Breaking Changes
----------------

- `5585 <https://github.com/pytest-dev/pytest/issues/5585>`_: As per our policy, the following features which have been deprecated in the 5.X series are now
removed:

* The ``funcargnames`` read-only property of ``FixtureRequest``, ``Metafunc``, and ``Function`` classes. Use ``fixturenames`` attribute.

* ``pytest.fixture`` no longer supports positional arguments, pass all arguments by keyword instead.

* Direct construction of ``Node`` subclasses now raise an error, use ``from_parent`` instead.

* The default value for ``junit_family`` has changed to ``xunit2``. If you require the old format, add ``junit_family=xunit1`` to your configuration file.

* The ``TerminalReporter`` no longer has a ``writer`` attribute. Plugin authors may use the public functions of the ``TerminalReporter`` instead of accessing the ``TerminalWriter`` object directly.

* The ``--result-log`` option has been removed. Users are recommended to use the `pytest-reportlog <https://github.com/pytest-dev/pytest-reportlog>`__ plugin instead.


For more information consult
`Deprecations and Removals <https://docs.pytest.org/en/stable/deprecations.html>`__ in the docs.



Deprecations
------------

- `6981 <https://github.com/pytest-dev/pytest/issues/6981>`_: The ``pytest.collect`` module is deprecated: all its names can be imported from ``pytest`` directly.


- `7097 <https://github.com/pytest-dev/pytest/issues/7097>`_: The ``pytest._fillfuncargs`` function is deprecated. This function was kept
for backward compatibility with an older plugin.

It's functionality is not meant to be used directly, but if you must replace
it, use `function._request._fillfixtures()` instead, though note this is not
a public API and may break in the future.


- `7210 <https://github.com/pytest-dev/pytest/issues/7210>`_: The special ``-k '-expr'`` syntax to ``-k`` is deprecated. Use ``-k 'not expr'``
instead.

The special ``-k 'expr:'`` syntax to ``-k`` is deprecated. Please open an issue
if you use this and want a replacement.


- `7255 <https://github.com/pytest-dev/pytest/issues/7255>`_: The :func:`pytest_warning_captured <_pytest.hookspec.pytest_warning_captured>` hook is deprecated in favor
of :func:`pytest_warning_recorded <_pytest.hookspec.pytest_warning_recorded>`, and will be removed in a future version.


- `7648 <https://github.com/pytest-dev/pytest/issues/7648>`_: The ``gethookproxy()`` and ``isinitpath()`` methods of ``FSCollector`` and ``Package`` are deprecated;
use ``self.session.gethookproxy()`` and ``self.session.isinitpath()`` instead.
This should work on all pytest versions.



Features
--------

- `7667 <https://github.com/pytest-dev/pytest/issues/7667>`_: New ``--durations-min`` command-line flag controls the minimal duration for inclusion in the slowest list of tests shown by ``--durations``. Previously this was hard-coded to ``0.005s``.



Improvements
------------

- `6681 <https://github.com/pytest-dev/pytest/issues/6681>`_: Internal pytest warnings issued during the early stages of initialization are now properly handled and can filtered through :confval:`filterwarnings` or ``--pythonwarnings/-W``.

This also fixes a number of long standing issues: `2891 <https://github.com/pytest-dev/pytest/issues/2891>`__, `#7620 <https://github.com/pytest-dev/pytest/issues/7620>`__, `#7426 <https://github.com/pytest-dev/pytest/issues/7426>`__.


- `7572 <https://github.com/pytest-dev/pytest/issues/7572>`_: When a plugin listed in ``required_plugins`` is missing or an unknown config key is used with ``--strict-config``, a simple error message is now shown instead of a stacktrace.


- `7685 <https://github.com/pytest-dev/pytest/issues/7685>`_: Added two new attributes :attr:`rootpath <_pytest.config.Config.rootpath>` and :attr:`inipath <_pytest.config.Config.inipath>` to :class:`Config <_pytest.config.Config>`.
These attributes are :class:`pathlib.Path` versions of the existing :attr:`rootdir <_pytest.config.Config.rootdir>` and :attr:`inifile <_pytest.config.Config.inifile>` attributes,
and should be preferred over them when possible.


- `7780 <https://github.com/pytest-dev/pytest/issues/7780>`_: Public classes which are not designed to be inherited from are now marked `final <https://docs.python.org/3/library/typing.html#typing.final>`_.
Code which inherits from these classes will trigger a type-checking (e.g. mypy) error, but will still work in runtime.
Currently the ``final`` designation does not appear in the API Reference but hopefully will in the future.



Bug Fixes
---------

- `1953 <https://github.com/pytest-dev/pytest/issues/1953>`_: Fixed error when overwriting a parametrized fixture, while also reusing the super fixture value.

.. code-block:: python

    conftest.py
   import pytest


   pytest.fixture(params=[1, 2])
   def foo(request):
       return request.param


    test_foo.py
   import pytest


   pytest.fixture
   def foo(foo):
       return foo * 2


- `4984 <https://github.com/pytest-dev/pytest/issues/4984>`_: Fixed an internal error crash with ``IndexError: list index out of range`` when
collecting a module which starts with a decorated function, the decorator
raises, and assertion rewriting is enabled.


- `7591 <https://github.com/pytest-dev/pytest/issues/7591>`_: pylint shouldn't complain anymore about unimplemented abstract methods when inheriting from :ref:`File <non-python tests>`.


- `7628 <https://github.com/pytest-dev/pytest/issues/7628>`_: Fixed test collection when a full path without a drive letter was passed to pytest on Windows (for example ``\projects\tests\test.py`` instead of ``c:\projects\tests\pytest.py``).


- `7638 <https://github.com/pytest-dev/pytest/issues/7638>`_: Fix handling of command-line options that appear as paths but trigger an OS-level syntax error on Windows, such as the options used internally by ``pytest-xdist``.


- `7742 <https://github.com/pytest-dev/pytest/issues/7742>`_: Fixed INTERNALERROR when accessing locals / globals with faulty ``exec``.



Improved Documentation
----------------------

- `1477 &lt

@pyup-bot
Copy link
Collaborator Author

pyup-bot commented Dec 1, 2021

Closing this in favor of #229

@pyup-bot pyup-bot closed this Dec 1, 2021
@jamiebull1 jamiebull1 deleted the pyup-scheduled-update-2021-10-01 branch December 1, 2021 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant