Changelog
### 5.1.1
```
=====
:release-date: 2022-03-06 12:45 P.M. UTC+6:00
:release-by: Asif Saif Uddin
- Use AF_UNSPEC for name resolution (389).
.. _version-5.1.0:
```
### 5.1.0
```
=====
:release-date: 2022-03-06 10:05 A.M. UTC+6:00
:release-by: Asif Saif Uddin
- Improve performance of _get_free_channel_id, fix channel max bug (385).
- Document memoryview usage, minor frame_writer.write_frame refactor (384).
- Start dropping python 3.6 (387).
- Added experimental __slots__ to some classes (368)
- Relaxed vine version for upcoming release.
- Upgraded topytest 7 (388).
.. _version-5.0.9:
```
### 5.0.9
```
=====
:release-date: 2021-12-20 11:00 A.M. UTC+6:00
:release-by: Asif Saif Uddin
- Append to _used_channel_ids in _used_channel_ids
.. _version-5.0.8:
```
### 5.0.8
```
=====
:release-date: 2021-12-19 11:15 A.M. UTC+6:00
:release-by: Asif Saif Uddin
- Reduce memory usage of Connection (377)
- Add additional error handling around code where an OSError
may be raised on failed connections. Fixes (378)
.. _version-5.0.7:
```
### 5.0.7
```
=====
:release-date: 2021-12-13 15:45 P.M. UTC+6:00
:release-by: Asif Saif Uddin
- Remove dependency to case
- Bugfix: not closing socket after server disconnect
.. _version-5.0.6:
```
### 5.0.6
```
=====
:release-date: 2021-04-01 10:45 A.M. UTC+6:00
:release-by: Asif Saif Uddin
- Change the order in which context.check_hostname and context.verify_mode get set
in SSLTransport._wrap_socket_sni. Fixes bug introduced in 5.0.3 where setting
context.verify_mode = ssl.CERT_NONE would raise
"ValueError: Cannot set verify_mode to CERT_NONE when check_hostname is enabled."
Setting context.check_hostname prior to setting context.verify_mode resolves the
issue.
- Remove TCP_USER_TIMEOUT option for Solaris (355)
- Pass long_description to setup() (353)
- Fix for tox-docker 2.0
- Moved to GitHub actions CI (359)
.. _version-5.0.5:
```
### 5.0.5
```
=====
:release-date: 2021-01-28 4:30 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Removed mistakenly introduced code which was causing import errors
.. _version-5.0.4:
```
### 5.0.4
```
=====
:release-date: 2021-01-28 2:30 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Add missing load_default_certs() call to fix a regression in v5.0.3 release. (350)
.. _version-5.0.3:
```
### 5.0.3
```
=====
:release-date: 2021-01-19 9:00 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Change the default value of ssl_version to None. When not set, the
proper value between ssl.PROTOCOL_TLS_CLIENT and ssl.PROTOCOL_TLS_SERVER
will be selected based on the param server_side in order to create
a TLS Context object with better defaults that fit the desired
connection side.
- Change the default value of cert_reqs to None. The default value
of ctx.verify_mode is ssl.CERT_NONE, but when ssl.PROTOCOL_TLS_CLIENT
is used, ctx.verify_mode defaults to ssl.CERT_REQUIRED.
- Fix context.check_hostname logic. Checking the hostname depends on
having support of the SNI TLS extension and being provided with a
server_hostname value. Another important thing to mention is that
enabling hostname checking automatically sets verify_mode from
ssl.CERT_NONE to ssl.CERT_REQUIRED in the stdlib ssl and it cannot
be set back to ssl.CERT_NONE as long as hostname checking is enabled.
- Refactor the SNI tests to test one thing at a time and removing some
tests that were being repeated over and over.
.. _version-5.0.2:
```
### 5.0.2
```
=====
:release-date: 2020-11-08 6:50 P.M UTC+3:00
:release-by: Omer Katz
- Whhels are no longer universal.
Contributed by **Omer Katz**
- Added debug representation to Connection and *Transport classes
Contributed by **Matus Valo**
- Reintroduce ca_certs and ciphers parameters of SSLTransport._wrap_socket_sni()
This fixes issue introduced in commit: 53d6777
Contributed by **Matus Valo**
- Fix infinite wait when using confirm_publish
Contributed by **Omer Katz** & **RezaSi**
.. _version-5.0.1:
```
### 5.0.1
```
=====
:release-date: 2020-09-06 6:10 P.M UTC+3:00
:release-by: Omer Katz
- Require vine 5.0.0.
Contributed by **Omer Katz**
.. _version-5.0.0:
```
### 5.0.0
```
=====
:release-date: 2020-09-03 3:20 P.M UTC+3:00
:release-by: Omer Katz
- Stop to use deprecated method ssl.wrap_socket.
Contributed by **Hervé Beraud**
.. _version-5.0.0b1:
```
### 5.0.0b1
```
=======
:release-date: 2020-09-01 6:20 P.M UTC+3:00
:release-by: Omer Katz
- Dropped Python 3.5 support.
Contributed by **Omer Katz**
- Removed additional compatibility code.
Contributed by **Omer Katz**
.. _version-5.0.0a1:
```
### 5.0.0a1
```
=======
:release-date: 2019-04-01 4:30 P.M UTC+3:00
:release-by: Omer Katz
- Dropped Python 2.x support.
Contributed by **Omer Katz**
- Dropped Python 3.4 support.
Contributed by **Omer Katz**
- Depend on :pypi:`vine` 5.0.0a1.
Contributed by **Omer Katz**
Code Cleanups & Improvements:
- **Omer Katz**
.. _version-2.6.0:
```
### 2.6.1
```
=====
:release-date: 2020-07-31 10.30 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Fix buffer overflow in frame_writer after frame_max is increased. `frame_writer`
allocates a `bytearray` on initialization with a length based on the `connection.frame_max`
value. If `connection.frame_max` is changed to a larger value, this causes an
error like `pack_into requires a buffer of at least 408736 bytes`.
.. _version-2.6.0:
```
### 2.6.0
```
=====
:release-date: 20-06-01 12.00 P.M UTC+6:00
:release-by: Asif Saif Uddin
- Implement speedups in cython (311)
- Updated some tests & code improvements
- Separate logger for Connection.heartbeat_tick method
- Cython generic content (315)
- Improve documentation a_global parameter of basic_qos() method.
- Fix saving partial read buffer on windows during socket timeout. (321)
- Fix deserialization of long string field values that are not utf-8.
- Added simple cythonization of abstract_channel.py
- Speedups of serialization.py are more restrictive
.. _version-2.5.2:
```
Links
- PyPI: https://pypi.org/project/amqp
- Changelog: https://pyup.io/changelogs/amqp/
- Repo: http://github.com/celery/py-amqp
Changelog
### 22.1.0
```
-------------------
Backwards-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Python 2.7 is not supported anymore.
Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project.
We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues.
All version up to 21.4.0 from December 2021 remain fully functional, of course.
`936 <https://github.com/python-attrs/attrs/issues/936>`_
- The deprecated ``cmp`` attribute of ``attrs.Attribute`` has been removed.
This does not affect the *cmp* argument to ``attr.s`` that can be used as a shortcut to set *eq* and *order* at the same time.
`939 <https://github.com/python-attrs/attrs/issues/939>`_
Changes
^^^^^^^
- Instantiation of frozen slotted classes is now faster.
`898 <https://github.com/python-attrs/attrs/issues/898>`_
- If an ``eq`` key is defined, it is also used before hashing the attribute.
`909 <https://github.com/python-attrs/attrs/issues/909>`_
- Added ``attrs.validators.min_len()``.
`916 <https://github.com/python-attrs/attrs/issues/916>`_
- ``attrs.validators.deep_iterable()``'s *member_validator* argument now also accepts a list of validators and wraps them in an ``attrs.validators.and_()``.
`925 <https://github.com/python-attrs/attrs/issues/925>`_
- Added missing type stub re-imports for ``attrs.converters`` and ``attrs.filters``.
`931 <https://github.com/python-attrs/attrs/issues/931>`_
- Added missing stub for ``attr(s).cmp_using()``.
`949 <https://github.com/python-attrs/attrs/issues/949>`_
- ``attrs.validators._in()``'s ``ValueError`` is not missing the attribute, expected options, and the value it got anymore.
`951 <https://github.com/python-attrs/attrs/issues/951>`_
- Python 3.11 is now officially supported.
`969 <https://github.com/python-attrs/attrs/issues/969>`_
----
```
### 21.4.0
```
-------------------
Changes
^^^^^^^
- Fixed the test suite on PyPy3.8 where ``cloudpickle`` does not work.
`892 <https://github.com/python-attrs/attrs/issues/892>`_
- Fixed ``coverage report`` for projects that use ``attrs`` and don't set a ``--source``.
`895 <https://github.com/python-attrs/attrs/issues/895>`_,
`896 <https://github.com/python-attrs/attrs/issues/896>`_
----
```
### 21.3.0
```
-------------------
Backward-incompatible Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- When using ``define``, converters are now run by default when setting an attribute on an instance -- additionally to validators.
I.e. the new default is ``on_setattr=[attrs.setters.convert, attrs.setters.validate]``.
This is unfortunately a breaking change, but it was an oversight, impossible to raise a ``DeprecationWarning`` about, and it's better to fix it now while the APIs are very fresh with few users.
`835 <https://github.com/python-attrs/attrs/issues/835>`_,
`886 <https://github.com/python-attrs/attrs/issues/886>`_
- ``import attrs`` has finally landed!
As of this release, you can finally import ``attrs`` using its proper name.
Not all names from the ``attr`` namespace have been transferred; most notably ``attr.s`` and ``attr.ib`` are missing.
See ``attrs.define`` and ``attrs.field`` if you haven't seen our next-generation APIs yet.
A more elaborate explanation can be found `On The Core API Names <https://www.attrs.org/en/latest/names.html>`_
This feature is at least for one release **provisional**.
We don't *plan* on changing anything, but such a big change is unlikely to go perfectly on the first strike.
The API docs have been mostly updated, but it will be an ongoing effort to change everything to the new APIs.
Please note that we have **not** moved -- or even removed -- anything from ``attr``!
Please do report any bugs or documentation inconsistencies!
`887 <https://github.com/python-attrs/attrs/issues/887>`_
Changes
^^^^^^^
- ``attr.asdict(retain_collection_types=False)`` (default) dumps collection-esque keys as tuples.
`646 <https://github.com/python-attrs/attrs/issues/646>`_,
`888 <https://github.com/python-attrs/attrs/issues/888>`_
- ``__match_args__`` are now generated to support Python 3.10's
`Structural Pattern Matching <https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching>`_.
This can be controlled by the ``match_args`` argument to the class decorators on Python 3.10 and later.
On older versions, it is never added and the argument is ignored.
`815 <https://github.com/python-attrs/attrs/issues/815>`_
- If the class-level *on_setattr* is set to ``attrs.setters.validate`` (default in ``define`` and ``mutable``) but no field defines a validator, pretend that it's not set.
`817 <https://github.com/python-attrs/attrs/issues/817>`_
- The generated ``__repr__`` is significantly faster on Pythons with f-strings.
`819 <https://github.com/python-attrs/attrs/issues/819>`_
- Attributes transformed via ``field_transformer`` are wrapped with ``AttrsClass`` again.
`824 <https://github.com/python-attrs/attrs/issues/824>`_
- Generated source code is now cached more efficiently for identical classes.
`828 <https://github.com/python-attrs/attrs/issues/828>`_
- Added ``attrs.converters.to_bool()``.
`830 <https://github.com/python-attrs/attrs/issues/830>`_
- ``attrs.resolve_types()`` now resolves types of subclasses after the parents are resolved.
`842 <https://github.com/python-attrs/attrs/issues/842>`_
`843 <https://github.com/python-attrs/attrs/issues/843>`_
- Added new validators: ``lt(val)`` (< val), ``le(va)`` (≤ val), ``ge(val)`` (≥ val), ``gt(val)`` (> val), and ``maxlen(n)``.
`845 <https://github.com/python-attrs/attrs/issues/845>`_
- ``attrs`` classes are now fully compatible with `cloudpickle <https://github.com/cloudpipe/cloudpickle>`_ (no need to disable ``repr`` anymore).
`857 <https://github.com/python-attrs/attrs/issues/857>`_
- Added new context manager ``attrs.validators.disabled()`` and functions ``attrs.validators.(set|get)_disabled()``.
They deprecate ``attrs.(set|get)_run_validators()``.
All functions are interoperable and modify the same internal state.
They are not – and never were – thread-safe, though.
`859 <https://github.com/python-attrs/attrs/issues/859>`_
- ``attrs.validators.matches_re()`` now accepts pre-compiled regular expressions in addition to pattern strings.
`877 <https://github.com/python-attrs/attrs/issues/877>`_
----
```
### 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 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/main/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 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>`_.
`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
- PyPI: https://pypi.org/project/attrs
- Changelog: https://pyup.io/changelogs/attrs/
- Homepage: https://www.attrs.org/
Changelog
### 4.11.0
```
* Ported unit tests to use pytest.
* Added special string classes, RubyParenthesisString and RubyTextString,
to make it possible to treat ruby text specially in get_text() calls.
[bug=1941980]
* It's now possible to customize the way output is indented by
providing a value for the 'indent' argument to the Formatter
constructor. The 'indent' argument works very similarly to the
argument of the same name in the Python standard library's
json.dump() function. [bug=1955497]
* If the charset-normalizer Python module
(https://pypi.org/project/charset-normalizer/) is installed, Beautiful
Soup will use it to detect the character sets of incoming documents.
This is also the module used by newer versions of the Requests library.
For the sake of backwards compatibility, chardet and cchardet both take
precedence if installed. [bug=1955346]
* Added a workaround for an lxml bug
(https://bugs.launchpad.net/lxml/+bug/1948551) that causes
problems when parsing a Unicode string beginning with BYTE ORDER MARK.
[bug=1947768]
* Issue a warning when an HTML parser is used to parse a document that
looks like XML but not XHTML. [bug=1939121]
* Do a better job of keeping track of namespaces as an XML document is
parsed, so that CSS selectors that use namespaces will do the right
thing more often. [bug=1946243]
* Some time ago, the misleadingly named "text" argument to find-type
methods was renamed to the more accurate "string." But this supposed
"renaming" didn't make it into important places like the method
signatures or the docstrings. That's corrected in this
version. "text" still works, but will give a DeprecationWarning.
[bug=1947038]
* Fixed a crash when pickling a BeautifulSoup object that has no
tree builder. [bug=1934003]
* Fixed a crash when overriding multi_valued_attributes and using the
html5lib parser. [bug=1948488]
* Standardized the wording of the MarkupResemblesLocatorWarning
warnings to omit untrusted input and make the warnings less
judgmental about what you ought to be doing. [bug=1955450]
* Removed support for the iconv_codec library, which doesn't seem
to exist anymore and was never put up on PyPI. (The closest
replacement on PyPI, iconv_codecs, is GPL-licensed, so we can't use
it--it's also quite old.)
```
### 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]
```
### 4.9.1
```
* Added a keyword argument 'on_duplicate_attribute' to the
BeautifulSoupHTMLParser constructor (used by the html.parser tree
builder) which lets you customize the handling of markup that
contains the same attribute more than once, as in:
<a href="url1" href="url2"> [bug=1878209]
* Added a distinct subclass, GuessedAtParserWarning, for the warning
issued when BeautifulSoup is instantiated without a parser being
specified. [bug=1873787]
* Added a distinct subclass, MarkupResemblesLocatorWarning, for the
warning issued when BeautifulSoup is instantiated with 'markup' that
actually seems to be a URL or the path to a file on
disk. [bug=1873787]
* The new NavigableString subclasses (Stylesheet, Script, and
TemplateString) can now be imported directly from the bs4 package.
* If you encode a document with a Python-specific encoding like
'unicode_escape', that encoding is no longer mentioned in the final
XML or HTML document. Instead, encoding information is omitted or
left blank. [bug=1874955]
* Fixed test failures when run against soupselect 2.0. Patch by Tomáš
Chvátal. [bug=1872279]
```
### 4.9.0
```
* Added PageElement.decomposed, a new property which lets you
check whether you've already called decompose() on a Tag or
NavigableString.
* Embedded CSS and Javascript is now stored in distinct Stylesheet and
Script tags, which are ignored by methods like get_text() since most
people don't consider this sort of content to be 'text'. This
feature is not supported by the html5lib treebuilder. [bug=1868861]
* Added a Russian translation by 'authoress' to the repository.
* Fixed an unhandled exception when formatting a Tag that had been
decomposed.[bug=1857767]
* Fixed a bug that happened when passing a Unicode filename containing
non-ASCII characters as markup into Beautiful Soup, on a system that
allows Unicode filenames. [bug=1866717]
* Added a performance optimization to PageElement.extract(). Patch by
Arthur Darcet.
```
### 4.8.2
```
* Added Python docstrings to all public methods of the most commonly
used classes.
* Added a Chinese translation by Deron Wang and a Brazilian Portuguese
translation by Cezar Peixeiro to the repository.
* Fixed two deprecation warnings. Patches by Colin
Watson and Nicholas Neumann. [bug=1847592] [bug=1855301]
* The html.parser tree builder now correctly handles DOCTYPEs that are
not uppercase. [bug=1848401]
* PageElement.select() now returns a ResultSet rather than a regular
list, making it consistent with methods like find_all().
```
Links
- PyPI: https://pypi.org/project/beautifulsoup4
- Changelog: https://pyup.io/changelogs/beautifulsoup4/
- Homepage: https://www.crummy.com/software/BeautifulSoup/bs4/
Changelog
### 1.5
```
-----------
Released 2022-07-17
- Support Python >= 3.7 and PyPy. Python 2, Python < 3.7, and Jython
may continue to work, but the next release will make incompatible
changes.
```
Links
- PyPI: https://pypi.org/project/blinker
- Changelog: https://pyup.io/changelogs/blinker/
- Docs: https://blinker.readthedocs.io
Changelog
### 3.0
```
--------------------
* bugfixes:
- 5046 Webgl problem in stream app with multiple glyphs
- 6669 [component: bokehjs] BoxAnnotation does not appear to handle formal NumberSpec
- 8168 [component: bokehjs] Strange behavior with BoxSelectTool when click+dragging on toolbar
- 8332 [component: bokehjs] Autohide toolbar quirks
- 8346 [component: bokehjs] update datasource cause error with webgl backend
- 8469 Modifying a child element in a tab causes the whole tab to rerender
- 8531 [component: bokehjs] Save tool in gridplot initiates multiple downloads
- 8684 Allow at least partial alignment of fixed sized frames
- 9113 [component: bokehjs] Empty group widgets don't size properly once populated
- 9133 [BUG] Tabs ignore explicitly set dimensions
- 9208 [component: bokehjs] [BUG] sizing_mode='stretch_width' makes plot too wide if scrollbar is showing
- 9320 [BUG] Bokeh rendering performance
- 9448 [component: bokehjs] [BUG] Google Fonts not loading on Glyph on standalone HTML until interacting with Glyph
- 9744 [component: bokehjs] [BUG] bokeh server layout overlap on toggle visibility
- 9763 [BUG] `gridplot` `merge_tools` removes distinct tools it thinks are repeated, e.g., `xpan` and `ypan`
- 9764 [component: bokehjs] [BUG] MultiChoice placeholder text not displayed
- 9992 [component: bokehjs] [BUG] Select widget hiding tabs, when selecting a plot
- 10125 [component: bokehjs] [BUG] widgets overlap each other
- 10183 [component: server] [BUG] Processing of HTTP request arguments (server_document) and num-procs > 1
- 10355 [component: bokehjs] [BUG] Toolbar cropped when using tabbed auto-width
- 10377 [component: docs] Documentation examples produce inconsistently named output files
- 10621 [component: bokehjs] [BUG] [MINOR] 2.3.0dev3, plot's inner_width property always sent on redraw even if unchanged
- 10804 [BUG] export does not respect current theme
- 11033 [component: bokehjs] [BUG] add_layout(LinearAxis) in click handler crashes client
- 11116 [component: bokehjs] [BUG] ColorBars do not update when their properties are updated
- 11205 [component: bokehjs] [BUG] Hover tooltip breaks with full-circle wedge
- 11339 [BUG] Toggling layout's visibility results with overlapping widgets
- 11462 [component: bokehjs] [BUG] Existing ColorBar tick-digits don't react to theme changes
- 11475 [component: bokehjs] [BUG] SVG export breaks for Wedges
- 11623 [BUG] Placement of toolbar location is broken for gridplots
- 11643 Refs are not resolved in data models' default values
- 11673 [component: bokehjs] [BUG] JavaScript error when setting LabelSet text to None
- 11694 Custom extension breaks with id as key in a dict param
- 11750 [component: bokehjs] [BUG] Hover tool takes long time to render (-> 11629)
- 11770 [component: bokehjs] [BUG] Linking an axis range can lead to other axis range autoscaling improperly
- 11776 [component: bokehjs] Dynamically changing the color palette of a color mapper
- 11803 [component: bokehjs] [BUG] Message containing ModelChangeEvents for all properties sent back to server on initialization
- 11822 [component: tests] Tests using headless chrome are completely broken
- 11838 [component: bokehjs] [BUG] incorrect scalling for the zoom-out tool
- 11839 [BUG] PanTool can't be deactivated in grid plot
- 11877 [component: bokehjs] ImageURL blinks when the datasource updated
- 11930 [BUG] major_label_overrides are not applied if the overrides are float but the original labels are int
- 11946 [component: bokehjs] Re-rendering a layout causes menus to be removed from DOM
- 11963 [BUG] Option groups of the Select widget are sorted
- 11981 [component: build] BokehJS build failing in release CI
- 11985 [component: docs] Docs Search results are messed up
- 11999 [component: bokehjs] Rendering happens on every mouse move with inspections enabled
- 12001 [component: bokehjs] [BUG] Failure of push_notebook() to update colormapper of a colorbar
- 12033 [component: bokehjs] [BUG] Incorrect handling of step by DateRangeSlider
- 12047 [BUG] Jumpy scroll on mobile
- 12080 [BUG] examples/plotting/file/image.py no longer works
- 12101 [component: docs] Misplaces BokehJS Sphinx embeds
- 12115 [component: bokehjs] [FEATURE] Expose itemSelectText option on the MultiChoice widget
- 12123 [BUG] Allow to extend vertically a TextAreaInput
- 12127 [component: bokehjs] [BUG] LabelSet doesn't check type for text
- 12133 [component: docs] Docs are missing GA code
- 12142 [component: bokehjs] [BUG] Mathjax 3.2.1 breaks Bokeh
- 12145 [component: examples] [BUG] Examples/Apps/Stocks has broken URL
- 12150 [component: docs] Links for download badges in readme don't go anywhere
- 12155 [component: bokehjs] [BUG] Inlined RadioGroup widget doesn't extend enough horizontally
- 12162 [component: bokehjs] [BUG] step(mode="center", ...) renders incorrectly on canvas if coordinates contain NaN
- 12176 [component: examples] [BUG] examples/app/gaminder: year 2013 (the latest year in the data set) is not presented in the Gapminder visualization
- 12204 [component: bokehjs] [BUG] Setting datatable selectable to False leads to an error when trying to sort
- 12205 [component: bokehjs] [BUG] Div with stretch_width doesn't stretch
- 12207 [component: bokehjs] [BUG] image_rgba selection
- 12232 [BUG] Bokeh 3.0.0 cannot serialize Pandas Dataframe
- 12238 Many hidden type errors due to wrong mypy config
- 12250 [BUG] ContourColorBar does not support theme
- 12280 [component: bokehjs] [BUG] Combine alpha values by multiplying together
- 12313 [BUG] range no longer works with ColumnDataSource
- 12357 [component: bokehjs] [BUG] webgl breaks shared brushing
- 12361 [component: bokehjs] [BUG] Canvas backend doesn't always render marker vector line_width correctly
- 12378 [component: docs] [BUG] Links in "First steps" documentation all broken
- 12386 [component: docs] python/js reported version mismatch
- 12404 [component: examples] Jitter example is broken
- 12405 [component: bokehjs] gridplot examples layouts are broken
- 12412 [component: bokehjs] [BUG] Canvas step glyph sometimes renders with incorrect alpha
- 12416 [component: docs] Custom extension examples not rendering
- 12418 [component: bokehjs] Lasso overlay is broken
- 12447 [component: bokehjs] Toolbar interferes with tooltip
- 12448 [component: bokehjs] `GridPlot` needs better defaults for rows/cols sizing
- 12453 [component: bokehjs] Sizing mode example is broken
- 12456 [component: bokehjs] DOM drag/selection issue
- 12462 [component: docs] [BUG] Sphinx warnings while building documentation
- 12465 [component: bokehjs] [BUG] DataTable cell content gets overprinted if DataTable is used within a TabPanel
- 12479 [component: bokehjs] [BUG] Figure p in column(gridplot([[p]])) not rendered when adding another figure like this: column(p, gridplot([[p]]))
- 12494 [component: examples] Ion slider extension example broken
- 12506 ContourRenderer disregards line_color=None
- 11717 [component: bokehjs] Fix bokehjs normally distributed random numbers
- 11821 Update branches in CI workflow configurations
- 11928 [component: bokehjs] Fix gmaps' support and remove special handling
- 11932 [component: build] Update versions of all packages in `package-lock.json`
- 11959 Discover unstable defaults in `HasProps.__init__()`
- 11986 [component: build] Fix `package-lock.json` and `update_bokehjs_versions()`
- 12057 [component: bokehjs] Robustify initialization of ndarrays
- 12067 [component: bokehjs] Don't excessively check if fonts were loaded
- 12174 [component: bokehjs] Fix canvas rendering of step glyph containing NaN
- 12196 [component: bokehjs] Remove id attribute of bk-root after plotting
- 12248 [component: bokehjs] Hide lower colors and labels when using EqHist rescale_discrete_levels
- 12265 [component: docs] Pin sphinx to version >=5,<5.1
- 12285 Split up too long lines after flake8 upgrade
- 12289 [component: docs] grammatically updated the tech docs
- 12330 [component: tests] Improve compatibility with Python 3.10.6 in tests
- 12344 [component: tests] Fix flake8 bokeh -> src/bokeh after PR 12338
- 12362 [component: bokehjs] Fix WebGL rendering of marker with size 0
- 12520 [component: docs] Restore strict docs build
* features:
- 1666 [component: bokehjs] Flip images when ranges are reversed
- 1763 [component: bokehjs] Support anchor property for Image and ImageRGBA
- 3799 Linked Crosshair
- 3819 Toolbar Improvements: Make tools independent of bar
- 4371 [component: bokehjs] Plot.y_range / Plot.x_range initial start/end values not set
- 4403 Better defaults for resize event
- 4568 [component: bokehjs] Allow active specification on gridplot toolbar
- 4698 [component: bokehjs] Feature: Add "dbl-click to reset zoom" on BoxZoomTool
- 4817 layout vertical alignment with buttons
- 5135 [component: bokehjs] Pan and Zoom tools should be configurable (limit to x or y axis only) via UI
- 5241 x_axis_type not in fuzzy matching for figure args
- 6031 Latex axis and title labels
- 6372 [component: docs] Add signatures to model objects
- 8360 Add a Figure.contour method
- 8364 Autohide toolbar should work with gridplot
- 8727 [component: bokehjs] Tooltip on widgets
- 8847 [component: bokehjs] RadioButtonGroup orientation vertical
- 9086 [component: server] [FEATURE] add favicon support to Bokeh server
- 9498 [FEATURE] Bokeh Sizing mode that inherits from parent
- 9518 [component: bokehjs] Allow binary data, streaming and patching outside data sources
- 9552 [component: bokehjs] [FEATURE] Placeholder text for FileInput
- 9920 [component: bokehjs] Set themes using bokehjs
- 9935 [component: bokehjs] Add context formatter option to DatetimeTickFormatter
- 10533 [component: bokehjs] [FEATURE] Add x-box-select & y-box-select specific icons.
- 10914 [component: bokehjs] [FEATURE] Add custom_tooltip and custom_icon to all tools (not implemented in SelectTools)
- 10990 Add style attribute to all widgets
- 11500 [FEATURE] Support xyzservices in basemap tiles
- 11596 Allow data models to inherit from non data models
- 11638 [component: bokehjs] [FEATURE] MultiChoice widget sorts options by default
- 11704 [FEATURE] Include glyph sizing in plot range calculations
- 11806 [component: bokehjs] [FEATURE] Add function to get adjacent nodes by selecting node.
- 11881 [FEATURE] Expose a file name parameter in SaveTool
- 11908 [FEATURE] remove_tools() function for plots
- 12066 [component: docs] [FEATURE] Link documented sampledata to standalone example
- 12089 [component: server] [FEATURE] Make bokeh server listen to unix socket
- 12171 [component: bokehjs] [FEATURE] Batch rendering of many glyphs on the same plot
- 12179 [FEATURE] Add support for text outlines with annotations
- 12181 [component: bokehjs] [FEATURE] Allow `embed_item` to optionally take an element instead of an ID
- 12272 [FEATURE] Allow AutocompleteInput min_characters=0
- 12273 [component: bokehjs] [FEATURE] Box_Zoom_Tool that allows zooming in only width, height, or both dimensions in one tool
- 12438 [FEATURE] Add a parameter to limit the number of completion strings displayed by `AutocompleteInput`
- 11122 Add support for basic glyph decorations
- 11639 [component: bokehjs] Various bokehjs API improvements and new examples
- 11697 [component: bokehjs] Expose plotting subcoordinates API in bokehjs
- 11842 [component: bokehjs] Add block glyph
- 11871 [component: bokehjs] Implement a bokehjs development/diagnostics tool
- 11926 Allow to place toolbars inside the frame
- 11933 Add support for a checkbox-like Switch widget
- 12020 Add contouring
- 12030 Add support for `np.array(..., dtype="bool")`
- 12054 Generalize filtering on CDS views
- 12213 [component: bokehjs] Add ColorBar.display_low and display_high
- 12244 [component: bokehjs] Add support for cross bounds to grid lines
- 12263 varying_alpha_palette helper function
- 12268 [component: tests] Add support for async `expect().to.throw()`
- 12270 [component: bokehjs] Allow to stop throttled functions
- 12271 Add parameterized `NonNegative` and `Positive` properties
- 12276 Introduce `canvas` coordinate units to remove `for_hover`, etc.
- 12329 [component: server] Provide method to modify Server before start
- 12467 [component: docs] Tabbed gallery
- 12473 [component: docs] Add server examples to main gallery
* tasks:
- 4388 [component: tests] Missing layout tests
- 5653 [component: tests] Add tests to ensure server events do not boomerang client-side
- 6339 Use js Map instead of plain objects for properties like ColumnDataSource.data
- 6574 [component: examples] Add more examples to bokehjs
- 6591 [component: docs] Make it clear which annotations can and can not be preserved with save tool
- 8188 [component: examples] Example app "dashboard" unsuccessful on wide screen
- 8458 Simplify the JSON representation
- 9731 Drop support for legacy web browsers
- 9757 [component: bokehjs] Investigate using shadow DOM to gain proper isolation
- 9907 Improve Auth Request Handler hierarchy
- 10007 [BUG] Importing bokeh is VERY slow
- 10090 Deprecate ragged array case in ImageBase.image
- 10424 [component: bokehjs] [BUG] Toggle on_click is fired when "active" is changed from Python side
- 10463 [component: docs] [BUG] bokeh authentication example checks only whether `user` cookie is set
- 10746 Make figure a class?
- 10840 [component: tests] Type errors in build should not stop tests from running
- 11347 [component: bokehjs] Simplify DatatimeTickFormatter format properties
- 11352 [component: docs] Docker container for dev environment
- 11355 [component: docs] Add LaTeX rendering to elements
- 11356 [component: docs] Examples demonstrating LaTeX capabilities
- 11357 [component: docs] Update docs for LaTeX capabilities
- 11358 [component: tests] Tests for LaTeX capabilities
- 11359 PNG export for LaTeX
- 11363 [component: docs] Export LaTeX to SVG
- 11507 [component: build] Migrate to repo to "src" layout
- 11637 [component: docs] Document requirement of PEP 604 (py 3.10) type annotation syntax
- 11640 [component: docs] Document Tool.icon in user guide
- 11642 Rename FuncTickFormatter
- 11723 [component: docs] Docs still reference FuncTickFormatter
- 11752 [component: tests] [BUG] Windows integration tests failing in BokehJS-CI
- 11789 [component: docs] Pin Sphinx < 4.3
- 11792 [component: docs] Unpin Sphinx and update min version
- 11845 [BUG] color.darken() triggers BokehDeprecationWarning as it uses HSL related methods internally
- 11850 [component: docs] Documentation nitpick re: EditTools
- 11883 [component: tests] BokehJS-CI test failure in windows-latest
- 11968 [component: docs] Update docs for AjaxDataSource
- 11996 [FEATURE] Allow passing things other than models into args argument on CustomJSHover
- 12018 [component: server] support the proactor eventloop on windows with tornado >=6.1
- 12024 [component: docs] [BUG] Clarify docs about necessity of Firefox
- 12049 Typo in ValueError in L170 of serialization.py repo
- 12087 [BUG] Abspath does not expand users home directory
- 12152 [component: docs] Add Apache load balancer configuration to documentation
- 12153 [component: bokehjs] Upgrade to TypeScript 4.7
- 12168 [component: docs] Update docs for new Tooltip functionalities
- 12178 Add Python compat deprecation for `FuncTickFormatter`
- 12180 [component: docs] Demonstrate better practice in JS callback docs
- 12203 [component: docs] Misc 3.0 docs issues
- 12216 New PIL version broke tests
- 12237 [component: docs] [BUG] output_file() documentation is not consistent
- 12261 Add pandas as hard dependency
- 12264 [component: docs] [FEATURE] Adding existing bokeh language bindings to the documentation
- 12291 [BUG] DepricationWarning for latest Selenium 4.3.0 and webdriver.Firefox
- 12332 Proposed changes for envs / scripts
- 12340 [component: docs] Update docs for new src layout
- 12402 [component: docs] Double tooltip on hovering over user guide periodic table example
- 12415 [component: docs] [BUG] navigation section on gallery page is placed incorrect
- 12511 [component: docs] [FEATURE] Outdated renderers helpstring
- 11620 Execute 3.0 deprecations
- 11621 Drop `render_mode` and split off HTML annotations
- 11622 [component: tests] Don't report successful flaky tests
- 11624 [component: bokehjs] Drop `deprecated` functionality of bokehjs
- 11636 [component: bokehjs] Correct MathText color, size and vertical alignment
- 11659 [component: bokehjs] Fix and improve output from Printer.string()
- 11660 [component: docs] Update docs for math text styling
- 11665 Drop support for subtype from the protocol
- 11669 Create SECURITY.md
- 11671 [component: tests] Reorganize bokehjs' test assets and add "sprint" example
- 11677 [component: bokehjs] Redesign text rendering in `Text` glyph
- 11691 build BokehJS by default
- 11692 [component: bokehjs] replace deprecated CLIEngine eslint class and add cache for faster linting
- 11699 [component: bokehjs] Split up `api/plotting.ts` into `figure.ts` and `io.ts`
- 11700 [component: tests] Add more bokehjs' examples under visual tests
- 11706 [component: tests] Add streaming circle test for issue 5046
- 11708 [component: tests] Implement MathText on TextAnnotations and organize MathText tests
- 11709 [component: docs] Update contributor docs (part 2)
- 11733 Add more modules to mypy
- 11748 [component: build] Removed a manual file handler pitfall
- 11763 [component: bokehjs] Remove invalid `null` and other conditionals
- 11771 Include version pattern in workflow input description
- 11773 Remove `CDSView.source` and infer the source from `CDSView`'s parent
- 11774 [component: examples] 11765 basic plot example metadata
- 11775 [component: docs] Add metadata to examples/models/file/daylight.py (11765)
- 11777 [component: bokehjs] Add support for unset properties to bokehjs
- 11778 Docker dev image (11352)
- 11780 [component: tests] Update root `View`'s `ready` promise along its descendants
- 11787 Bryanv/forward ports to 3.0
- 11799 [component: build] add Python 3.10 to CI
- 11809 [component: docs] metadata for examples/models/file/calendars.py added
- 11812 [component: build] Remove automatic addition of `init_ModelName()`
- 11813 [component: bokehjs] Clarify handling and internal types of partial messages
- 11815 Add support for math text to slider widgets
- 11816 [component: build] Reorganize bokehjs' dependencies using npm workspaces
- 11831 2.4.2 forward ports
- 11835 [component: build] Update baselines on MacOS
- 11837 [component: tests] Update baselines on Windows
- 11858 [component: examples] More LaTeX examples
- 11859 [component: docs] Update docs for Slider, RangeSlider
- 11861 update sliders baselines
- 11869 [component: examples] Add final 2 LaTeX examples: Bessel functions and LaTeX labels
- 11872 [component: examples] Added docstrings on app\examples
- 11874 [component: build] Update bokeh-release-build.yml
- 11876 [component: examples] Added metadata to some examples and fixed one 11765
- 11878 [component: examples] Port schrodinger example to bokehjs
- 11902 [component: examples] Added metadata for examples/plotting/file/color_data_map.py and examples/plotting/file/grid.py
- 11905 [component: examples] Add metadata to widgets.py
- 11907 Fix type issues after upgrading to mypy 0.920
- 11915 Redesign the layout using CSS and canvas layouts
- 11919 [component: build] Require nodejs 16.* LTS for dev and testing
- 11920 [component: build] Fail bokehjs' CI jobs if repository gets dirty
- 11921 [component: tests] Test bokehjs' palettes and reduce their size
- 11927 [component: bokehjs] Improve life cycle of `DataRange1d.plots`
- 11931 [component: build] Drop official support for Python 3.7
- 11939 Make `_may_have_unstable_defaults()` more robust
- 11941 Replace `typing_extensions` with `typing` wherever possible
- 11943 [component: tests] Don't rely on clicking a toolbar button for testing
- 11949 [component: bokehjs] Replace manual text handling in `Legend` with `TextBox`
- 11953 [component: tests] Update tests for Firefox 96
- 11970 Deprecate CDSView.source more gracefully
- 11982 [component: build] Upgrade bokehjs' npm packages
- 12009 [component: docs] Add metadata to tile_source.py and fix various typos
- 12011 [component: tests] Silence deprecation and other warnings in integration tests
- 12027 [component: build] Upgrade TypeScript to version 4.6
- 12028 [component: tests] Set up `asyncio_mode` to silence deprecation warnings
- 12039 [component: server] Remove `use_buffers` from `PatchDoc` message
- 12042 RenderRoot dataclass
- 12044 [component: docs] 11765 add metadata to examples
- 12056 [component: build] Upgrade bokehjs' dependencies
- 12060 [component: docs] Update docs for HexTile
- 12063 [component: docs] Clean up sample data attribution
- 12064 [component: bokehjs] WebGL support for Block glyph
- 12076 [component: bokehjs] Initialize properties in definition order
- 12100 Fix Comparing singleton primitives with equality checking
- 12102 Minor cleanup issues
- 12116
Update amqp from 2.5.2 to 5.1.1.
Changelog
### 5.1.1 ``` ===== :release-date: 2022-03-06 12:45 P.M. UTC+6:00 :release-by: Asif Saif Uddin - Use AF_UNSPEC for name resolution (389). .. _version-5.1.0: ``` ### 5.1.0 ``` ===== :release-date: 2022-03-06 10:05 A.M. UTC+6:00 :release-by: Asif Saif Uddin - Improve performance of _get_free_channel_id, fix channel max bug (385). - Document memoryview usage, minor frame_writer.write_frame refactor (384). - Start dropping python 3.6 (387). - Added experimental __slots__ to some classes (368) - Relaxed vine version for upcoming release. - Upgraded topytest 7 (388). .. _version-5.0.9: ``` ### 5.0.9 ``` ===== :release-date: 2021-12-20 11:00 A.M. UTC+6:00 :release-by: Asif Saif Uddin - Append to _used_channel_ids in _used_channel_ids .. _version-5.0.8: ``` ### 5.0.8 ``` ===== :release-date: 2021-12-19 11:15 A.M. UTC+6:00 :release-by: Asif Saif Uddin - Reduce memory usage of Connection (377) - Add additional error handling around code where an OSError may be raised on failed connections. Fixes (378) .. _version-5.0.7: ``` ### 5.0.7 ``` ===== :release-date: 2021-12-13 15:45 P.M. UTC+6:00 :release-by: Asif Saif Uddin - Remove dependency to case - Bugfix: not closing socket after server disconnect .. _version-5.0.6: ``` ### 5.0.6 ``` ===== :release-date: 2021-04-01 10:45 A.M. UTC+6:00 :release-by: Asif Saif Uddin - Change the order in which context.check_hostname and context.verify_mode get set in SSLTransport._wrap_socket_sni. Fixes bug introduced in 5.0.3 where setting context.verify_mode = ssl.CERT_NONE would raise "ValueError: Cannot set verify_mode to CERT_NONE when check_hostname is enabled." Setting context.check_hostname prior to setting context.verify_mode resolves the issue. - Remove TCP_USER_TIMEOUT option for Solaris (355) - Pass long_description to setup() (353) - Fix for tox-docker 2.0 - Moved to GitHub actions CI (359) .. _version-5.0.5: ``` ### 5.0.5 ``` ===== :release-date: 2021-01-28 4:30 P.M UTC+6:00 :release-by: Asif Saif Uddin - Removed mistakenly introduced code which was causing import errors .. _version-5.0.4: ``` ### 5.0.4 ``` ===== :release-date: 2021-01-28 2:30 P.M UTC+6:00 :release-by: Asif Saif Uddin - Add missing load_default_certs() call to fix a regression in v5.0.3 release. (350) .. _version-5.0.3: ``` ### 5.0.3 ``` ===== :release-date: 2021-01-19 9:00 P.M UTC+6:00 :release-by: Asif Saif Uddin - Change the default value of ssl_version to None. When not set, the proper value between ssl.PROTOCOL_TLS_CLIENT and ssl.PROTOCOL_TLS_SERVER will be selected based on the param server_side in order to create a TLS Context object with better defaults that fit the desired connection side. - Change the default value of cert_reqs to None. The default value of ctx.verify_mode is ssl.CERT_NONE, but when ssl.PROTOCOL_TLS_CLIENT is used, ctx.verify_mode defaults to ssl.CERT_REQUIRED. - Fix context.check_hostname logic. Checking the hostname depends on having support of the SNI TLS extension and being provided with a server_hostname value. Another important thing to mention is that enabling hostname checking automatically sets verify_mode from ssl.CERT_NONE to ssl.CERT_REQUIRED in the stdlib ssl and it cannot be set back to ssl.CERT_NONE as long as hostname checking is enabled. - Refactor the SNI tests to test one thing at a time and removing some tests that were being repeated over and over. .. _version-5.0.2: ``` ### 5.0.2 ``` ===== :release-date: 2020-11-08 6:50 P.M UTC+3:00 :release-by: Omer Katz - Whhels are no longer universal. Contributed by **Omer Katz** - Added debug representation to Connection and *Transport classes Contributed by **Matus Valo** - Reintroduce ca_certs and ciphers parameters of SSLTransport._wrap_socket_sni() This fixes issue introduced in commit: 53d6777 Contributed by **Matus Valo** - Fix infinite wait when using confirm_publish Contributed by **Omer Katz** & **RezaSi** .. _version-5.0.1: ``` ### 5.0.1 ``` ===== :release-date: 2020-09-06 6:10 P.M UTC+3:00 :release-by: Omer Katz - Require vine 5.0.0. Contributed by **Omer Katz** .. _version-5.0.0: ``` ### 5.0.0 ``` ===== :release-date: 2020-09-03 3:20 P.M UTC+3:00 :release-by: Omer Katz - Stop to use deprecated method ssl.wrap_socket. Contributed by **Hervé Beraud** .. _version-5.0.0b1: ``` ### 5.0.0b1 ``` ======= :release-date: 2020-09-01 6:20 P.M UTC+3:00 :release-by: Omer Katz - Dropped Python 3.5 support. Contributed by **Omer Katz** - Removed additional compatibility code. Contributed by **Omer Katz** .. _version-5.0.0a1: ``` ### 5.0.0a1 ``` ======= :release-date: 2019-04-01 4:30 P.M UTC+3:00 :release-by: Omer Katz - Dropped Python 2.x support. Contributed by **Omer Katz** - Dropped Python 3.4 support. Contributed by **Omer Katz** - Depend on :pypi:`vine` 5.0.0a1. Contributed by **Omer Katz** Code Cleanups & Improvements: - **Omer Katz** .. _version-2.6.0: ``` ### 2.6.1 ``` ===== :release-date: 2020-07-31 10.30 P.M UTC+6:00 :release-by: Asif Saif Uddin - Fix buffer overflow in frame_writer after frame_max is increased. `frame_writer` allocates a `bytearray` on initialization with a length based on the `connection.frame_max` value. If `connection.frame_max` is changed to a larger value, this causes an error like `pack_into requires a buffer of at least 408736 bytes`. .. _version-2.6.0: ``` ### 2.6.0 ``` ===== :release-date: 20-06-01 12.00 P.M UTC+6:00 :release-by: Asif Saif Uddin - Implement speedups in cython (311) - Updated some tests & code improvements - Separate logger for Connection.heartbeat_tick method - Cython generic content (315) - Improve documentation a_global parameter of basic_qos() method. - Fix saving partial read buffer on windows during socket timeout. (321) - Fix deserialization of long string field values that are not utf-8. - Added simple cythonization of abstract_channel.py - Speedups of serialization.py are more restrictive .. _version-2.5.2: ```Links
- PyPI: https://pypi.org/project/amqp - Changelog: https://pyup.io/changelogs/amqp/ - Repo: http://github.com/celery/py-amqpUpdate atomicwrites from 1.3.0 to 1.4.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/atomicwrites - Repo: https://github.com/untitaker/python-atomicwritesUpdate attrs from 19.3.0 to 22.1.0.
Changelog
### 22.1.0 ``` ------------------- Backwards-incompatible Changes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Python 2.7 is not supported anymore. Dealing with Python 2.7 tooling has become too difficult for a volunteer-run project. We have supported Python 2 more than 2 years after it was officially discontinued and feel that we have paid our dues. All version up to 21.4.0 from December 2021 remain fully functional, of course. `936 <https://github.com/python-attrs/attrs/issues/936>`_ - The deprecated ``cmp`` attribute of ``attrs.Attribute`` has been removed. This does not affect the *cmp* argument to ``attr.s`` that can be used as a shortcut to set *eq* and *order* at the same time. `939 <https://github.com/python-attrs/attrs/issues/939>`_ Changes ^^^^^^^ - Instantiation of frozen slotted classes is now faster. `898 <https://github.com/python-attrs/attrs/issues/898>`_ - If an ``eq`` key is defined, it is also used before hashing the attribute. `909 <https://github.com/python-attrs/attrs/issues/909>`_ - Added ``attrs.validators.min_len()``. `916 <https://github.com/python-attrs/attrs/issues/916>`_ - ``attrs.validators.deep_iterable()``'s *member_validator* argument now also accepts a list of validators and wraps them in an ``attrs.validators.and_()``. `925 <https://github.com/python-attrs/attrs/issues/925>`_ - Added missing type stub re-imports for ``attrs.converters`` and ``attrs.filters``. `931 <https://github.com/python-attrs/attrs/issues/931>`_ - Added missing stub for ``attr(s).cmp_using()``. `949 <https://github.com/python-attrs/attrs/issues/949>`_ - ``attrs.validators._in()``'s ``ValueError`` is not missing the attribute, expected options, and the value it got anymore. `951 <https://github.com/python-attrs/attrs/issues/951>`_ - Python 3.11 is now officially supported. `969 <https://github.com/python-attrs/attrs/issues/969>`_ ---- ``` ### 21.4.0 ``` ------------------- Changes ^^^^^^^ - Fixed the test suite on PyPy3.8 where ``cloudpickle`` does not work. `892 <https://github.com/python-attrs/attrs/issues/892>`_ - Fixed ``coverage report`` for projects that use ``attrs`` and don't set a ``--source``. `895 <https://github.com/python-attrs/attrs/issues/895>`_, `896 <https://github.com/python-attrs/attrs/issues/896>`_ ---- ``` ### 21.3.0 ``` ------------------- Backward-incompatible Changes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - When using ``define``, converters are now run by default when setting an attribute on an instance -- additionally to validators. I.e. the new default is ``on_setattr=[attrs.setters.convert, attrs.setters.validate]``. This is unfortunately a breaking change, but it was an oversight, impossible to raise a ``DeprecationWarning`` about, and it's better to fix it now while the APIs are very fresh with few users. `835 <https://github.com/python-attrs/attrs/issues/835>`_, `886 <https://github.com/python-attrs/attrs/issues/886>`_ - ``import attrs`` has finally landed! As of this release, you can finally import ``attrs`` using its proper name. Not all names from the ``attr`` namespace have been transferred; most notably ``attr.s`` and ``attr.ib`` are missing. See ``attrs.define`` and ``attrs.field`` if you haven't seen our next-generation APIs yet. A more elaborate explanation can be found `On The Core API Names <https://www.attrs.org/en/latest/names.html>`_ This feature is at least for one release **provisional**. We don't *plan* on changing anything, but such a big change is unlikely to go perfectly on the first strike. The API docs have been mostly updated, but it will be an ongoing effort to change everything to the new APIs. Please note that we have **not** moved -- or even removed -- anything from ``attr``! Please do report any bugs or documentation inconsistencies! `887 <https://github.com/python-attrs/attrs/issues/887>`_ Changes ^^^^^^^ - ``attr.asdict(retain_collection_types=False)`` (default) dumps collection-esque keys as tuples. `646 <https://github.com/python-attrs/attrs/issues/646>`_, `888 <https://github.com/python-attrs/attrs/issues/888>`_ - ``__match_args__`` are now generated to support Python 3.10's `Structural Pattern Matching <https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching>`_. This can be controlled by the ``match_args`` argument to the class decorators on Python 3.10 and later. On older versions, it is never added and the argument is ignored. `815 <https://github.com/python-attrs/attrs/issues/815>`_ - If the class-level *on_setattr* is set to ``attrs.setters.validate`` (default in ``define`` and ``mutable``) but no field defines a validator, pretend that it's not set. `817 <https://github.com/python-attrs/attrs/issues/817>`_ - The generated ``__repr__`` is significantly faster on Pythons with f-strings. `819 <https://github.com/python-attrs/attrs/issues/819>`_ - Attributes transformed via ``field_transformer`` are wrapped with ``AttrsClass`` again. `824 <https://github.com/python-attrs/attrs/issues/824>`_ - Generated source code is now cached more efficiently for identical classes. `828 <https://github.com/python-attrs/attrs/issues/828>`_ - Added ``attrs.converters.to_bool()``. `830 <https://github.com/python-attrs/attrs/issues/830>`_ - ``attrs.resolve_types()`` now resolves types of subclasses after the parents are resolved. `842 <https://github.com/python-attrs/attrs/issues/842>`_ `843 <https://github.com/python-attrs/attrs/issues/843>`_ - Added new validators: ``lt(val)`` (< val), ``le(va)`` (≤ val), ``ge(val)`` (≥ val), ``gt(val)`` (> val), and ``maxlen(n)``. `845 <https://github.com/python-attrs/attrs/issues/845>`_ - ``attrs`` classes are now fully compatible with `cloudpickle <https://github.com/cloudpipe/cloudpickle>`_ (no need to disable ``repr`` anymore). `857 <https://github.com/python-attrs/attrs/issues/857>`_ - Added new context manager ``attrs.validators.disabled()`` and functions ``attrs.validators.(set|get)_disabled()``. They deprecate ``attrs.(set|get)_run_validators()``. All functions are interoperable and modify the same internal state. They are not – and never were – thread-safe, though. `859 <https://github.com/python-attrs/attrs/issues/859>`_ - ``attrs.validators.matches_re()`` now accepts pre-compiled regular expressions in addition to pattern strings. `877 <https://github.com/python-attrs/attrs/issues/877>`_ ---- ``` ### 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 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/main/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 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>`_. `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
- PyPI: https://pypi.org/project/attrs - Changelog: https://pyup.io/changelogs/attrs/ - Homepage: https://www.attrs.org/Update beautifulsoup4 from 4.8.1 to 4.11.1.
Changelog
### 4.11.0 ``` * Ported unit tests to use pytest. * Added special string classes, RubyParenthesisString and RubyTextString, to make it possible to treat ruby text specially in get_text() calls. [bug=1941980] * It's now possible to customize the way output is indented by providing a value for the 'indent' argument to the Formatter constructor. The 'indent' argument works very similarly to the argument of the same name in the Python standard library's json.dump() function. [bug=1955497] * If the charset-normalizer Python module (https://pypi.org/project/charset-normalizer/) is installed, Beautiful Soup will use it to detect the character sets of incoming documents. This is also the module used by newer versions of the Requests library. For the sake of backwards compatibility, chardet and cchardet both take precedence if installed. [bug=1955346] * Added a workaround for an lxml bug (https://bugs.launchpad.net/lxml/+bug/1948551) that causes problems when parsing a Unicode string beginning with BYTE ORDER MARK. [bug=1947768] * Issue a warning when an HTML parser is used to parse a document that looks like XML but not XHTML. [bug=1939121] * Do a better job of keeping track of namespaces as an XML document is parsed, so that CSS selectors that use namespaces will do the right thing more often. [bug=1946243] * Some time ago, the misleadingly named "text" argument to find-type methods was renamed to the more accurate "string." But this supposed "renaming" didn't make it into important places like the method signatures or the docstrings. That's corrected in this version. "text" still works, but will give a DeprecationWarning. [bug=1947038] * Fixed a crash when pickling a BeautifulSoup object that has no tree builder. [bug=1934003] * Fixed a crash when overriding multi_valued_attributes and using the html5lib parser. [bug=1948488] * Standardized the wording of the MarkupResemblesLocatorWarning warnings to omit untrusted input and make the warnings less judgmental about what you ought to be doing. [bug=1955450] * Removed support for the iconv_codec library, which doesn't seem to exist anymore and was never put up on PyPI. (The closest replacement on PyPI, iconv_codecs, is GPL-licensed, so we can't use it--it's also quite old.) ``` ### 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] ``` ### 4.9.1 ``` * Added a keyword argument 'on_duplicate_attribute' to the BeautifulSoupHTMLParser constructor (used by the html.parser tree builder) which lets you customize the handling of markup that contains the same attribute more than once, as in: <a href="url1" href="url2"> [bug=1878209] * Added a distinct subclass, GuessedAtParserWarning, for the warning issued when BeautifulSoup is instantiated without a parser being specified. [bug=1873787] * Added a distinct subclass, MarkupResemblesLocatorWarning, for the warning issued when BeautifulSoup is instantiated with 'markup' that actually seems to be a URL or the path to a file on disk. [bug=1873787] * The new NavigableString subclasses (Stylesheet, Script, and TemplateString) can now be imported directly from the bs4 package. * If you encode a document with a Python-specific encoding like 'unicode_escape', that encoding is no longer mentioned in the final XML or HTML document. Instead, encoding information is omitted or left blank. [bug=1874955] * Fixed test failures when run against soupselect 2.0. Patch by Tomáš Chvátal. [bug=1872279] ``` ### 4.9.0 ``` * Added PageElement.decomposed, a new property which lets you check whether you've already called decompose() on a Tag or NavigableString. * Embedded CSS and Javascript is now stored in distinct Stylesheet and Script tags, which are ignored by methods like get_text() since most people don't consider this sort of content to be 'text'. This feature is not supported by the html5lib treebuilder. [bug=1868861] * Added a Russian translation by 'authoress' to the repository. * Fixed an unhandled exception when formatting a Tag that had been decomposed.[bug=1857767] * Fixed a bug that happened when passing a Unicode filename containing non-ASCII characters as markup into Beautiful Soup, on a system that allows Unicode filenames. [bug=1866717] * Added a performance optimization to PageElement.extract(). Patch by Arthur Darcet. ``` ### 4.8.2 ``` * Added Python docstrings to all public methods of the most commonly used classes. * Added a Chinese translation by Deron Wang and a Brazilian Portuguese translation by Cezar Peixeiro to the repository. * Fixed two deprecation warnings. Patches by Colin Watson and Nicholas Neumann. [bug=1847592] [bug=1855301] * The html.parser tree builder now correctly handles DOCTYPEs that are not uppercase. [bug=1848401] * PageElement.select() now returns a ResultSet rather than a regular list, making it consistent with methods like find_all(). ```Links
- PyPI: https://pypi.org/project/beautifulsoup4 - Changelog: https://pyup.io/changelogs/beautifulsoup4/ - Homepage: https://www.crummy.com/software/BeautifulSoup/bs4/Update billiard from 3.6.1.0 to 4.0.2.
Changelog
### 4.0.2 ``` -------------------- - ExceptionWithTraceback should be an exception. ``` ### 4.0.1 ``` -------------------- - Add support for Python 3.11 _posixsubprocess.fork_exec() arguments. - Keep exception traceback somehow (368). ``` ### 4.0.0 ``` -------------------- - Support Sphinx 4.x. - Remove dependency to case. - Drop support of Python < 3.7. - Update to psutil 5.9.0. - Add python_requires to enforce Python version. - Replace deprecated threading Event.isSet with Event.is_set. - Prevent segmentation fault in get_pdeathsig while using ctypes (361). - Migrated CI to Github actions. - Python 3.10 support added. ``` ### 3.6.4.0 ``` -------------------- - Issue 309: Add Python 3.9 support to spawnv_passfds() - fix 314 ```Links
- PyPI: https://pypi.org/project/billiard - Changelog: https://pyup.io/changelogs/billiard/ - Repo: https://github.com/celery/billiardUpdate blinker from 1.4 to 1.5.
Changelog
### 1.5 ``` ----------- Released 2022-07-17 - Support Python >= 3.7 and PyPy. Python 2, Python < 3.7, and Jython may continue to work, but the next release will make incompatible changes. ```Links
- PyPI: https://pypi.org/project/blinker - Changelog: https://pyup.io/changelogs/blinker/ - Docs: https://blinker.readthedocs.ioUpdate bokeh from 1.4.0 to 3.0.1.
Changelog
### 3.0 ``` -------------------- * bugfixes: - 5046 Webgl problem in stream app with multiple glyphs - 6669 [component: bokehjs] BoxAnnotation does not appear to handle formal NumberSpec - 8168 [component: bokehjs] Strange behavior with BoxSelectTool when click+dragging on toolbar - 8332 [component: bokehjs] Autohide toolbar quirks - 8346 [component: bokehjs] update datasource cause error with webgl backend - 8469 Modifying a child element in a tab causes the whole tab to rerender - 8531 [component: bokehjs] Save tool in gridplot initiates multiple downloads - 8684 Allow at least partial alignment of fixed sized frames - 9113 [component: bokehjs] Empty group widgets don't size properly once populated - 9133 [BUG] Tabs ignore explicitly set dimensions - 9208 [component: bokehjs] [BUG] sizing_mode='stretch_width' makes plot too wide if scrollbar is showing - 9320 [BUG] Bokeh rendering performance - 9448 [component: bokehjs] [BUG] Google Fonts not loading on Glyph on standalone HTML until interacting with Glyph - 9744 [component: bokehjs] [BUG] bokeh server layout overlap on toggle visibility - 9763 [BUG] `gridplot` `merge_tools` removes distinct tools it thinks are repeated, e.g., `xpan` and `ypan` - 9764 [component: bokehjs] [BUG] MultiChoice placeholder text not displayed - 9992 [component: bokehjs] [BUG] Select widget hiding tabs, when selecting a plot - 10125 [component: bokehjs] [BUG] widgets overlap each other - 10183 [component: server] [BUG] Processing of HTTP request arguments (server_document) and num-procs > 1 - 10355 [component: bokehjs] [BUG] Toolbar cropped when using tabbed auto-width - 10377 [component: docs] Documentation examples produce inconsistently named output files - 10621 [component: bokehjs] [BUG] [MINOR] 2.3.0dev3, plot's inner_width property always sent on redraw even if unchanged - 10804 [BUG] export does not respect current theme - 11033 [component: bokehjs] [BUG] add_layout(LinearAxis) in click handler crashes client - 11116 [component: bokehjs] [BUG] ColorBars do not update when their properties are updated - 11205 [component: bokehjs] [BUG] Hover tooltip breaks with full-circle wedge - 11339 [BUG] Toggling layout's visibility results with overlapping widgets - 11462 [component: bokehjs] [BUG] Existing ColorBar tick-digits don't react to theme changes - 11475 [component: bokehjs] [BUG] SVG export breaks for Wedges - 11623 [BUG] Placement of toolbar location is broken for gridplots - 11643 Refs are not resolved in data models' default values - 11673 [component: bokehjs] [BUG] JavaScript error when setting LabelSet text to None - 11694 Custom extension breaks with id as key in a dict param - 11750 [component: bokehjs] [BUG] Hover tool takes long time to render (-> 11629) - 11770 [component: bokehjs] [BUG] Linking an axis range can lead to other axis range autoscaling improperly - 11776 [component: bokehjs] Dynamically changing the color palette of a color mapper - 11803 [component: bokehjs] [BUG] Message containing ModelChangeEvents for all properties sent back to server on initialization - 11822 [component: tests] Tests using headless chrome are completely broken - 11838 [component: bokehjs] [BUG] incorrect scalling for the zoom-out tool - 11839 [BUG] PanTool can't be deactivated in grid plot - 11877 [component: bokehjs] ImageURL blinks when the datasource updated - 11930 [BUG] major_label_overrides are not applied if the overrides are float but the original labels are int - 11946 [component: bokehjs] Re-rendering a layout causes menus to be removed from DOM - 11963 [BUG] Option groups of the Select widget are sorted - 11981 [component: build] BokehJS build failing in release CI - 11985 [component: docs] Docs Search results are messed up - 11999 [component: bokehjs] Rendering happens on every mouse move with inspections enabled - 12001 [component: bokehjs] [BUG] Failure of push_notebook() to update colormapper of a colorbar - 12033 [component: bokehjs] [BUG] Incorrect handling of step by DateRangeSlider - 12047 [BUG] Jumpy scroll on mobile - 12080 [BUG] examples/plotting/file/image.py no longer works - 12101 [component: docs] Misplaces BokehJS Sphinx embeds - 12115 [component: bokehjs] [FEATURE] Expose itemSelectText option on the MultiChoice widget - 12123 [BUG] Allow to extend vertically a TextAreaInput - 12127 [component: bokehjs] [BUG] LabelSet doesn't check type for text - 12133 [component: docs] Docs are missing GA code - 12142 [component: bokehjs] [BUG] Mathjax 3.2.1 breaks Bokeh - 12145 [component: examples] [BUG] Examples/Apps/Stocks has broken URL - 12150 [component: docs] Links for download badges in readme don't go anywhere - 12155 [component: bokehjs] [BUG] Inlined RadioGroup widget doesn't extend enough horizontally - 12162 [component: bokehjs] [BUG] step(mode="center", ...) renders incorrectly on canvas if coordinates contain NaN - 12176 [component: examples] [BUG] examples/app/gaminder: year 2013 (the latest year in the data set) is not presented in the Gapminder visualization - 12204 [component: bokehjs] [BUG] Setting datatable selectable to False leads to an error when trying to sort - 12205 [component: bokehjs] [BUG] Div with stretch_width doesn't stretch - 12207 [component: bokehjs] [BUG] image_rgba selection - 12232 [BUG] Bokeh 3.0.0 cannot serialize Pandas Dataframe - 12238 Many hidden type errors due to wrong mypy config - 12250 [BUG] ContourColorBar does not support theme - 12280 [component: bokehjs] [BUG] Combine alpha values by multiplying together - 12313 [BUG] range no longer works with ColumnDataSource - 12357 [component: bokehjs] [BUG] webgl breaks shared brushing - 12361 [component: bokehjs] [BUG] Canvas backend doesn't always render marker vector line_width correctly - 12378 [component: docs] [BUG] Links in "First steps" documentation all broken - 12386 [component: docs] python/js reported version mismatch - 12404 [component: examples] Jitter example is broken - 12405 [component: bokehjs] gridplot examples layouts are broken - 12412 [component: bokehjs] [BUG] Canvas step glyph sometimes renders with incorrect alpha - 12416 [component: docs] Custom extension examples not rendering - 12418 [component: bokehjs] Lasso overlay is broken - 12447 [component: bokehjs] Toolbar interferes with tooltip - 12448 [component: bokehjs] `GridPlot` needs better defaults for rows/cols sizing - 12453 [component: bokehjs] Sizing mode example is broken - 12456 [component: bokehjs] DOM drag/selection issue - 12462 [component: docs] [BUG] Sphinx warnings while building documentation - 12465 [component: bokehjs] [BUG] DataTable cell content gets overprinted if DataTable is used within a TabPanel - 12479 [component: bokehjs] [BUG] Figure p in column(gridplot([[p]])) not rendered when adding another figure like this: column(p, gridplot([[p]])) - 12494 [component: examples] Ion slider extension example broken - 12506 ContourRenderer disregards line_color=None - 11717 [component: bokehjs] Fix bokehjs normally distributed random numbers - 11821 Update branches in CI workflow configurations - 11928 [component: bokehjs] Fix gmaps' support and remove special handling - 11932 [component: build] Update versions of all packages in `package-lock.json` - 11959 Discover unstable defaults in `HasProps.__init__()` - 11986 [component: build] Fix `package-lock.json` and `update_bokehjs_versions()` - 12057 [component: bokehjs] Robustify initialization of ndarrays - 12067 [component: bokehjs] Don't excessively check if fonts were loaded - 12174 [component: bokehjs] Fix canvas rendering of step glyph containing NaN - 12196 [component: bokehjs] Remove id attribute of bk-root after plotting - 12248 [component: bokehjs] Hide lower colors and labels when using EqHist rescale_discrete_levels - 12265 [component: docs] Pin sphinx to version >=5,<5.1 - 12285 Split up too long lines after flake8 upgrade - 12289 [component: docs] grammatically updated the tech docs - 12330 [component: tests] Improve compatibility with Python 3.10.6 in tests - 12344 [component: tests] Fix flake8 bokeh -> src/bokeh after PR 12338 - 12362 [component: bokehjs] Fix WebGL rendering of marker with size 0 - 12520 [component: docs] Restore strict docs build * features: - 1666 [component: bokehjs] Flip images when ranges are reversed - 1763 [component: bokehjs] Support anchor property for Image and ImageRGBA - 3799 Linked Crosshair - 3819 Toolbar Improvements: Make tools independent of bar - 4371 [component: bokehjs] Plot.y_range / Plot.x_range initial start/end values not set - 4403 Better defaults for resize event - 4568 [component: bokehjs] Allow active specification on gridplot toolbar - 4698 [component: bokehjs] Feature: Add "dbl-click to reset zoom" on BoxZoomTool - 4817 layout vertical alignment with buttons - 5135 [component: bokehjs] Pan and Zoom tools should be configurable (limit to x or y axis only) via UI - 5241 x_axis_type not in fuzzy matching for figure args - 6031 Latex axis and title labels - 6372 [component: docs] Add signatures to model objects - 8360 Add a Figure.contour method - 8364 Autohide toolbar should work with gridplot - 8727 [component: bokehjs] Tooltip on widgets - 8847 [component: bokehjs] RadioButtonGroup orientation vertical - 9086 [component: server] [FEATURE] add favicon support to Bokeh server - 9498 [FEATURE] Bokeh Sizing mode that inherits from parent - 9518 [component: bokehjs] Allow binary data, streaming and patching outside data sources - 9552 [component: bokehjs] [FEATURE] Placeholder text for FileInput - 9920 [component: bokehjs] Set themes using bokehjs - 9935 [component: bokehjs] Add context formatter option to DatetimeTickFormatter - 10533 [component: bokehjs] [FEATURE] Add x-box-select & y-box-select specific icons. - 10914 [component: bokehjs] [FEATURE] Add custom_tooltip and custom_icon to all tools (not implemented in SelectTools) - 10990 Add style attribute to all widgets - 11500 [FEATURE] Support xyzservices in basemap tiles - 11596 Allow data models to inherit from non data models - 11638 [component: bokehjs] [FEATURE] MultiChoice widget sorts options by default - 11704 [FEATURE] Include glyph sizing in plot range calculations - 11806 [component: bokehjs] [FEATURE] Add function to get adjacent nodes by selecting node. - 11881 [FEATURE] Expose a file name parameter in SaveTool - 11908 [FEATURE] remove_tools() function for plots - 12066 [component: docs] [FEATURE] Link documented sampledata to standalone example - 12089 [component: server] [FEATURE] Make bokeh server listen to unix socket - 12171 [component: bokehjs] [FEATURE] Batch rendering of many glyphs on the same plot - 12179 [FEATURE] Add support for text outlines with annotations - 12181 [component: bokehjs] [FEATURE] Allow `embed_item` to optionally take an element instead of an ID - 12272 [FEATURE] Allow AutocompleteInput min_characters=0 - 12273 [component: bokehjs] [FEATURE] Box_Zoom_Tool that allows zooming in only width, height, or both dimensions in one tool - 12438 [FEATURE] Add a parameter to limit the number of completion strings displayed by `AutocompleteInput` - 11122 Add support for basic glyph decorations - 11639 [component: bokehjs] Various bokehjs API improvements and new examples - 11697 [component: bokehjs] Expose plotting subcoordinates API in bokehjs - 11842 [component: bokehjs] Add block glyph - 11871 [component: bokehjs] Implement a bokehjs development/diagnostics tool - 11926 Allow to place toolbars inside the frame - 11933 Add support for a checkbox-like Switch widget - 12020 Add contouring - 12030 Add support for `np.array(..., dtype="bool")` - 12054 Generalize filtering on CDS views - 12213 [component: bokehjs] Add ColorBar.display_low and display_high - 12244 [component: bokehjs] Add support for cross bounds to grid lines - 12263 varying_alpha_palette helper function - 12268 [component: tests] Add support for async `expect().to.throw()` - 12270 [component: bokehjs] Allow to stop throttled functions - 12271 Add parameterized `NonNegative` and `Positive` properties - 12276 Introduce `canvas` coordinate units to remove `for_hover`, etc. - 12329 [component: server] Provide method to modify Server before start - 12467 [component: docs] Tabbed gallery - 12473 [component: docs] Add server examples to main gallery * tasks: - 4388 [component: tests] Missing layout tests - 5653 [component: tests] Add tests to ensure server events do not boomerang client-side - 6339 Use js Map instead of plain objects for properties like ColumnDataSource.data - 6574 [component: examples] Add more examples to bokehjs - 6591 [component: docs] Make it clear which annotations can and can not be preserved with save tool - 8188 [component: examples] Example app "dashboard" unsuccessful on wide screen - 8458 Simplify the JSON representation - 9731 Drop support for legacy web browsers - 9757 [component: bokehjs] Investigate using shadow DOM to gain proper isolation - 9907 Improve Auth Request Handler hierarchy - 10007 [BUG] Importing bokeh is VERY slow - 10090 Deprecate ragged array case in ImageBase.image - 10424 [component: bokehjs] [BUG] Toggle on_click is fired when "active" is changed from Python side - 10463 [component: docs] [BUG] bokeh authentication example checks only whether `user` cookie is set - 10746 Make figure a class? - 10840 [component: tests] Type errors in build should not stop tests from running - 11347 [component: bokehjs] Simplify DatatimeTickFormatter format properties - 11352 [component: docs] Docker container for dev environment - 11355 [component: docs] Add LaTeX rendering to elements - 11356 [component: docs] Examples demonstrating LaTeX capabilities - 11357 [component: docs] Update docs for LaTeX capabilities - 11358 [component: tests] Tests for LaTeX capabilities - 11359 PNG export for LaTeX - 11363 [component: docs] Export LaTeX to SVG - 11507 [component: build] Migrate to repo to "src" layout - 11637 [component: docs] Document requirement of PEP 604 (py 3.10) type annotation syntax - 11640 [component: docs] Document Tool.icon in user guide - 11642 Rename FuncTickFormatter - 11723 [component: docs] Docs still reference FuncTickFormatter - 11752 [component: tests] [BUG] Windows integration tests failing in BokehJS-CI - 11789 [component: docs] Pin Sphinx < 4.3 - 11792 [component: docs] Unpin Sphinx and update min version - 11845 [BUG] color.darken() triggers BokehDeprecationWarning as it uses HSL related methods internally - 11850 [component: docs] Documentation nitpick re: EditTools - 11883 [component: tests] BokehJS-CI test failure in windows-latest - 11968 [component: docs] Update docs for AjaxDataSource - 11996 [FEATURE] Allow passing things other than models into args argument on CustomJSHover - 12018 [component: server] support the proactor eventloop on windows with tornado >=6.1 - 12024 [component: docs] [BUG] Clarify docs about necessity of Firefox - 12049 Typo in ValueError in L170 of serialization.py repo - 12087 [BUG] Abspath does not expand users home directory - 12152 [component: docs] Add Apache load balancer configuration to documentation - 12153 [component: bokehjs] Upgrade to TypeScript 4.7 - 12168 [component: docs] Update docs for new Tooltip functionalities - 12178 Add Python compat deprecation for `FuncTickFormatter` - 12180 [component: docs] Demonstrate better practice in JS callback docs - 12203 [component: docs] Misc 3.0 docs issues - 12216 New PIL version broke tests - 12237 [component: docs] [BUG] output_file() documentation is not consistent - 12261 Add pandas as hard dependency - 12264 [component: docs] [FEATURE] Adding existing bokeh language bindings to the documentation - 12291 [BUG] DepricationWarning for latest Selenium 4.3.0 and webdriver.Firefox - 12332 Proposed changes for envs / scripts - 12340 [component: docs] Update docs for new src layout - 12402 [component: docs] Double tooltip on hovering over user guide periodic table example - 12415 [component: docs] [BUG] navigation section on gallery page is placed incorrect - 12511 [component: docs] [FEATURE] Outdated renderers helpstring - 11620 Execute 3.0 deprecations - 11621 Drop `render_mode` and split off HTML annotations - 11622 [component: tests] Don't report successful flaky tests - 11624 [component: bokehjs] Drop `deprecated` functionality of bokehjs - 11636 [component: bokehjs] Correct MathText color, size and vertical alignment - 11659 [component: bokehjs] Fix and improve output from Printer.string() - 11660 [component: docs] Update docs for math text styling - 11665 Drop support for subtype from the protocol - 11669 Create SECURITY.md - 11671 [component: tests] Reorganize bokehjs' test assets and add "sprint" example - 11677 [component: bokehjs] Redesign text rendering in `Text` glyph - 11691 build BokehJS by default - 11692 [component: bokehjs] replace deprecated CLIEngine eslint class and add cache for faster linting - 11699 [component: bokehjs] Split up `api/plotting.ts` into `figure.ts` and `io.ts` - 11700 [component: tests] Add more bokehjs' examples under visual tests - 11706 [component: tests] Add streaming circle test for issue 5046 - 11708 [component: tests] Implement MathText on TextAnnotations and organize MathText tests - 11709 [component: docs] Update contributor docs (part 2) - 11733 Add more modules to mypy - 11748 [component: build] Removed a manual file handler pitfall - 11763 [component: bokehjs] Remove invalid `null` and other conditionals - 11771 Include version pattern in workflow input description - 11773 Remove `CDSView.source` and infer the source from `CDSView`'s parent - 11774 [component: examples] 11765 basic plot example metadata - 11775 [component: docs] Add metadata to examples/models/file/daylight.py (11765) - 11777 [component: bokehjs] Add support for unset properties to bokehjs - 11778 Docker dev image (11352) - 11780 [component: tests] Update root `View`'s `ready` promise along its descendants - 11787 Bryanv/forward ports to 3.0 - 11799 [component: build] add Python 3.10 to CI - 11809 [component: docs] metadata for examples/models/file/calendars.py added - 11812 [component: build] Remove automatic addition of `init_ModelName()` - 11813 [component: bokehjs] Clarify handling and internal types of partial messages - 11815 Add support for math text to slider widgets - 11816 [component: build] Reorganize bokehjs' dependencies using npm workspaces - 11831 2.4.2 forward ports - 11835 [component: build] Update baselines on MacOS - 11837 [component: tests] Update baselines on Windows - 11858 [component: examples] More LaTeX examples - 11859 [component: docs] Update docs for Slider, RangeSlider - 11861 update sliders baselines - 11869 [component: examples] Add final 2 LaTeX examples: Bessel functions and LaTeX labels - 11872 [component: examples] Added docstrings on app\examples - 11874 [component: build] Update bokeh-release-build.yml - 11876 [component: examples] Added metadata to some examples and fixed one 11765 - 11878 [component: examples] Port schrodinger example to bokehjs - 11902 [component: examples] Added metadata for examples/plotting/file/color_data_map.py and examples/plotting/file/grid.py - 11905 [component: examples] Add metadata to widgets.py - 11907 Fix type issues after upgrading to mypy 0.920 - 11915 Redesign the layout using CSS and canvas layouts - 11919 [component: build] Require nodejs 16.* LTS for dev and testing - 11920 [component: build] Fail bokehjs' CI jobs if repository gets dirty - 11921 [component: tests] Test bokehjs' palettes and reduce their size - 11927 [component: bokehjs] Improve life cycle of `DataRange1d.plots` - 11931 [component: build] Drop official support for Python 3.7 - 11939 Make `_may_have_unstable_defaults()` more robust - 11941 Replace `typing_extensions` with `typing` wherever possible - 11943 [component: tests] Don't rely on clicking a toolbar button for testing - 11949 [component: bokehjs] Replace manual text handling in `Legend` with `TextBox` - 11953 [component: tests] Update tests for Firefox 96 - 11970 Deprecate CDSView.source more gracefully - 11982 [component: build] Upgrade bokehjs' npm packages - 12009 [component: docs] Add metadata to tile_source.py and fix various typos - 12011 [component: tests] Silence deprecation and other warnings in integration tests - 12027 [component: build] Upgrade TypeScript to version 4.6 - 12028 [component: tests] Set up `asyncio_mode` to silence deprecation warnings - 12039 [component: server] Remove `use_buffers` from `PatchDoc` message - 12042 RenderRoot dataclass - 12044 [component: docs] 11765 add metadata to examples - 12056 [component: build] Upgrade bokehjs' dependencies - 12060 [component: docs] Update docs for HexTile - 12063 [component: docs] Clean up sample data attribution - 12064 [component: bokehjs] WebGL support for Block glyph - 12076 [component: bokehjs] Initialize properties in definition order - 12100 Fix Comparing singleton primitives with equality checking - 12102 Minor cleanup issues - 12116